package models import ( "database/sql" "errors" ) type User struct { ID int Username string PasswordHash string CreatedAt string } type UserStore struct { DB *sql.DB } func (s *UserStore) GetByUsername(username string) (*User, error) { var u User err := s.DB.QueryRow(`SELECT id, username, password_hash, created_at FROM admin_users WHERE username = ?`, username). Scan(&u.ID, &u.Username, &u.PasswordHash, &u.CreatedAt) if err == sql.ErrNoRows { return nil, nil } return &u, err } func (s *UserStore) Create(username, passwordHash string) error { _, err := s.DB.Exec(`INSERT INTO admin_users (username, password_hash) VALUES (?, ?)`, username, passwordHash) return err } func (s *UserStore) SeedAdmin(username, passwordHash string) error { existing, err := s.GetByUsername(username) if err != nil { return err } if existing != nil { return nil } err = s.Create(username, passwordHash) if err != nil && errors.Is(err, sql.ErrNoRows) { return nil } return err }