mirror of https://github.com/synctv-org/synctv
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
93 lines
1.4 KiB
Go
93 lines
1.4 KiB
Go
package op
|
|
|
|
import (
|
|
"github.com/synctv-org/synctv/internal/db"
|
|
"github.com/synctv-org/synctv/internal/model"
|
|
)
|
|
|
|
var boolSettings map[string]*Bool
|
|
|
|
type Setting interface {
|
|
Name() string
|
|
Raw() string
|
|
Type() model.SettingType
|
|
}
|
|
|
|
type BoolSetting interface {
|
|
Setting
|
|
Set(value bool) error
|
|
Get() (bool, error)
|
|
}
|
|
|
|
type Bool struct {
|
|
name string
|
|
value string
|
|
}
|
|
|
|
func NewBool(name, value string) *Bool {
|
|
return &Bool{
|
|
name: name,
|
|
value: value,
|
|
}
|
|
}
|
|
|
|
func (b *Bool) Name() string {
|
|
return b.name
|
|
}
|
|
|
|
func (b *Bool) Set(value bool) error {
|
|
if value {
|
|
b.value = "1"
|
|
} else {
|
|
b.value = "0"
|
|
}
|
|
return db.SetSettingItemValue(b.name, b.value)
|
|
}
|
|
|
|
func (b *Bool) Get() (bool, error) {
|
|
return b.value == "1", nil
|
|
}
|
|
|
|
func (b *Bool) Raw() string {
|
|
return b.value
|
|
}
|
|
|
|
func (b *Bool) Type() model.SettingType {
|
|
return model.SettingTypeBool
|
|
}
|
|
|
|
type Int64Setting interface {
|
|
Set(value int64) error
|
|
Get() (int64, error)
|
|
Raw() string
|
|
}
|
|
|
|
type Float64Setting interface {
|
|
Set(value float64) error
|
|
Get() (float64, error)
|
|
Raw() string
|
|
}
|
|
|
|
type StringSetting interface {
|
|
Set(value string) error
|
|
Get() (string, error)
|
|
Raw() string
|
|
}
|
|
|
|
func cleanReg() {
|
|
boolSettings = nil
|
|
}
|
|
|
|
func newRegBoolSetting(k, v string) BoolSetting {
|
|
b := NewBool(k, v)
|
|
if boolSettings == nil {
|
|
boolSettings = make(map[string]*Bool)
|
|
}
|
|
boolSettings[k] = b
|
|
return b
|
|
}
|
|
|
|
var (
|
|
DisableCreateRoom = newRegBoolSetting("disable_create_room", "0")
|
|
)
|