44 lines
1.0 KiB
Go
44 lines
1.0 KiB
Go
package models
|
|
|
|
import "database/sql"
|
|
|
|
const siteSettingsID = 1
|
|
|
|
type SiteSettings struct {
|
|
AllowSignup bool
|
|
}
|
|
|
|
func EnsureSiteSettings(db *sql.DB) error {
|
|
_, err := db.Exec(`
|
|
CREATE TABLE IF NOT EXISTS site_settings (
|
|
id INT PRIMARY KEY,
|
|
allow_signup BOOLEAN NOT NULL DEFAULT TRUE,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
)`)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
_, err = db.Exec(`
|
|
INSERT INTO site_settings (id, allow_signup)
|
|
VALUES (?, TRUE)
|
|
ON DUPLICATE KEY UPDATE id = id
|
|
`, siteSettingsID)
|
|
return err
|
|
}
|
|
|
|
func GetSiteSettings(db *sql.DB) (*SiteSettings, error) {
|
|
settings := &SiteSettings{}
|
|
err := db.QueryRow("SELECT allow_signup FROM site_settings WHERE id = ?", siteSettingsID).Scan(&settings.AllowSignup)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return settings, nil
|
|
}
|
|
|
|
func SetAllowSignup(db *sql.DB, allowSignup bool) error {
|
|
_, err := db.Exec("UPDATE site_settings SET allow_signup = ?, updated_at = CURRENT_TIMESTAMP WHERE id = ?", allowSignup, siteSettingsID)
|
|
return err
|
|
}
|