admin benutzer wird intial angelegt
This commit is contained in:
@@ -2,6 +2,7 @@ package db
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
"github.com/jackc/pgx/v5/pgxpool"
|
||||
|
||||
@@ -16,6 +17,26 @@ func NewUserStore(pool *pgxpool.Pool) *UserStore {
|
||||
return &UserStore{pool: pool}
|
||||
}
|
||||
|
||||
// SeedAdminUser creates an admin user if no users exist yet.
|
||||
// Returns (true, nil) if the user was created, (false, nil) if users already exist.
|
||||
func SeedAdminUser(ctx context.Context, pool *pgxpool.Pool, username, passwordHash string) (bool, error) {
|
||||
var count int
|
||||
if err := pool.QueryRow(ctx, `SELECT COUNT(*) FROM users`).Scan(&count); err != nil {
|
||||
return false, fmt.Errorf("count users: %w", err)
|
||||
}
|
||||
if count > 0 {
|
||||
return false, nil
|
||||
}
|
||||
_, err := pool.Exec(ctx,
|
||||
`INSERT INTO users (username, password_hash, is_admin) VALUES ($1, $2, true)`,
|
||||
username, passwordHash,
|
||||
)
|
||||
if err != nil {
|
||||
return false, fmt.Errorf("insert admin: %w", err)
|
||||
}
|
||||
return true, nil
|
||||
}
|
||||
|
||||
// ListUsers returns all users ordered by created_at.
|
||||
func (s *UserStore) ListUsers(ctx context.Context) ([]domain.User, error) {
|
||||
rows, err := s.pool.Query(ctx,
|
||||
|
||||
Reference in New Issue
Block a user