|
|
|
@@ -57,25 +57,32 @@ func (q *Queries) CreateEbook(ctx context.Context, arg CreateEbookParams) (Ebook
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const CreateUser = `-- name: CreateUser :one
|
|
|
|
|
INSERT INTO users (email, username, password_hash)
|
|
|
|
|
VALUES ($1, $2, $3)
|
|
|
|
|
RETURNING id, email, username, password_hash, created_at, updated_at
|
|
|
|
|
INSERT INTO users (email, username, password_hash, theme)
|
|
|
|
|
VALUES ($1, $2, $3, $4)
|
|
|
|
|
RETURNING id, email, username, password_hash, theme, created_at, updated_at
|
|
|
|
|
`
|
|
|
|
|
|
|
|
|
|
type CreateUserParams struct {
|
|
|
|
|
Email string `db:"email" json:"email"`
|
|
|
|
|
Username string `db:"username" json:"username"`
|
|
|
|
|
PasswordHash string `db:"password_hash" json:"password_hash"`
|
|
|
|
|
Email string `db:"email" json:"email"`
|
|
|
|
|
Username string `db:"username" json:"username"`
|
|
|
|
|
PasswordHash string `db:"password_hash" json:"password_hash"`
|
|
|
|
|
Theme pgtype.Text `db:"theme" json:"theme"`
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (q *Queries) CreateUser(ctx context.Context, arg CreateUserParams) (Users, error) {
|
|
|
|
|
row := q.db.QueryRow(ctx, CreateUser, arg.Email, arg.Username, arg.PasswordHash)
|
|
|
|
|
row := q.db.QueryRow(ctx, CreateUser,
|
|
|
|
|
arg.Email,
|
|
|
|
|
arg.Username,
|
|
|
|
|
arg.PasswordHash,
|
|
|
|
|
arg.Theme,
|
|
|
|
|
)
|
|
|
|
|
var i Users
|
|
|
|
|
err := row.Scan(
|
|
|
|
|
&i.ID,
|
|
|
|
|
&i.Email,
|
|
|
|
|
&i.Username,
|
|
|
|
|
&i.PasswordHash,
|
|
|
|
|
&i.Theme,
|
|
|
|
|
&i.CreatedAt,
|
|
|
|
|
&i.UpdatedAt,
|
|
|
|
|
)
|
|
|
|
@@ -152,13 +159,14 @@ func (q *Queries) GetReadingProgress(ctx context.Context, arg GetReadingProgress
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const GetUser = `-- name: GetUser :one
|
|
|
|
|
SELECT id, email, username, created_at, updated_at FROM users WHERE id = $1
|
|
|
|
|
SELECT id, email, username, theme, created_at, updated_at FROM users WHERE id = $1
|
|
|
|
|
`
|
|
|
|
|
|
|
|
|
|
type GetUserRow struct {
|
|
|
|
|
ID pgtype.UUID `db:"id" json:"id"`
|
|
|
|
|
Email string `db:"email" json:"email"`
|
|
|
|
|
Username string `db:"username" json:"username"`
|
|
|
|
|
Theme pgtype.Text `db:"theme" json:"theme"`
|
|
|
|
|
CreatedAt pgtype.Timestamptz `db:"created_at" json:"created_at"`
|
|
|
|
|
UpdatedAt pgtype.Timestamptz `db:"updated_at" json:"updated_at"`
|
|
|
|
|
}
|
|
|
|
@@ -170,6 +178,7 @@ func (q *Queries) GetUser(ctx context.Context, id pgtype.UUID) (GetUserRow, erro
|
|
|
|
|
&i.ID,
|
|
|
|
|
&i.Email,
|
|
|
|
|
&i.Username,
|
|
|
|
|
&i.Theme,
|
|
|
|
|
&i.CreatedAt,
|
|
|
|
|
&i.UpdatedAt,
|
|
|
|
|
)
|
|
|
|
@@ -177,7 +186,7 @@ func (q *Queries) GetUser(ctx context.Context, id pgtype.UUID) (GetUserRow, erro
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const GetUserByEmail = `-- name: GetUserByEmail :one
|
|
|
|
|
SELECT id, email, username, password_hash, created_at, updated_at FROM users WHERE email = $1
|
|
|
|
|
SELECT id, email, username, password_hash, theme, created_at, updated_at FROM users WHERE email = $1
|
|
|
|
|
`
|
|
|
|
|
|
|
|
|
|
func (q *Queries) GetUserByEmail(ctx context.Context, email string) (Users, error) {
|
|
|
|
@@ -188,6 +197,7 @@ func (q *Queries) GetUserByEmail(ctx context.Context, email string) (Users, erro
|
|
|
|
|
&i.Email,
|
|
|
|
|
&i.Username,
|
|
|
|
|
&i.PasswordHash,
|
|
|
|
|
&i.Theme,
|
|
|
|
|
&i.CreatedAt,
|
|
|
|
|
&i.UpdatedAt,
|
|
|
|
|
)
|
|
|
|
@@ -195,7 +205,7 @@ func (q *Queries) GetUserByEmail(ctx context.Context, email string) (Users, erro
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const GetUserByEmailOrUsername = `-- name: GetUserByEmailOrUsername :one
|
|
|
|
|
SELECT id, email, username, password_hash, created_at, updated_at FROM users WHERE email = $1 OR username = $1
|
|
|
|
|
SELECT id, email, username, password_hash, theme, created_at, updated_at FROM users WHERE email = $1 OR username = $1
|
|
|
|
|
`
|
|
|
|
|
|
|
|
|
|
func (q *Queries) GetUserByEmailOrUsername(ctx context.Context, email string) (Users, error) {
|
|
|
|
@@ -206,6 +216,7 @@ func (q *Queries) GetUserByEmailOrUsername(ctx context.Context, email string) (U
|
|
|
|
|
&i.Email,
|
|
|
|
|
&i.Username,
|
|
|
|
|
&i.PasswordHash,
|
|
|
|
|
&i.Theme,
|
|
|
|
|
&i.CreatedAt,
|
|
|
|
|
&i.UpdatedAt,
|
|
|
|
|
)
|
|
|
|
@@ -213,7 +224,7 @@ func (q *Queries) GetUserByEmailOrUsername(ctx context.Context, email string) (U
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const GetUserByUsername = `-- name: GetUserByUsername :one
|
|
|
|
|
SELECT id, email, username, password_hash, created_at, updated_at FROM users WHERE username = $1
|
|
|
|
|
SELECT id, email, username, password_hash, theme, created_at, updated_at FROM users WHERE username = $1
|
|
|
|
|
`
|
|
|
|
|
|
|
|
|
|
func (q *Queries) GetUserByUsername(ctx context.Context, username string) (Users, error) {
|
|
|
|
@@ -224,6 +235,7 @@ func (q *Queries) GetUserByUsername(ctx context.Context, username string) (Users
|
|
|
|
|
&i.Email,
|
|
|
|
|
&i.Username,
|
|
|
|
|
&i.PasswordHash,
|
|
|
|
|
&i.Theme,
|
|
|
|
|
&i.CreatedAt,
|
|
|
|
|
&i.UpdatedAt,
|
|
|
|
|
)
|
|
|
|
@@ -271,6 +283,46 @@ func (q *Queries) ListEbooks(ctx context.Context, arg ListEbooksParams) ([]Ebook
|
|
|
|
|
return items, nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const ListUsers = `-- name: ListUsers :many
|
|
|
|
|
SELECT id, email, username, theme, created_at, updated_at FROM users ORDER BY created_at DESC
|
|
|
|
|
`
|
|
|
|
|
|
|
|
|
|
type ListUsersRow struct {
|
|
|
|
|
ID pgtype.UUID `db:"id" json:"id"`
|
|
|
|
|
Email string `db:"email" json:"email"`
|
|
|
|
|
Username string `db:"username" json:"username"`
|
|
|
|
|
Theme pgtype.Text `db:"theme" json:"theme"`
|
|
|
|
|
CreatedAt pgtype.Timestamptz `db:"created_at" json:"created_at"`
|
|
|
|
|
UpdatedAt pgtype.Timestamptz `db:"updated_at" json:"updated_at"`
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (q *Queries) ListUsers(ctx context.Context) ([]ListUsersRow, error) {
|
|
|
|
|
rows, err := q.db.Query(ctx, ListUsers)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
defer rows.Close()
|
|
|
|
|
items := []ListUsersRow{}
|
|
|
|
|
for rows.Next() {
|
|
|
|
|
var i ListUsersRow
|
|
|
|
|
if err := rows.Scan(
|
|
|
|
|
&i.ID,
|
|
|
|
|
&i.Email,
|
|
|
|
|
&i.Username,
|
|
|
|
|
&i.Theme,
|
|
|
|
|
&i.CreatedAt,
|
|
|
|
|
&i.UpdatedAt,
|
|
|
|
|
); err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
items = append(items, i)
|
|
|
|
|
}
|
|
|
|
|
if err := rows.Err(); err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
return items, nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const UpdateEbook = `-- name: UpdateEbook :one
|
|
|
|
|
UPDATE ebooks SET
|
|
|
|
|
title = $2,
|
|
|
|
@@ -354,3 +406,17 @@ func (q *Queries) UpdateReadingProgress(ctx context.Context, arg UpdateReadingPr
|
|
|
|
|
)
|
|
|
|
|
return i, err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const UpdateUserTheme = `-- name: UpdateUserTheme :exec
|
|
|
|
|
UPDATE users SET theme = $2, updated_at = NOW() WHERE id = $1
|
|
|
|
|
`
|
|
|
|
|
|
|
|
|
|
type UpdateUserThemeParams struct {
|
|
|
|
|
ID pgtype.UUID `db:"id" json:"id"`
|
|
|
|
|
Theme pgtype.Text `db:"theme" json:"theme"`
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (q *Queries) UpdateUserTheme(ctx context.Context, arg UpdateUserThemeParams) error {
|
|
|
|
|
_, err := q.db.Exec(ctx, UpdateUserTheme, arg.ID, arg.Theme)
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|