Files
PrivateCaptcha/pkg/db/queries/postgres/org_users.sql
2026-01-15 14:57:51 +02:00

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;