mirror of
https://github.com/PrivateCaptcha/PrivateCaptcha.git
synced 2026-02-09 15:28:49 -06:00
50 lines
1.7 KiB
SQL
50 lines
1.7 KiB
SQL
-- name: GetOrganizationUsers :many
|
|
SELECT sqlc.embed(u), ou.level
|
|
FROM backend.organization_users ou
|
|
JOIN backend.users u ON ou.user_id = u.id
|
|
WHERE ou.org_id = $1 AND u.deleted_at IS NULL;
|
|
|
|
-- name: GetOrganizationUsersWithEmailInvites :many
|
|
SELECT sqlc.embed(ou), u.id AS linked_user_id, u.name AS user_name, u.email AS user_email
|
|
FROM backend.organization_users ou
|
|
LEFT JOIN backend.users u ON ou.user_id = u.id AND u.deleted_at IS NULL
|
|
WHERE ou.org_id = $1;
|
|
|
|
-- name: InviteUserToOrg :one
|
|
INSERT INTO backend.organization_users (org_id, user_id, level) VALUES ($1, $2, 'invited') RETURNING *;
|
|
|
|
-- name: InviteEmailToOrg :one
|
|
INSERT INTO backend.organization_users (org_id, email, level) VALUES ($1, $2, 'invited') RETURNING *;
|
|
|
|
-- name: LinkOrgInviteToUser :one
|
|
UPDATE backend.organization_users
|
|
SET user_id = $1, email = NULL, updated_at = NOW()
|
|
WHERE id = $2 AND user_id IS NULL
|
|
RETURNING *;
|
|
|
|
-- name: UpdateOrgMembershipLevel :exec
|
|
UPDATE backend.organization_users SET level = $1, updated_at = NOW() WHERE org_id = $2 AND user_id = $3 AND level = $4;
|
|
|
|
-- name: RemoveUserFromOrg :exec
|
|
DELETE FROM backend.organization_users WHERE org_id = $1 AND user_id = $2;
|
|
|
|
-- name: RemoveOrgInviteByID :exec
|
|
DELETE FROM backend.organization_users WHERE id = $1;
|
|
|
|
-- name: SwapOrgOwnership :exec
|
|
WITH delete_new_owner AS (
|
|
DELETE FROM backend.organization_users ou WHERE ou.org_id = $1 AND ou.user_id = $2
|
|
),
|
|
upsert_old_owner AS (
|
|
UPDATE backend.organization_users ou2
|
|
SET level = 'member', updated_at = NOW()
|
|
WHERE ou2.org_id = $1 AND ou2.user_id = $3
|
|
RETURNING ou2.id
|
|
),
|
|
insert_old_owner AS (
|
|
INSERT INTO backend.organization_users (org_id, user_id, level)
|
|
SELECT $1, $3, 'member'
|
|
WHERE NOT EXISTS (SELECT 1 FROM upsert_old_owner)
|
|
)
|
|
SELECT 1;
|