321 lines
8 KiB
Go
321 lines
8 KiB
Go
// Code generated by sqlc. DO NOT EDIT.
|
|
// versions:
|
|
// sqlc v1.30.0
|
|
// source: queries.sql
|
|
|
|
package sqlc
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
)
|
|
|
|
const createImage = `-- name: CreateImage :one
|
|
INSERT INTO images (storage_type, image_path)
|
|
VALUES ($1, $2)
|
|
RETURNING id, storage_type, image_path
|
|
`
|
|
|
|
type CreateImageParams struct {
|
|
StorageType StorageTypeT `json:"storage_type"`
|
|
ImagePath string `json:"image_path"`
|
|
}
|
|
|
|
func (q *Queries) CreateImage(ctx context.Context, arg CreateImageParams) (Image, error) {
|
|
row := q.db.QueryRow(ctx, createImage, arg.StorageType, arg.ImagePath)
|
|
var i Image
|
|
err := row.Scan(&i.ID, &i.StorageType, &i.ImagePath)
|
|
return i, err
|
|
}
|
|
|
|
const getImageByID = `-- name: GetImageByID :one
|
|
SELECT id, storage_type, image_path
|
|
FROM images
|
|
WHERE id = $1
|
|
`
|
|
|
|
func (q *Queries) GetImageByID(ctx context.Context, illustID int64) (Image, error) {
|
|
row := q.db.QueryRow(ctx, getImageByID, illustID)
|
|
var i Image
|
|
err := row.Scan(&i.ID, &i.StorageType, &i.ImagePath)
|
|
return i, err
|
|
}
|
|
|
|
const getStudioByID = `-- name: GetStudioByID :one
|
|
SELECT id, studio_name, illust_id, studio_desc
|
|
FROM studios
|
|
WHERE id = $1::bigint
|
|
`
|
|
|
|
func (q *Queries) GetStudioByID(ctx context.Context, studioID int64) (Studio, error) {
|
|
row := q.db.QueryRow(ctx, getStudioByID, studioID)
|
|
var i Studio
|
|
err := row.Scan(
|
|
&i.ID,
|
|
&i.StudioName,
|
|
&i.IllustID,
|
|
&i.StudioDesc,
|
|
)
|
|
return i, err
|
|
}
|
|
|
|
const getTitleByID = `-- name: GetTitleByID :one
|
|
|
|
|
|
|
|
|
|
SELECT id, title_names, studio_id, poster_id, title_status, rating, rating_count, release_year, release_season, season, episodes_aired, episodes_all, episodes_len
|
|
FROM titles
|
|
WHERE id = $1::bigint
|
|
`
|
|
|
|
// -- name: ListUsers :many
|
|
// SELECT user_id, avatar_id, passhash, mail, nickname, disp_name, user_desc, creation_date
|
|
// FROM users
|
|
// ORDER BY user_id
|
|
// LIMIT $1 OFFSET $2;
|
|
// -- name: CreateUser :one
|
|
// INSERT INTO users (avatar_id, passhash, mail, nickname, disp_name, user_desc, creation_date)
|
|
// VALUES ($1, $2, $3, $4, $5, $6, $7)
|
|
// RETURNING user_id, avatar_id, nickname, disp_name, user_desc, creation_date;
|
|
// -- name: UpdateUser :one
|
|
// UPDATE users
|
|
// SET
|
|
//
|
|
// avatar_id = COALESCE(sqlc.narg('avatar_id'), avatar_id),
|
|
// disp_name = COALESCE(sqlc.narg('disp_name'), disp_name),
|
|
// user_desc = COALESCE(sqlc.narg('user_desc'), user_desc),
|
|
// passhash = COALESCE(sqlc.narg('passhash'), passhash)
|
|
//
|
|
// WHERE user_id = sqlc.arg('user_id')
|
|
// RETURNING user_id, avatar_id, nickname, disp_name, user_desc, creation_date;
|
|
// -- name: DeleteUser :exec
|
|
// DELETE FROM users
|
|
// WHERE user_id = $1;
|
|
func (q *Queries) GetTitleByID(ctx context.Context, titleID int64) (Title, error) {
|
|
row := q.db.QueryRow(ctx, getTitleByID, titleID)
|
|
var i Title
|
|
err := row.Scan(
|
|
&i.ID,
|
|
&i.TitleNames,
|
|
&i.StudioID,
|
|
&i.PosterID,
|
|
&i.TitleStatus,
|
|
&i.Rating,
|
|
&i.RatingCount,
|
|
&i.ReleaseYear,
|
|
&i.ReleaseSeason,
|
|
&i.Season,
|
|
&i.EpisodesAired,
|
|
&i.EpisodesAll,
|
|
&i.EpisodesLen,
|
|
)
|
|
return i, err
|
|
}
|
|
|
|
const getTitleTags = `-- name: GetTitleTags :many
|
|
SELECT
|
|
tag_names
|
|
FROM tags as g
|
|
JOIN title_tags as t ON(t.tag_id = g.id)
|
|
WHERE t.title_id = $1::bigint
|
|
`
|
|
|
|
func (q *Queries) GetTitleTags(ctx context.Context, titleID int64) ([][]byte, error) {
|
|
rows, err := q.db.Query(ctx, getTitleTags, titleID)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer rows.Close()
|
|
var items [][]byte
|
|
for rows.Next() {
|
|
var tag_names []byte
|
|
if err := rows.Scan(&tag_names); err != nil {
|
|
return nil, err
|
|
}
|
|
items = append(items, tag_names)
|
|
}
|
|
if err := rows.Err(); err != nil {
|
|
return nil, err
|
|
}
|
|
return items, nil
|
|
}
|
|
|
|
const getUserByID = `-- name: GetUserByID :one
|
|
SELECT id, avatar_id, mail, nickname, disp_name, user_desc, creation_date
|
|
FROM users
|
|
WHERE id = $1
|
|
`
|
|
|
|
type GetUserByIDRow struct {
|
|
ID int64 `json:"id"`
|
|
AvatarID *int64 `json:"avatar_id"`
|
|
Mail *string `json:"mail"`
|
|
Nickname string `json:"nickname"`
|
|
DispName *string `json:"disp_name"`
|
|
UserDesc *string `json:"user_desc"`
|
|
CreationDate time.Time `json:"creation_date"`
|
|
}
|
|
|
|
func (q *Queries) GetUserByID(ctx context.Context, id int64) (GetUserByIDRow, error) {
|
|
row := q.db.QueryRow(ctx, getUserByID, id)
|
|
var i GetUserByIDRow
|
|
err := row.Scan(
|
|
&i.ID,
|
|
&i.AvatarID,
|
|
&i.Mail,
|
|
&i.Nickname,
|
|
&i.DispName,
|
|
&i.UserDesc,
|
|
&i.CreationDate,
|
|
)
|
|
return i, err
|
|
}
|
|
|
|
const insertStudio = `-- name: InsertStudio :one
|
|
INSERT INTO studios (studio_name, illust_id, studio_desc)
|
|
VALUES (
|
|
$1::text,
|
|
$2::bigint,
|
|
$3::text)
|
|
RETURNING id, studio_name, illust_id, studio_desc
|
|
`
|
|
|
|
type InsertStudioParams struct {
|
|
StudioName string `json:"studio_name"`
|
|
IllustID *int64 `json:"illust_id"`
|
|
StudioDesc *string `json:"studio_desc"`
|
|
}
|
|
|
|
func (q *Queries) InsertStudio(ctx context.Context, arg InsertStudioParams) (Studio, error) {
|
|
row := q.db.QueryRow(ctx, insertStudio, arg.StudioName, arg.IllustID, arg.StudioDesc)
|
|
var i Studio
|
|
err := row.Scan(
|
|
&i.ID,
|
|
&i.StudioName,
|
|
&i.IllustID,
|
|
&i.StudioDesc,
|
|
)
|
|
return i, err
|
|
}
|
|
|
|
const insertTag = `-- name: InsertTag :one
|
|
INSERT INTO tags (tag_names)
|
|
VALUES (
|
|
$1::jsonb)
|
|
RETURNING id, tag_names
|
|
`
|
|
|
|
func (q *Queries) InsertTag(ctx context.Context, tagNames []byte) (Tag, error) {
|
|
row := q.db.QueryRow(ctx, insertTag, tagNames)
|
|
var i Tag
|
|
err := row.Scan(&i.ID, &i.TagNames)
|
|
return i, err
|
|
}
|
|
|
|
const insertTitleTags = `-- name: InsertTitleTags :one
|
|
INSERT INTO title_tags (title_id, tag_id)
|
|
VALUES (
|
|
$1::bigint,
|
|
$2::bigint)
|
|
RETURNING title_id, tag_id
|
|
`
|
|
|
|
type InsertTitleTagsParams struct {
|
|
TitleID int64 `json:"title_id"`
|
|
TagID int64 `json:"tag_id"`
|
|
}
|
|
|
|
func (q *Queries) InsertTitleTags(ctx context.Context, arg InsertTitleTagsParams) (TitleTag, error) {
|
|
row := q.db.QueryRow(ctx, insertTitleTags, arg.TitleID, arg.TagID)
|
|
var i TitleTag
|
|
err := row.Scan(&i.TitleID, &i.TagID)
|
|
return i, err
|
|
}
|
|
|
|
const searchTitles = `-- name: SearchTitles :many
|
|
SELECT
|
|
id, title_names, studio_id, poster_id, title_status, rating, rating_count, release_year, release_season, season, episodes_aired, episodes_all, episodes_len
|
|
FROM titles
|
|
WHERE
|
|
CASE
|
|
WHEN $1::text IS NOT NULL THEN
|
|
(
|
|
SELECT bool_and(
|
|
EXISTS (
|
|
SELECT 1
|
|
FROM jsonb_each_text(title_names) AS t(key, val)
|
|
WHERE val ILIKE pattern
|
|
)
|
|
)
|
|
FROM unnest(
|
|
ARRAY(
|
|
SELECT '%' || trim(w) || '%'
|
|
FROM unnest(string_to_array($1::text, ' ')) AS w
|
|
WHERE trim(w) <> ''
|
|
)
|
|
) AS pattern
|
|
)
|
|
ELSE true
|
|
END
|
|
|
|
AND ($2::title_status_t IS NULL OR title_status = $2::title_status_t)
|
|
AND ($3::float IS NULL OR rating >= $3::float)
|
|
AND ($4::int IS NULL OR release_year = $4::int)
|
|
AND ($5::release_season_t IS NULL OR release_season = $5::release_season_t)
|
|
|
|
LIMIT COALESCE($7::int, 100) -- 100 is default limit
|
|
OFFSET $6::int
|
|
`
|
|
|
|
type SearchTitlesParams struct {
|
|
Word *string `json:"word"`
|
|
Status *TitleStatusT `json:"status"`
|
|
Rating *float64 `json:"rating"`
|
|
ReleaseYear *int32 `json:"release_year"`
|
|
ReleaseSeason *ReleaseSeasonT `json:"release_season"`
|
|
Offset *int32 `json:"offset"`
|
|
Limit *int32 `json:"limit"`
|
|
}
|
|
|
|
func (q *Queries) SearchTitles(ctx context.Context, arg SearchTitlesParams) ([]Title, error) {
|
|
rows, err := q.db.Query(ctx, searchTitles,
|
|
arg.Word,
|
|
arg.Status,
|
|
arg.Rating,
|
|
arg.ReleaseYear,
|
|
arg.ReleaseSeason,
|
|
arg.Offset,
|
|
arg.Limit,
|
|
)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer rows.Close()
|
|
var items []Title
|
|
for rows.Next() {
|
|
var i Title
|
|
if err := rows.Scan(
|
|
&i.ID,
|
|
&i.TitleNames,
|
|
&i.StudioID,
|
|
&i.PosterID,
|
|
&i.TitleStatus,
|
|
&i.Rating,
|
|
&i.RatingCount,
|
|
&i.ReleaseYear,
|
|
&i.ReleaseSeason,
|
|
&i.Season,
|
|
&i.EpisodesAired,
|
|
&i.EpisodesAll,
|
|
&i.EpisodesLen,
|
|
); err != nil {
|
|
return nil, err
|
|
}
|
|
items = append(items, i)
|
|
}
|
|
if err := rows.Err(); err != nil {
|
|
return nil, err
|
|
}
|
|
return items, nil
|
|
}
|