7b6624ecc3
redesigned the project sharing popup to be a multi select dropdown that populates the options by using the input as a fuzzy search filter on the current users & invited users. users can now also be directly invited by email from the project share window. if invited this way, then the user will receive an email that sends them to a registration page, then a confirmation page. the initial registration was always redone so that it uses a similar system to the above in that it now will accept the first registered user if there are no other accounts (besides 'system').
104 lines
3.4 KiB
SQL
104 lines
3.4 KiB
SQL
-- name: GetUserAccountByID :one
|
|
SELECT * FROM user_account WHERE user_id = $1;
|
|
|
|
-- name: GetAllUserAccounts :many
|
|
SELECT * FROM user_account WHERE username != 'system';
|
|
|
|
-- name: GetUserAccountByUsername :one
|
|
SELECT * FROM user_account WHERE username = $1;
|
|
|
|
-- name: GetUserAccountByEmail :one
|
|
SELECT * FROM user_account WHERE email = $1;
|
|
|
|
-- name: CreateUserAccount :one
|
|
INSERT INTO user_account(full_name, initials, email, username, created_at, password_hash, role_code, active)
|
|
VALUES ($1, $2, $3, $4, $5, $6, $7, $8) RETURNING *;
|
|
|
|
-- name: UpdateUserAccountProfileAvatarURL :one
|
|
UPDATE user_account SET profile_avatar_url = $2 WHERE user_id = $1
|
|
RETURNING *;
|
|
|
|
-- name: GetMemberData :many
|
|
SELECT * FROM user_account
|
|
WHERE username != 'system'
|
|
AND user_id NOT IN (SELECT user_id FROM project_member WHERE project_id = $1);
|
|
|
|
-- name: UpdateUserAccountInfo :one
|
|
UPDATE user_account SET bio = $2, full_name = $3, initials = $4, email = $5
|
|
WHERE user_id = $1 RETURNING *;
|
|
|
|
-- name: DeleteUserAccountByID :exec
|
|
DELETE FROM user_account WHERE user_id = $1;
|
|
|
|
-- name: GetRoleForUserID :one
|
|
SELECT username, role.code, role.name FROM user_account
|
|
INNER JOIN role ON role.code = user_account.role_code
|
|
WHERE user_id = $1;
|
|
|
|
-- name: UpdateUserRole :one
|
|
UPDATE user_account SET role_code = $2 WHERE user_id = $1 RETURNING *;
|
|
|
|
-- name: SetUserPassword :one
|
|
UPDATE user_account SET password_hash = $2 WHERE user_id = $1 RETURNING *;
|
|
|
|
-- name: CreateInvitedUser :one
|
|
INSERT INTO user_account_invited (email) VALUES ($1) RETURNING *;
|
|
|
|
-- name: GetInvitedUserByEmail :one
|
|
SELECT * FROM user_account_invited WHERE email = $1;
|
|
|
|
-- name: CreateInvitedProjectMember :one
|
|
INSERT INTO project_member_invited (project_id, user_account_invited_id) VALUES ($1, $2)
|
|
RETURNING *;
|
|
|
|
-- name: GetInvitedUserAccounts :many
|
|
SELECT * FROM user_account_invited;
|
|
|
|
-- name: DeleteInvitedUserAccount :one
|
|
DELETE FROM user_account_invited WHERE user_account_invited_id = $1 RETURNING *;
|
|
|
|
-- name: HasAnyUser :one
|
|
SELECT EXISTS(SELECT 1 FROM user_account WHERE username != 'system');
|
|
|
|
-- name: HasActiveUser :one
|
|
SELECT EXISTS(SELECT 1 FROM user_account WHERE username != 'system' AND active = true);
|
|
|
|
-- name: CreateConfirmToken :one
|
|
INSERT INTO user_account_confirm_token (email) VALUES ($1) RETURNING *;
|
|
|
|
-- name: GetConfirmTokenByEmail :one
|
|
SELECT * FROM user_account_confirm_token WHERE email = $1;
|
|
|
|
-- name: GetConfirmTokenByID :one
|
|
SELECT * FROM user_account_confirm_token WHERE confirm_token_id = $1;
|
|
|
|
-- name: SetFirstUserActive :one
|
|
UPDATE user_account SET active = true WHERE user_id = (
|
|
SELECT user_id from user_account WHERE active = false LIMIT 1
|
|
) RETURNING *;
|
|
|
|
-- name: SetUserActiveByEmail :one
|
|
UPDATE user_account SET active = true WHERE email = $1 RETURNING *;
|
|
|
|
-- name: GetProjectsForInvitedMember :many
|
|
SELECT project_id FROM user_account_invited AS uai
|
|
INNER JOIN project_member_invited AS pmi
|
|
ON pmi.user_account_invited_id = uai.user_account_invited_id
|
|
WHERE uai.email = $1;
|
|
|
|
-- name: DeleteProjectMemberInvitedForEmail :exec
|
|
DELETE FROM project_member_invited WHERE project_member_invited_id IN (
|
|
SELECT pmi.project_member_invited_id FROM user_account_invited AS uai
|
|
INNER JOIN project_member_invited AS pmi
|
|
ON pmi.user_account_invited_id = uai.user_account_invited_id
|
|
WHERE uai.email = $1
|
|
);
|
|
|
|
-- name: DeleteUserAccountInvitedForEmail :exec
|
|
DELETE FROM user_account_invited WHERE email = $1;
|
|
|
|
-- name: DeleteConfirmTokenForEmail :exec
|
|
DELETE FROM user_account_confirm_token WHERE email = $1;
|
|
|
|
|