2025-11-19 17:34:42 +08:00

33 lines
730 B
Go

package data
import (
"database/sql"
"errors"
"time"
)
type User struct {
Username string
Password string // bcrypt hash
CreatedAt time.Time
}
func GetUser(username string) (*User, error) {
const q = `SELECT username, password, created_at FROM users WHERE username = $1`
var u User
err := DB().QueryRow(q, username).Scan(&u.Username, &u.Password, &u.CreatedAt)
if err != nil {
if errors.Is(err, sql.ErrNoRows) {
return nil, nil
}
return nil, err
}
return &u, nil
}
func CreateUser(username, passwordHash string) error {
const q = `INSERT INTO users (username, password, created_at) VALUES ($1, $2, NOW()) ON CONFLICT (username) DO NOTHING`
_, err := DB().Exec(q, username, passwordHash)
return err
}