mirror of
https://codeberg.org/shroff/phylum.git
synced 2026-01-31 00:19:31 -06:00
273 lines
5.9 KiB
Go
273 lines
5.9 KiB
Go
// Code generated by sqlc. DO NOT EDIT.
|
|
// versions:
|
|
// sqlc v1.26.0
|
|
// source: user.sql
|
|
|
|
package db
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/google/uuid"
|
|
"github.com/jackc/pgx/v5/pgtype"
|
|
)
|
|
|
|
const createUser = `-- name: CreateUser :one
|
|
INSERT INTO users(
|
|
username, display_name, password_hash, root, home
|
|
) VALUES (
|
|
$1, $2, $3, $4, $5
|
|
) RETURNING username, created, modified, deleted, display_name, password_hash, root, home, permissions
|
|
`
|
|
|
|
type CreateUserParams struct {
|
|
Username string
|
|
DisplayName string
|
|
PasswordHash string
|
|
Root uuid.UUID
|
|
Home uuid.UUID
|
|
}
|
|
|
|
func (q *Queries) CreateUser(ctx context.Context, arg CreateUserParams) (User, error) {
|
|
row := q.db.QueryRow(ctx, createUser,
|
|
arg.Username,
|
|
arg.DisplayName,
|
|
arg.PasswordHash,
|
|
arg.Root,
|
|
arg.Home,
|
|
)
|
|
var i User
|
|
err := row.Scan(
|
|
&i.Username,
|
|
&i.Created,
|
|
&i.Modified,
|
|
&i.Deleted,
|
|
&i.DisplayName,
|
|
&i.PasswordHash,
|
|
&i.Root,
|
|
&i.Home,
|
|
&i.Permissions,
|
|
)
|
|
return i, err
|
|
}
|
|
|
|
const grantUserPermissions = `-- name: GrantUserPermissions :exec
|
|
UPDATE users
|
|
SET
|
|
permissions = permissions | $1,
|
|
modified = NOW()
|
|
WHERE username = $2
|
|
`
|
|
|
|
type GrantUserPermissionsParams struct {
|
|
Permissions int32
|
|
Username string
|
|
}
|
|
|
|
func (q *Queries) GrantUserPermissions(ctx context.Context, arg GrantUserPermissionsParams) error {
|
|
_, err := q.db.Exec(ctx, grantUserPermissions, arg.Permissions, arg.Username)
|
|
return err
|
|
}
|
|
|
|
const listUsers = `-- name: ListUsers :many
|
|
SELECT username, display_name, root, home FROM users WHERE modified > $1::TIMESTAMP
|
|
`
|
|
|
|
type ListUsersRow struct {
|
|
Username string
|
|
DisplayName string
|
|
Root uuid.UUID
|
|
Home uuid.UUID
|
|
}
|
|
|
|
func (q *Queries) ListUsers(ctx context.Context, since pgtype.Timestamp) ([]ListUsersRow, error) {
|
|
rows, err := q.db.Query(ctx, listUsers, since)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer rows.Close()
|
|
var items []ListUsersRow
|
|
for rows.Next() {
|
|
var i ListUsersRow
|
|
if err := rows.Scan(
|
|
&i.Username,
|
|
&i.DisplayName,
|
|
&i.Root,
|
|
&i.Home,
|
|
); err != nil {
|
|
return nil, err
|
|
}
|
|
items = append(items, i)
|
|
}
|
|
if err := rows.Err(); err != nil {
|
|
return nil, err
|
|
}
|
|
return items, nil
|
|
}
|
|
|
|
const revokeUserPermissions = `-- name: RevokeUserPermissions :exec
|
|
UPDATE users
|
|
SET
|
|
permissions = permissions & $1,
|
|
modified = NOW()
|
|
WHERE username = $2
|
|
`
|
|
|
|
type RevokeUserPermissionsParams struct {
|
|
Permissions int32
|
|
Username string
|
|
}
|
|
|
|
// Cannot manage to put a named parameter for $1. Something like 'mask' would be less confusion
|
|
func (q *Queries) RevokeUserPermissions(ctx context.Context, arg RevokeUserPermissionsParams) error {
|
|
_, err := q.db.Exec(ctx, revokeUserPermissions, arg.Permissions, arg.Username)
|
|
return err
|
|
}
|
|
|
|
const sharedResources = `-- name: SharedResources :many
|
|
SELECT r.id, r.name, r.parent, r.dir, r.created, r.modified, r.deleted, r.content_length, r.content_type, r.content_sha256
|
|
FROM permissions p
|
|
JOIN resources r
|
|
ON p.resource_id = r.id
|
|
WHERE p.username = $1::text
|
|
AND p.resource_id <> $2::uuid
|
|
AND p.value <> 0
|
|
AND r.deleted IS NULL
|
|
ORDER BY p.modified DESC
|
|
`
|
|
|
|
type SharedResourcesParams struct {
|
|
Username string
|
|
UserHome uuid.UUID
|
|
}
|
|
|
|
func (q *Queries) SharedResources(ctx context.Context, arg SharedResourcesParams) ([]Resource, error) {
|
|
rows, err := q.db.Query(ctx, sharedResources, arg.Username, arg.UserHome)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer rows.Close()
|
|
var items []Resource
|
|
for rows.Next() {
|
|
var i Resource
|
|
if err := rows.Scan(
|
|
&i.ID,
|
|
&i.Name,
|
|
&i.Parent,
|
|
&i.Dir,
|
|
&i.Created,
|
|
&i.Modified,
|
|
&i.Deleted,
|
|
&i.ContentLength,
|
|
&i.ContentType,
|
|
&i.ContentSha256,
|
|
); err != nil {
|
|
return nil, err
|
|
}
|
|
items = append(items, i)
|
|
}
|
|
if err := rows.Err(); err != nil {
|
|
return nil, err
|
|
}
|
|
return items, nil
|
|
}
|
|
|
|
const updateUserDisplayName = `-- name: UpdateUserDisplayName :exec
|
|
UPDATE users
|
|
SET
|
|
display_name = $1,
|
|
modified = NOW()
|
|
WHERE username = $2
|
|
`
|
|
|
|
type UpdateUserDisplayNameParams struct {
|
|
DisplayName string
|
|
Username string
|
|
}
|
|
|
|
func (q *Queries) UpdateUserDisplayName(ctx context.Context, arg UpdateUserDisplayNameParams) error {
|
|
_, err := q.db.Exec(ctx, updateUserDisplayName, arg.DisplayName, arg.Username)
|
|
return err
|
|
}
|
|
|
|
const updateUserHome = `-- name: UpdateUserHome :exec
|
|
UPDATE users
|
|
SET
|
|
home = $1,
|
|
modified = NOW()
|
|
WHERE username = $2
|
|
`
|
|
|
|
type UpdateUserHomeParams struct {
|
|
Home uuid.UUID
|
|
Username string
|
|
}
|
|
|
|
func (q *Queries) UpdateUserHome(ctx context.Context, arg UpdateUserHomeParams) error {
|
|
_, err := q.db.Exec(ctx, updateUserHome, arg.Home, arg.Username)
|
|
return err
|
|
}
|
|
|
|
const updateUserPasswordHash = `-- name: UpdateUserPasswordHash :exec
|
|
UPDATE users
|
|
SET
|
|
password_hash = $1,
|
|
modified = NOW()
|
|
WHERE username = $2
|
|
`
|
|
|
|
type UpdateUserPasswordHashParams struct {
|
|
PasswordHash string
|
|
Username string
|
|
}
|
|
|
|
func (q *Queries) UpdateUserPasswordHash(ctx context.Context, arg UpdateUserPasswordHashParams) error {
|
|
_, err := q.db.Exec(ctx, updateUserPasswordHash, arg.PasswordHash, arg.Username)
|
|
return err
|
|
}
|
|
|
|
const updateUserRoot = `-- name: UpdateUserRoot :exec
|
|
UPDATE users
|
|
SET
|
|
root = $1,
|
|
modified = NOW()
|
|
WHERE username = $2
|
|
`
|
|
|
|
type UpdateUserRootParams struct {
|
|
Root uuid.UUID
|
|
Username string
|
|
}
|
|
|
|
func (q *Queries) UpdateUserRoot(ctx context.Context, arg UpdateUserRootParams) error {
|
|
_, err := q.db.Exec(ctx, updateUserRoot, arg.Root, arg.Username)
|
|
return err
|
|
}
|
|
|
|
const userByUsername = `-- name: UserByUsername :one
|
|
SELECT username, display_name, password_hash, root, home, permissions FROM users WHERE username = $1
|
|
`
|
|
|
|
type UserByUsernameRow struct {
|
|
Username string
|
|
DisplayName string
|
|
PasswordHash string
|
|
Root uuid.UUID
|
|
Home uuid.UUID
|
|
Permissions int32
|
|
}
|
|
|
|
func (q *Queries) UserByUsername(ctx context.Context, username string) (UserByUsernameRow, error) {
|
|
row := q.db.QueryRow(ctx, userByUsername, username)
|
|
var i UserByUsernameRow
|
|
err := row.Scan(
|
|
&i.Username,
|
|
&i.DisplayName,
|
|
&i.PasswordHash,
|
|
&i.Root,
|
|
&i.Home,
|
|
&i.Permissions,
|
|
)
|
|
return i, err
|
|
}
|