package models import ( "database/sql" ) type UserPreferences struct { ID int UserID int AutoSaveDrafts bool } // GetUserPreferences retrieves preferences for a user, creating defaults if none exist func GetUserPreferences(db *sql.DB, userID int) (*UserPreferences, error) { query := `SELECT id, user_id, auto_save_drafts FROM user_preferences WHERE user_id = ?` prefs := &UserPreferences{} err := db.QueryRow(query, userID).Scan( &prefs.ID, &prefs.UserID, &prefs.AutoSaveDrafts, ) if err == sql.ErrNoRows { // No preferences exist, create defaults return CreateDefaultPreferences(db, userID) } if err != nil { return nil, err } return prefs, nil } // CreateDefaultPreferences creates default preferences for a new user func CreateDefaultPreferences(db *sql.DB, userID int) (*UserPreferences, error) { query := `INSERT INTO user_preferences (user_id, auto_save_drafts) VALUES (?, TRUE)` result, err := db.Exec(query, userID) if err != nil { return nil, err } id, err := result.LastInsertId() if err != nil { return nil, err } return &UserPreferences{ ID: int(id), UserID: userID, AutoSaveDrafts: true, }, nil } // UpdateUserPreferences updates user preferences func UpdateUserPreferences(db *sql.DB, prefs *UserPreferences) error { query := `UPDATE user_preferences SET auto_save_drafts = ?, updated_at = NOW() WHERE user_id = ?` _, err := db.Exec(query, prefs.AutoSaveDrafts, prefs.UserID) return err }