stillbox/pkg/database/share.sql.go
2025-02-14 00:19:24 -05:00

165 lines
3.4 KiB
Go

// Code generated by sqlc. DO NOT EDIT.
// versions:
// sqlc v1.27.0
// source: share.sql
package database
import (
"context"
"github.com/google/uuid"
"github.com/jackc/pgx/v5/pgtype"
)
const createShare = `-- name: CreateShare :exec
INSERT INTO shares (
id,
entity_type,
entity_id,
entity_date,
owner,
expiration
) VALUES ($1, $2, $3, $4, $5, $6)
`
type CreateShareParams struct {
ID string `json:"id"`
EntityType string `json:"entityType"`
EntityID uuid.UUID `json:"entityId"`
EntityDate pgtype.Timestamptz `json:"entityDate"`
Owner int `json:"owner"`
Expiration pgtype.Timestamptz `json:"expiration"`
}
func (q *Queries) CreateShare(ctx context.Context, arg CreateShareParams) error {
_, err := q.db.Exec(ctx, createShare,
arg.ID,
arg.EntityType,
arg.EntityID,
arg.EntityDate,
arg.Owner,
arg.Expiration,
)
return err
}
const deleteShare = `-- name: DeleteShare :exec
DELETE FROM shares WHERE id = $1
`
func (q *Queries) DeleteShare(ctx context.Context, id string) error {
_, err := q.db.Exec(ctx, deleteShare, id)
return err
}
const getShare = `-- name: GetShare :one
SELECT
s.id,
s.entity_type,
s.entity_id,
s.entity_date,
s.owner,
s.expiration
FROM shares s
WHERE s.id = $1
`
func (q *Queries) GetShare(ctx context.Context, id string) (Share, error) {
row := q.db.QueryRow(ctx, getShare, id)
var i Share
err := row.Scan(
&i.ID,
&i.EntityType,
&i.EntityID,
&i.EntityDate,
&i.Owner,
&i.Expiration,
)
return i, err
}
const getSharesP = `-- name: GetSharesP :many
SELECT
s.id, s.entity_type, s.entity_id, s.entity_date, s.owner, s.expiration,
u.username
FROM shares s
JOIN users u ON (s.owner = u.id)
WHERE
CASE WHEN $1::INTEGER IS NOT NULL THEN
s.owner = $1 ELSE TRUE END
ORDER BY
CASE WHEN $2::TEXT = 'asc' THEN s.entity_date END ASC,
CASE WHEN $2::TEXT = 'desc' THEN s.entity_date END DESC
OFFSET $3 ROWS
FETCH NEXT $4 ROWS ONLY
`
type GetSharesPParams struct {
Owner *int32 `json:"owner"`
Direction string `json:"direction"`
Offset int32 `json:"offset"`
PerPage int32 `json:"perPage"`
}
type GetSharesPRow struct {
Share Share `json:"share"`
Username string `json:"username"`
}
func (q *Queries) GetSharesP(ctx context.Context, arg GetSharesPParams) ([]GetSharesPRow, error) {
rows, err := q.db.Query(ctx, getSharesP,
arg.Owner,
arg.Direction,
arg.Offset,
arg.PerPage,
)
if err != nil {
return nil, err
}
defer rows.Close()
var items []GetSharesPRow
for rows.Next() {
var i GetSharesPRow
if err := rows.Scan(
&i.Share.ID,
&i.Share.EntityType,
&i.Share.EntityID,
&i.Share.EntityDate,
&i.Share.Owner,
&i.Share.Expiration,
&i.Username,
); err != nil {
return nil, err
}
items = append(items, i)
}
if err := rows.Err(); err != nil {
return nil, err
}
return items, nil
}
const getSharesPCount = `-- name: GetSharesPCount :one
SELECT COUNT(*)
FROM shares s
WHERE
CASE WHEN $1::INTEGER IS NOT NULL THEN
s.owner = $1 ELSE TRUE END
`
func (q *Queries) GetSharesPCount(ctx context.Context, owner *int32) (int64, error) {
row := q.db.QueryRow(ctx, getSharesPCount, owner)
var count int64
err := row.Scan(&count)
return count, err
}
const pruneShares = `-- name: PruneShares :exec
DELETE FROM shares WHERE expiration < NOW()
`
func (q *Queries) PruneShares(ctx context.Context) error {
_, err := q.db.Exec(ctx, pruneShares)
return err
}