Files
phylum/server/internal/core/db/user.sql.go
2025-01-15 00:09:15 +05:30

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
}