blob: 2b2200fbfbcbd78ba20a1f99d9368c353cfe91f4 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package undo
import (
"flag"
"seata.apache.org/seata-go/pkg/compressor"
)
var (
UndoConfig Config
)
func InitUndoConfig(cfg Config) {
UndoConfig = cfg
}
type CompressConfig struct {
Enable bool `yaml:"enable" json:"enable,omitempty" koanf:"enable"`
Type string `yaml:"type" json:"type,omitempty" koanf:"type"`
Threshold string `yaml:"threshold" json:"threshold,omitempty" koanf:"threshold"`
}
type Config struct {
DataValidation bool `yaml:"data-validation" json:"data-validation,omitempty" koanf:"data-validation"`
LogSerialization string `yaml:"log-serialization" json:"log-serialization,omitempty" koanf:"log-serialization"`
LogTable string `yaml:"log-table" json:"log-table,omitempty" koanf:"log-table"`
OnlyCareUpdateColumns bool `yaml:"only-care-update-columns" json:"only-care-update-columns,omitempty" koanf:"only-care-update-columns"`
CompressConfig CompressConfig `yaml:"compress" json:"compress,omitempty" koanf:"compress"`
}
func (u *Config) RegisterFlagsWithPrefix(prefix string, f *flag.FlagSet) {
f.BoolVar(&u.DataValidation, prefix+".data-validation", true, "Judge whether the before image and after image are the same,If it is the same, undo will not be recorded")
f.StringVar(&u.LogSerialization, prefix+".log-serialization", "json", "Serialization method.")
f.StringVar(&u.LogTable, prefix+".log-table", "undo_log", "undo log table name.")
f.BoolVar(&u.OnlyCareUpdateColumns, prefix+".only-care-update-columns", true, "The switch for degrade check.")
u.CompressConfig.RegisterFlagsWithPrefix(prefix+".compress", f)
}
func (c *CompressConfig) RegisterFlagsWithPrefix(prefix string, f *flag.FlagSet) {
f.StringVar(&c.Type, prefix+".type", string(compressor.CompressorNone), "Compression type")
f.StringVar(&c.Threshold, prefix+".threshold", "64k", "Compression threshold")
}