add database models and queries for user management

This commit is contained in:
2025-08-10 10:39:27 +03:00
parent 5d80a68b44
commit 07d3ea44ea
4 changed files with 163 additions and 0 deletions

View File

@ -0,0 +1,32 @@
// Code generated by sqlc. DO NOT EDIT.
// versions:
// sqlc v1.28.0
package db
import (
"context"
"github.com/jackc/pgx/v5"
"github.com/jackc/pgx/v5/pgconn"
)
type DBTX interface {
Exec(context.Context, string, ...interface{}) (pgconn.CommandTag, error)
Query(context.Context, string, ...interface{}) (pgx.Rows, error)
QueryRow(context.Context, string, ...interface{}) pgx.Row
}
func New(db DBTX) *Queries {
return &Queries{db: db}
}
type Queries struct {
db DBTX
}
func (q *Queries) WithTx(tx pgx.Tx) *Queries {
return &Queries{
db: tx,
}
}

View File

@ -0,0 +1,19 @@
// Code generated by sqlc. DO NOT EDIT.
// versions:
// sqlc v1.28.0
package db
import (
"time"
"github.com/google/uuid"
)
type User struct {
Uuid uuid.UUID `json:"uuid"`
PhoneNumber string `json:"phone_number"`
CreatedAt time.Time `json:"created_at"`
Verified bool `json:"verified"`
VerifiedAt *time.Time `json:"verified_at"`
}

View File

@ -0,0 +1,20 @@
// Code generated by sqlc. DO NOT EDIT.
// versions:
// sqlc v1.28.0
package db
import (
"context"
"github.com/google/uuid"
)
type Querier interface {
CreateUser(ctx context.Context, phoneNumber string) (User, error)
GetByPhoneNumber(ctx context.Context, phoneNumber string) (User, error)
GetUserByUUID(ctx context.Context, argUuid uuid.UUID) (User, error)
UpdateUserVerified(ctx context.Context, argUuid uuid.UUID) (User, error)
}
var _ Querier = (*Queries)(nil)

View File

@ -0,0 +1,92 @@
// Code generated by sqlc. DO NOT EDIT.
// versions:
// sqlc v1.28.0
// source: users.sql
package db
import (
"context"
"github.com/google/uuid"
)
const createUser = `-- name: CreateUser :one
INSERT INTO users (phone_number)
VALUES ($1)
RETURNING uuid, phone_number, created_at, verified, verified_at
`
func (q *Queries) CreateUser(ctx context.Context, phoneNumber string) (User, error) {
row := q.db.QueryRow(ctx, createUser, phoneNumber)
var i User
err := row.Scan(
&i.Uuid,
&i.PhoneNumber,
&i.CreatedAt,
&i.Verified,
&i.VerifiedAt,
)
return i, err
}
const getByPhoneNumber = `-- name: GetByPhoneNumber :one
SELECT uuid, phone_number, created_at, verified, verified_at
FROM users
WHERE phone_number = $1
LIMIT 1
`
func (q *Queries) GetByPhoneNumber(ctx context.Context, phoneNumber string) (User, error) {
row := q.db.QueryRow(ctx, getByPhoneNumber, phoneNumber)
var i User
err := row.Scan(
&i.Uuid,
&i.PhoneNumber,
&i.CreatedAt,
&i.Verified,
&i.VerifiedAt,
)
return i, err
}
const getUserByUUID = `-- name: GetUserByUUID :one
SELECT uuid, phone_number, created_at, verified, verified_at
FROM users
WHERE uuid = $1
LIMIT 1
`
func (q *Queries) GetUserByUUID(ctx context.Context, argUuid uuid.UUID) (User, error) {
row := q.db.QueryRow(ctx, getUserByUUID, argUuid)
var i User
err := row.Scan(
&i.Uuid,
&i.PhoneNumber,
&i.CreatedAt,
&i.Verified,
&i.VerifiedAt,
)
return i, err
}
const updateUserVerified = `-- name: UpdateUserVerified :one
UPDATE users
SET verified = TRUE,
verified_at = CURRENT_TIMESTAMP
WHERE uuid = $1
RETURNING uuid, phone_number, created_at, verified, verified_at
`
func (q *Queries) UpdateUserVerified(ctx context.Context, argUuid uuid.UUID) (User, error) {
row := q.db.QueryRow(ctx, updateUserVerified, argUuid)
var i User
err := row.Scan(
&i.Uuid,
&i.PhoneNumber,
&i.CreatedAt,
&i.Verified,
&i.VerifiedAt,
)
return i, err
}