clean up unnecessary code

This commit is contained in:
yequari 2025-05-18 11:27:54 -07:00
parent 8b681922f6
commit 3c811c9533
2 changed files with 39 additions and 108 deletions

View File

@ -1,70 +1,55 @@
package models package models
import ( import (
"database/sql"
"maps"
"strconv" "strconv"
"time" "time"
) )
type SettingModel struct { type SettingGroup struct {
DB *sql.DB
}
type SettingConfig struct {
}
type SettingGroup int
const (
SettingGroupUser SettingGroup = 1
SettingGroupGuestbook SettingGroup = 2
)
type SettingDataType int
const (
SettingTypeInt SettingDataType = 1
SettingTypeDate SettingDataType = 2
SettingTypeAlphanum SettingDataType = 3
)
type SettingValue struct {
Id int
SettingId int
AllowedSettingId int
UnconstrainedValue string
}
type AllowedSettingValue struct {
id int id int
itemValue string description string
caption string
} }
func (s *AllowedSettingValue) Id() int { func (g *SettingGroup) Id() int {
return s.id return g.id
} }
func (s *AllowedSettingValue) ItemValue() string { func (g *SettingGroup) Description() string {
return s.itemValue return g.description
} }
func (s *AllowedSettingValue) Caption() string { const (
return s.caption SETTING_GROUP_USER = "user"
SETTING_GROUP_GUESTBOOK = "guestbook"
)
type SettingDataType struct {
id int
description string
} }
func (d *SettingDataType) Id() int {
return d.id
}
func (d *SettingDataType) Description() string {
return d.description
}
const (
SETTING_TYPE_INTEGER = "integer"
SETTING_TYPE_STRING = "alphanumeric"
SETTING_TYPE_DATE = "datetime"
)
type Setting struct { type Setting struct {
id int id int
description string description string
constrained bool constrained bool
dataType SettingDataType dataType SettingDataType
dataTypeDesc string
settingGroup SettingGroup settingGroup SettingGroup
settingGroupDesc string minValue string
minValue string // TODO: Maybe should be int?
maxValue string maxValue string
allowedValues map[int]AllowedSettingValue
} }
func (s *Setting) Id() int { func (s *Setting) Id() int {
@ -95,32 +80,18 @@ func (s *Setting) MaxValue() string {
return s.maxValue return s.maxValue
} }
func (s *Setting) AllowedValues() map[int]AllowedSettingValue { func (s *Setting) Validate(value string) bool {
result := make(map[int]AllowedSettingValue, 50) switch s.dataType.description {
maps.Copy(result, s.allowedValues) case SETTING_TYPE_INTEGER:
return result
}
func (s *Setting) ValidateUnconstrained(value string) bool {
switch s.dataType {
case SettingTypeInt:
return s.validateInt(value) return s.validateInt(value)
case SettingTypeAlphanum: case SETTING_TYPE_STRING:
return s.validateAlphanum(value) return s.validateAlphanum(value)
case SettingTypeDate: case SETTING_TYPE_DATE:
return s.validateDatetime(value) return s.validateDatetime(value)
} }
return false return false
} }
func (s *Setting) ValidateConstrained(value *AllowedSettingValue) bool {
_, exists := s.allowedValues[value.id]
if s.constrained && exists {
return true
}
return false
}
func (s *Setting) validateInt(value string) bool { func (s *Setting) validateInt(value string) bool {
v, err := strconv.ParseInt(value, 10, 0) v, err := strconv.ParseInt(value, 10, 0)
if err != nil { if err != nil {
@ -179,45 +150,5 @@ func (s *Setting) validateDatetime(value string) bool {
} }
func (s *Setting) validateAlphanum(value string) bool { func (s *Setting) validateAlphanum(value string) bool {
return true return len(value) >= 0
}
func (s Setting) Validate(value string) bool {
switch s.dataType {
case SettingTypeInt:
return s.validateInt(value)
case SettingTypeAlphanum:
return s.validateAlphanum(value)
case SettingTypeDate:
return s.validateDatetime(value)
}
return false
}
func validateSetting(db *sql.DB, settingId int, value string) (bool, error) {
stmt := `SELECT s.Id, Description, Constrained, DataType, SettingGroup, MinValue, MaxValue, a.Id
FROM settings AS s LEFT JOIN allowed_setting_values AS a ON s.Id = a.SettingId AND a.ItemValue = ?
WHERE s.Id = ?`
result := db.QueryRow(stmt, value, settingId)
var s Setting
var minval sql.NullString
var maxval sql.NullString
var allowedId sql.NullInt64
err := result.Scan(&s.id, &s.description, &s.constrained, &s.dataType, &s.settingGroup, &minval, &maxval, &allowedId)
if err != nil {
return false, err
}
if s.constrained && allowedId.Valid {
return true, nil
}
switch s.dataType {
case SettingTypeInt:
return s.validateInt(value), nil
case SettingTypeAlphanum:
return s.validateAlphanum(value), nil
case SettingTypeDate:
return s.validateDatetime(value), nil
}
return false, nil
} }

View File

@ -52,7 +52,7 @@ func (m *UserModel) InitializeSettingsMap() error {
var s Setting var s Setting
var mn sql.NullString var mn sql.NullString
var mx sql.NullString var mx sql.NullString
err := result.Scan(&s.id, &s.description, &s.constrained, &s.dataType, &s.dataTypeDesc, &s.settingGroup, &s.settingGroupDesc, &mn, &mx) err := result.Scan(&s.id, &s.description, &s.constrained, &s.dataType.id, &s.dataType.description, &s.settingGroup.id, &s.settingGroup.description, &mn, &mx)
if mn.Valid { if mn.Valid {
s.minValue = mn.String s.minValue = mn.String
} }