mirror of
https://codeberg.org/shroff/phylum.git
synced 2026-01-09 13:11:48 -06:00
64 lines
1.4 KiB
SQL
64 lines
1.4 KiB
SQL
-- name: CreateUser :one
|
|
INSERT INTO users(
|
|
username, display_name, password_hash, root, home
|
|
) VALUES (
|
|
$1, $2, $3, $4, $5
|
|
) RETURNING *;
|
|
|
|
-- name: UserByUsername :one
|
|
SELECT username, display_name, password_hash, root, home, permissions FROM users WHERE username = $1;
|
|
|
|
-- name: ListUsers :many
|
|
SELECT username, display_name, root, home FROM users WHERE modified > @since::TIMESTAMP;
|
|
|
|
-- name: UpdateUserDisplayName :exec
|
|
UPDATE users
|
|
SET
|
|
display_name = $1,
|
|
modified = NOW()
|
|
WHERE username = $2;
|
|
|
|
-- name: UpdateUserPasswordHash :exec
|
|
UPDATE users
|
|
SET
|
|
password_hash = $1,
|
|
modified = NOW()
|
|
WHERE username = $2;
|
|
|
|
-- name: UpdateUserRoot :exec
|
|
UPDATE users
|
|
SET
|
|
root = $1,
|
|
modified = NOW()
|
|
WHERE username = $2;
|
|
|
|
-- name: UpdateUserHome :exec
|
|
UPDATE users
|
|
SET
|
|
home = $1,
|
|
modified = NOW()
|
|
WHERE username = $2;
|
|
|
|
-- name: GrantUserPermissions :exec
|
|
UPDATE users
|
|
SET
|
|
permissions = permissions | $1,
|
|
modified = NOW()
|
|
WHERE username = $2;
|
|
|
|
-- Cannot manage to put a named parameter for $1. Something like 'mask' would be less confusion
|
|
-- name: RevokeUserPermissions :exec
|
|
UPDATE users
|
|
SET
|
|
permissions = permissions & $1,
|
|
modified = NOW()
|
|
WHERE username = $2;
|
|
|
|
-- name: SharedResources :many
|
|
SELECT * FROM resources
|
|
WHERE grants ? @username::TEXT
|
|
AND id <> @user_home::UUID
|
|
AND deleted IS NULL
|
|
AND grants -> @username::TEXT -> 'p' <> 0
|
|
ORDER BY grants -> @username::TEXT -> 't' DESC;
|