Files
goyomi/internal/db/queries/chapter.sql.go
T
achmad 95cab106d8 feat: Phase 2 — database layer
- PostgreSQL schema: sources, manga, chapters, pages, source_meta with indexes
- golang-migrate runner with embedded SQL via go:embed (pgx5:// scheme)
- sqlc-generated type-safe queries for all tables (pgx/v5 native)
- Config package with all env vars including TTL durations
- Wire DB init and config into cmd/server/main.go
2026-05-10 21:32:40 +07:00

154 lines
4.0 KiB
Go

// Code generated by sqlc. DO NOT EDIT.
// versions:
// sqlc v1.31.1
// source: chapter.sql
package queries
import (
"context"
)
const getChapterByID = `-- name: GetChapterByID :one
SELECT id, manga_id, url, name, date_upload, chapter_number, scanlator, source_order, is_read, is_bookmarked, last_page_read, last_read_at, fetched_at, real_url, is_downloaded, page_count FROM chapters WHERE id = $1
`
func (q *Queries) GetChapterByID(ctx context.Context, id int32) (Chapter, error) {
row := q.db.QueryRow(ctx, getChapterByID, id)
var i Chapter
err := row.Scan(
&i.ID,
&i.MangaID,
&i.Url,
&i.Name,
&i.DateUpload,
&i.ChapterNumber,
&i.Scanlator,
&i.SourceOrder,
&i.IsRead,
&i.IsBookmarked,
&i.LastPageRead,
&i.LastReadAt,
&i.FetchedAt,
&i.RealUrl,
&i.IsDownloaded,
&i.PageCount,
)
return i, err
}
const listChaptersByManga = `-- name: ListChaptersByManga :many
SELECT id, manga_id, url, name, date_upload, chapter_number, scanlator, source_order, is_read, is_bookmarked, last_page_read, last_read_at, fetched_at, real_url, is_downloaded, page_count FROM chapters WHERE manga_id = $1 ORDER BY source_order
`
func (q *Queries) ListChaptersByManga(ctx context.Context, mangaID int32) ([]Chapter, error) {
rows, err := q.db.Query(ctx, listChaptersByManga, mangaID)
if err != nil {
return nil, err
}
defer rows.Close()
var items []Chapter
for rows.Next() {
var i Chapter
if err := rows.Scan(
&i.ID,
&i.MangaID,
&i.Url,
&i.Name,
&i.DateUpload,
&i.ChapterNumber,
&i.Scanlator,
&i.SourceOrder,
&i.IsRead,
&i.IsBookmarked,
&i.LastPageRead,
&i.LastReadAt,
&i.FetchedAt,
&i.RealUrl,
&i.IsDownloaded,
&i.PageCount,
); err != nil {
return nil, err
}
items = append(items, i)
}
if err := rows.Err(); err != nil {
return nil, err
}
return items, nil
}
const updateChapterFetchedAt = `-- name: UpdateChapterFetchedAt :exec
UPDATE chapters SET fetched_at = $2 WHERE id = $1
`
type UpdateChapterFetchedAtParams struct {
ID int32 `db:"id" json:"id"`
FetchedAt int64 `db:"fetched_at" json:"fetched_at"`
}
func (q *Queries) UpdateChapterFetchedAt(ctx context.Context, arg UpdateChapterFetchedAtParams) error {
_, err := q.db.Exec(ctx, updateChapterFetchedAt, arg.ID, arg.FetchedAt)
return err
}
const upsertChapter = `-- name: UpsertChapter :one
INSERT INTO chapters (
manga_id, url, name, date_upload, chapter_number, scanlator, source_order, fetched_at
) VALUES (
$1, $2, $3, $4, $5, $6, $7, $8
)
ON CONFLICT (manga_id, url) DO UPDATE
SET name = EXCLUDED.name,
date_upload = EXCLUDED.date_upload,
chapter_number = EXCLUDED.chapter_number,
scanlator = EXCLUDED.scanlator,
source_order = EXCLUDED.source_order,
fetched_at = EXCLUDED.fetched_at
RETURNING id, manga_id, url, name, date_upload, chapter_number, scanlator, source_order, is_read, is_bookmarked, last_page_read, last_read_at, fetched_at, real_url, is_downloaded, page_count
`
type UpsertChapterParams struct {
MangaID int32 `db:"manga_id" json:"manga_id"`
Url string `db:"url" json:"url"`
Name string `db:"name" json:"name"`
DateUpload int64 `db:"date_upload" json:"date_upload"`
ChapterNumber float32 `db:"chapter_number" json:"chapter_number"`
Scanlator *string `db:"scanlator" json:"scanlator"`
SourceOrder int32 `db:"source_order" json:"source_order"`
FetchedAt int64 `db:"fetched_at" json:"fetched_at"`
}
func (q *Queries) UpsertChapter(ctx context.Context, arg UpsertChapterParams) (Chapter, error) {
row := q.db.QueryRow(ctx, upsertChapter,
arg.MangaID,
arg.Url,
arg.Name,
arg.DateUpload,
arg.ChapterNumber,
arg.Scanlator,
arg.SourceOrder,
arg.FetchedAt,
)
var i Chapter
err := row.Scan(
&i.ID,
&i.MangaID,
&i.Url,
&i.Name,
&i.DateUpload,
&i.ChapterNumber,
&i.Scanlator,
&i.SourceOrder,
&i.IsRead,
&i.IsBookmarked,
&i.LastPageRead,
&i.LastReadAt,
&i.FetchedAt,
&i.RealUrl,
&i.IsDownloaded,
&i.PageCount,
)
return i, err
}