Boost Azure Demo
This commit is contained in:
178
Backend/db/queries/users.sql
Normal file
178
Backend/db/queries/users.sql
Normal file
@@ -0,0 +1,178 @@
|
||||
-- name: CreateUser :one
|
||||
INSERT INTO users (
|
||||
email,
|
||||
password_hash,
|
||||
role,
|
||||
full_name
|
||||
) VALUES (
|
||||
$1,
|
||||
$2,
|
||||
$3,
|
||||
$4
|
||||
)
|
||||
RETURNING *;
|
||||
|
||||
-- name: GetUserByID :one
|
||||
SELECT *
|
||||
FROM users
|
||||
WHERE id = $1;
|
||||
|
||||
-- name: GetAuthUserByID :one
|
||||
SELECT
|
||||
u.id AS user_id,
|
||||
u.email AS user_email,
|
||||
u.role AS user_role,
|
||||
u.full_name AS user_full_name,
|
||||
u.is_active AS user_is_active,
|
||||
u.created_at AS user_created_at,
|
||||
u.updated_at AS user_updated_at,
|
||||
p.user_id AS profile_user_id,
|
||||
p.preferred_name,
|
||||
p.profile_icon_url,
|
||||
p.headline,
|
||||
p.bio,
|
||||
p.timezone,
|
||||
p.locale,
|
||||
p.grade_level,
|
||||
p.learning_goal,
|
||||
p.created_at AS profile_created_at,
|
||||
p.updated_at AS profile_updated_at
|
||||
FROM users u
|
||||
LEFT JOIN profiles p ON p.user_id = u.id
|
||||
WHERE u.id = $1;
|
||||
|
||||
-- name: GetUserByEmail :one
|
||||
SELECT *
|
||||
FROM users
|
||||
WHERE email = $1;
|
||||
|
||||
-- name: GetAuthUserByEmail :one
|
||||
SELECT
|
||||
u.id AS user_id,
|
||||
u.email AS user_email,
|
||||
u.role AS user_role,
|
||||
u.full_name AS user_full_name,
|
||||
u.is_active AS user_is_active,
|
||||
u.password_hash AS user_password_hash,
|
||||
u.created_at AS user_created_at,
|
||||
u.updated_at AS user_updated_at,
|
||||
p.user_id AS profile_user_id,
|
||||
p.preferred_name,
|
||||
p.profile_icon_url,
|
||||
p.headline,
|
||||
p.bio,
|
||||
p.timezone,
|
||||
p.locale,
|
||||
p.grade_level,
|
||||
p.learning_goal,
|
||||
p.created_at AS profile_created_at,
|
||||
p.updated_at AS profile_updated_at
|
||||
FROM users u
|
||||
LEFT JOIN profiles p ON p.user_id = u.id
|
||||
WHERE u.email = $1;
|
||||
|
||||
-- name: ListUsersByRole :many
|
||||
SELECT *
|
||||
FROM users
|
||||
WHERE role = $1
|
||||
ORDER BY full_name ASC;
|
||||
|
||||
-- name: ListUsersWithProfileByRole :many
|
||||
SELECT
|
||||
u.id AS user_id,
|
||||
u.email AS user_email,
|
||||
u.role AS user_role,
|
||||
u.full_name AS user_full_name,
|
||||
u.is_active AS user_is_active,
|
||||
u.created_at AS user_created_at,
|
||||
u.updated_at AS user_updated_at,
|
||||
p.user_id AS profile_user_id,
|
||||
p.preferred_name,
|
||||
p.profile_icon_url,
|
||||
p.headline,
|
||||
p.bio,
|
||||
p.timezone,
|
||||
p.locale,
|
||||
p.grade_level,
|
||||
p.learning_goal,
|
||||
p.created_at AS profile_created_at,
|
||||
p.updated_at AS profile_updated_at
|
||||
FROM users u
|
||||
LEFT JOIN profiles p ON p.user_id = u.id
|
||||
WHERE u.role = $1
|
||||
ORDER BY u.full_name ASC;
|
||||
|
||||
-- name: GetUserWithProfileByID :one
|
||||
SELECT
|
||||
u.id AS user_id,
|
||||
u.email AS user_email,
|
||||
u.role AS user_role,
|
||||
u.full_name AS user_full_name,
|
||||
u.is_active AS user_is_active,
|
||||
u.created_at AS user_created_at,
|
||||
u.updated_at AS user_updated_at,
|
||||
p.user_id AS profile_user_id,
|
||||
p.preferred_name,
|
||||
p.profile_icon_url,
|
||||
p.headline,
|
||||
p.bio,
|
||||
p.timezone,
|
||||
p.locale,
|
||||
p.grade_level,
|
||||
p.learning_goal,
|
||||
p.created_at AS profile_created_at,
|
||||
p.updated_at AS profile_updated_at
|
||||
FROM users u
|
||||
LEFT JOIN profiles p ON p.user_id = u.id
|
||||
WHERE u.id = $1;
|
||||
|
||||
-- name: UpdateUserActiveStatus :one
|
||||
UPDATE users
|
||||
SET
|
||||
is_active = $2,
|
||||
updated_at = NOW()
|
||||
WHERE id = $1
|
||||
RETURNING *;
|
||||
|
||||
-- name: UpdateUserFullName :one
|
||||
UPDATE users
|
||||
SET
|
||||
full_name = $2,
|
||||
updated_at = NOW()
|
||||
WHERE id = $1
|
||||
RETURNING *;
|
||||
|
||||
-- name: UpsertUserProfile :one
|
||||
INSERT INTO profiles (
|
||||
user_id,
|
||||
preferred_name,
|
||||
profile_icon_url,
|
||||
headline,
|
||||
bio,
|
||||
timezone,
|
||||
locale,
|
||||
grade_level,
|
||||
learning_goal
|
||||
) VALUES (
|
||||
$1,
|
||||
$2,
|
||||
$3,
|
||||
$4,
|
||||
$5,
|
||||
$6,
|
||||
$7,
|
||||
$8,
|
||||
$9
|
||||
)
|
||||
ON CONFLICT (user_id) DO UPDATE
|
||||
SET
|
||||
preferred_name = EXCLUDED.preferred_name,
|
||||
profile_icon_url = EXCLUDED.profile_icon_url,
|
||||
headline = EXCLUDED.headline,
|
||||
bio = EXCLUDED.bio,
|
||||
timezone = EXCLUDED.timezone,
|
||||
locale = EXCLUDED.locale,
|
||||
grade_level = EXCLUDED.grade_level,
|
||||
learning_goal = EXCLUDED.learning_goal,
|
||||
updated_at = NOW()
|
||||
RETURNING *;
|
||||
Reference in New Issue
Block a user