1package database23import (4 "context"56 "github.com/charmbracelet/soft-serve/pkg/access"7 "github.com/charmbracelet/soft-serve/pkg/db"8 "github.com/charmbracelet/soft-serve/pkg/store"9)1011type settingsStore struct{}1213var _ store.SettingStore = (*settingsStore)(nil)1415// GetAllowKeylessAccess implements store.SettingStore.16func (*settingsStore) GetAllowKeylessAccess(ctx context.Context, tx db.Handler) (bool, error) {17 var allow bool18 query := tx.Rebind(`SELECT value FROM settings WHERE "key" = 'allow_keyless'`)19 if err := tx.GetContext(ctx, &allow, query); err != nil {20 return false, db.WrapError(err)21 }22 return allow, nil23}2425// GetAnonAccess implements store.SettingStore.26func (*settingsStore) GetAnonAccess(ctx context.Context, tx db.Handler) (access.AccessLevel, error) {27 var level string28 query := tx.Rebind(`SELECT value FROM settings WHERE "key" = 'anon_access'`)29 if err := tx.GetContext(ctx, &level, query); err != nil {30 return access.NoAccess, db.WrapError(err)31 }32 return access.ParseAccessLevel(level), nil33}3435// SetAllowKeylessAccess implements store.SettingStore.36func (*settingsStore) SetAllowKeylessAccess(ctx context.Context, tx db.Handler, allow bool) error {37 query := tx.Rebind(`UPDATE settings SET value = ?, updated_at = CURRENT_TIMESTAMP WHERE "key" = 'allow_keyless'`)38 _, err := tx.ExecContext(ctx, query, allow)39 return db.WrapError(err)40}4142// SetAnonAccess implements store.SettingStore.43func (*settingsStore) SetAnonAccess(ctx context.Context, tx db.Handler, level access.AccessLevel) error {44 query := tx.Rebind(`UPDATE settings SET value = ?, updated_at = CURRENT_TIMESTAMP WHERE "key" = 'anon_access'`)45 _, err := tx.ExecContext(ctx, query, level.String())46 return db.WrapError(err)47}