mirror of
https://github.com/h44z/wg-portal
synced 2025-02-26 05:49:14 +00:00
30 lines
530 B
Go
30 lines
530 B
Go
package domain
|
|
|
|
type ConfigOption[T any] struct {
|
|
Value T `gorm:"column:v"`
|
|
Overridable bool `gorm:"column:o"`
|
|
}
|
|
|
|
func (o *ConfigOption[T]) GetValue() T {
|
|
return o.Value
|
|
}
|
|
|
|
func (o *ConfigOption[T]) SetValue(value T) {
|
|
o.Value = value
|
|
}
|
|
|
|
func (o *ConfigOption[T]) TrySetValue(value T) bool {
|
|
if o.Overridable {
|
|
o.Value = value
|
|
return true
|
|
}
|
|
return false
|
|
}
|
|
|
|
func NewConfigOption[T any](value T, overridable bool) ConfigOption[T] {
|
|
return ConfigOption[T]{
|
|
Value: value,
|
|
Overridable: overridable,
|
|
}
|
|
}
|