cromp/db/queries.sql.go

390 lines
8.8 KiB
Go

// Code generated by sqlc. DO NOT EDIT.
// source: queries.sql
package db
import (
"context"
"encoding/json"
"time"
"github.com/google/uuid"
)
const authUser = `-- name: AuthUser :one
UPDATE users
SET
token = DEFAULT,
token_expires = DEFAULT
WHERE
username = $2 and
(hash = crypt($1, hash)) = true
RETURNING user_id, created_at, first_name, last_name, username, email, token, token_expires, true as authed
`
type AuthUserParams struct {
Crypt string `json:"crypt"`
Username string `json:"username"`
}
type AuthUserRow struct {
UserID int64 `json:"user_id"`
CreatedAt time.Time `json:"created_at"`
FirstName string `json:"first_name"`
LastName string `json:"last_name"`
Username string `json:"username"`
Email string `json:"email"`
Token string `json:"token"`
TokenExpires time.Time `json:"token_expires"`
Authed bool `json:"authed"`
}
func (q *Queries) AuthUser(ctx context.Context, arg AuthUserParams) (AuthUserRow, error) {
row := q.queryRow(ctx, q.authUserStmt, authUser, arg.Crypt, arg.Username)
var i AuthUserRow
err := row.Scan(
&i.UserID,
&i.CreatedAt,
&i.FirstName,
&i.LastName,
&i.Username,
&i.Email,
&i.Token,
&i.TokenExpires,
&i.Authed,
)
return i, err
}
const createEntry = `-- name: CreateEntry :one
INSERT INTO entries (
entry_id, user_id, title, body
) VALUES (
$1, $2, $3, $4
)
RETURNING entry_id, created_at, to_tsvector(body)
`
type CreateEntryParams struct {
EntryID uuid.UUID `json:"entry_id"`
UserID int64 `json:"user_id"`
Title string `json:"title"`
Body string `json:"body"`
}
type CreateEntryRow struct {
EntryID uuid.UUID `json:"entry_id"`
CreatedAt time.Time `json:"created_at"`
ToTsvector interface{} `json:"to_tsvector"`
}
func (q *Queries) CreateEntry(ctx context.Context, arg CreateEntryParams) (CreateEntryRow, error) {
row := q.queryRow(ctx, q.createEntryStmt, createEntry,
arg.EntryID,
arg.UserID,
arg.Title,
arg.Body,
)
var i CreateEntryRow
err := row.Scan(&i.EntryID, &i.CreatedAt, &i.ToTsvector)
return i, err
}
const createUser = `-- name: CreateUser :one
INSERT INTO users (
first_name, last_name, username, email, hash
) VALUES (
$1, $2, $3, $4, hash($5)
)
RETURNING user_id, username, token, token_expires
`
type CreateUserParams struct {
FirstName string `json:"first_name"`
LastName string `json:"last_name"`
Username string `json:"username"`
Email string `json:"email"`
Password string `json:"password"`
}
type CreateUserRow struct {
UserID int64 `json:"user_id"`
Username string `json:"username"`
Token string `json:"token"`
TokenExpires time.Time `json:"token_expires"`
}
func (q *Queries) CreateUser(ctx context.Context, arg CreateUserParams) (CreateUserRow, error) {
row := q.queryRow(ctx, q.createUserStmt, createUser,
arg.FirstName,
arg.LastName,
arg.Username,
arg.Email,
arg.Password,
)
var i CreateUserRow
err := row.Scan(
&i.UserID,
&i.Username,
&i.Token,
&i.TokenExpires,
)
return i, err
}
const deleteEntry = `-- name: DeleteEntry :execrows
DELETE FROM entries
WHERE entry_id = $1
`
func (q *Queries) DeleteEntry(ctx context.Context, entryID uuid.UUID) (int64, error) {
result, err := q.exec(ctx, q.deleteEntryStmt, deleteEntry, entryID)
if err != nil {
return 0, err
}
return result.RowsAffected()
}
const deleteUser = `-- name: DeleteUser :exec
DELETE FROM users CASCADE
WHERE user_id = $1
`
func (q *Queries) DeleteUser(ctx context.Context, userID int64) error {
_, err := q.exec(ctx, q.deleteUserStmt, deleteUser, userID)
return err
}
const entriesByToken = `-- name: EntriesByToken :many
SELECT entry_id, user_id, created_at, updated_at, title, body FROM entries
WHERE user_id = (SELECT user_id FROM users WHERE token = $1 limit 1)
`
func (q *Queries) EntriesByToken(ctx context.Context, token string) ([]Entry, error) {
rows, err := q.query(ctx, q.entriesByTokenStmt, entriesByToken, token)
if err != nil {
return nil, err
}
defer rows.Close()
var items []Entry
for rows.Next() {
var i Entry
if err := rows.Scan(
&i.EntryID,
&i.UserID,
&i.CreatedAt,
&i.UpdatedAt,
&i.Title,
&i.Body,
); err != nil {
return nil, err
}
items = append(items, i)
}
if err := rows.Close(); err != nil {
return nil, err
}
if err := rows.Err(); err != nil {
return nil, err
}
return items, nil
}
const getEntries = `-- name: GetEntries :many
SELECT entry_id, user_id, created_at, updated_at, title, body FROM entries
WHERE user_id = $1
`
func (q *Queries) GetEntries(ctx context.Context, userID int64) ([]Entry, error) {
rows, err := q.query(ctx, q.getEntriesStmt, getEntries, userID)
if err != nil {
return nil, err
}
defer rows.Close()
var items []Entry
for rows.Next() {
var i Entry
if err := rows.Scan(
&i.EntryID,
&i.UserID,
&i.CreatedAt,
&i.UpdatedAt,
&i.Title,
&i.Body,
); err != nil {
return nil, err
}
items = append(items, i)
}
if err := rows.Close(); err != nil {
return nil, err
}
if err := rows.Err(); err != nil {
return nil, err
}
return items, nil
}
const getEntry = `-- name: GetEntry :one
SELECT entry_id, user_id, created_at, updated_at, title, body FROM entries
WHERE entry_id = $1 and user_id = $2
LIMIT 1
`
type GetEntryParams struct {
EntryID uuid.UUID `json:"entry_id"`
UserID int64 `json:"user_id"`
}
func (q *Queries) GetEntry(ctx context.Context, arg GetEntryParams) (Entry, error) {
row := q.queryRow(ctx, q.getEntryStmt, getEntry, arg.EntryID, arg.UserID)
var i Entry
err := row.Scan(
&i.EntryID,
&i.UserID,
&i.CreatedAt,
&i.UpdatedAt,
&i.Title,
&i.Body,
)
return i, err
}
const getUser = `-- name: GetUser :one
SELECT user_id, created_at, updated_at, first_name, last_name, username, hash, email, token, token_expires FROM users
WHERE user_id = $1 LIMIT 1
`
func (q *Queries) GetUser(ctx context.Context, userID int64) (User, error) {
row := q.queryRow(ctx, q.getUserStmt, getUser, userID)
var i User
err := row.Scan(
&i.UserID,
&i.CreatedAt,
&i.UpdatedAt,
&i.FirstName,
&i.LastName,
&i.Username,
&i.Hash,
&i.Email,
&i.Token,
&i.TokenExpires,
)
return i, err
}
const getUserByToken = `-- name: GetUserByToken :one
SELECT user_id, created_at, updated_at, first_name, last_name, username, hash, email, token, token_expires FROM users
WHERE token = $1 LIMIT 1
`
func (q *Queries) GetUserByToken(ctx context.Context, token string) (User, error) {
row := q.queryRow(ctx, q.getUserByTokenStmt, getUserByToken, token)
var i User
err := row.Scan(
&i.UserID,
&i.CreatedAt,
&i.UpdatedAt,
&i.FirstName,
&i.LastName,
&i.Username,
&i.Hash,
&i.Email,
&i.Token,
&i.TokenExpires,
)
return i, err
}
const similarEntries = `-- name: SimilarEntries :many
SELECT entry_id, similarity(body, $2) as similarity,
ts_headline('english', body, q, 'StartSel = <b>, StopSel = </b>') as headline,
title from entries,
to_tsquery($2) q
WHERE user_id = $1 and
similarity(body, $2) > 0.0 and
similarity(body, $2) < 1.0
order by similarity DESC
LIMIT 10
`
type SimilarEntriesParams struct {
UserID int64 `json:"user_id"`
Similarity string `json:"similarity"`
}
type SimilarEntriesRow struct {
EntryID uuid.UUID `json:"entry_id"`
Similarity float32 `json:"similarity"`
Headline json.RawMessage `json:"headline"`
Title string `json:"title"`
}
func (q *Queries) SimilarEntries(ctx context.Context, arg SimilarEntriesParams) ([]SimilarEntriesRow, error) {
rows, err := q.query(ctx, q.similarEntriesStmt, similarEntries, arg.UserID, arg.Similarity)
if err != nil {
return nil, err
}
defer rows.Close()
var items []SimilarEntriesRow
for rows.Next() {
var i SimilarEntriesRow
if err := rows.Scan(
&i.EntryID,
&i.Similarity,
&i.Headline,
&i.Title,
); err != nil {
return nil, err
}
items = append(items, i)
}
if err := rows.Close(); err != nil {
return nil, err
}
if err := rows.Err(); err != nil {
return nil, err
}
return items, nil
}
const updateEntry = `-- name: UpdateEntry :execrows
UPDATE entries SET
title = $3,
body = $4
WHERE entry_id = $1 and
user_id = $2
`
type UpdateEntryParams struct {
EntryID uuid.UUID `json:"entry_id"`
UserID int64 `json:"user_id"`
Title string `json:"title"`
Body string `json:"body"`
}
func (q *Queries) UpdateEntry(ctx context.Context, arg UpdateEntryParams) (int64, error) {
result, err := q.exec(ctx, q.updateEntryStmt, updateEntry,
arg.EntryID,
arg.UserID,
arg.Title,
arg.Body,
)
if err != nil {
return 0, err
}
return result.RowsAffected()
}
const validToken = `-- name: ValidToken :one
SELECT now() < token_created FROM users
WHERE token = $1 LIMIT 1
`
func (q *Queries) ValidToken(ctx context.Context, token string) (bool, error) {
row := q.queryRow(ctx, q.validTokenStmt, validToken, token)
var column_1 bool
err := row.Scan(&column_1)
return column_1, err
}