diff --git a/backend/internal/db/queries/sessions.sql b/backend/internal/db/queries/sessions.sql new file mode 100644 index 0000000..e7c73c2 --- /dev/null +++ b/backend/internal/db/queries/sessions.sql @@ -0,0 +1,19 @@ +-- name: InsertSession :exec +INSERT INTO sessions (id, user_id, expires_at) +VALUES ($1, $2, $3); + +-- name: GetSessionWithUser :one +SELECT s.id, s.user_id, s.created_at, s.expires_at, + u.id AS u_id, u.email, u.password_hash, u.created_at AS u_created_at, u.updated_at AS u_updated_at +FROM sessions s +JOIN users u ON u.id = s.user_id +WHERE s.id = $1 AND s.expires_at > now(); + +-- name: DeleteSession :exec +DELETE FROM sessions WHERE id = $1; + +-- name: DeleteSessionsByUser :exec +DELETE FROM sessions WHERE user_id = $1; + +-- name: ExtendSession :exec +UPDATE sessions SET expires_at = $2 WHERE id = $1; diff --git a/backend/internal/db/queries/users.sql b/backend/internal/db/queries/users.sql new file mode 100644 index 0000000..3c28de0 --- /dev/null +++ b/backend/internal/db/queries/users.sql @@ -0,0 +1,9 @@ +-- name: InsertUser :one +INSERT INTO users (email, password_hash) +VALUES ($1, $2) +RETURNING id, email, password_hash, created_at, updated_at; + +-- name: GetUserByEmail :one +SELECT id, email, password_hash, created_at, updated_at +FROM users +WHERE email = $1; diff --git a/backend/sqlc.yaml b/backend/sqlc.yaml index 9680109..c8e5f04 100644 --- a/backend/sqlc.yaml +++ b/backend/sqlc.yaml @@ -10,3 +10,10 @@ sql: sql_package: "pgx/v5" emit_json_tags: false emit_interface: false + overrides: + - db_type: "citext" + go_type: "string" + - db_type: "uuid" + go_type: + import: "github.com/google/uuid" + type: "UUID"