-- name: SelectChapter :one
SELECT * FROM story_chapter WHERE id=$1::TEXT LIMIT 1;

-- name: SelectChapters :many
SELECT * FROM story_chapter
WHERE (sqlx.arg(story_id)::TEXT == '' OR story_id = @story_id::TEXT)
ORDER BY created_date
LIMIT NULLIF(@limit_size::INT, 0);

-- name: InsertChapter :exec
INSERT INTO story_chapter (id, story_id, title, author, source, created_date, fictional_date, edited_date, comment_mode, comments_locked)
VALUES (
    @id::TEXT, @story_id::TEXT, @title::TEXT, @author::TEXT, @source::TEXT,
    @created_date::TIMESTAMP, @fictional_date::TIMESTAMP, @edited_date::TIMESTAMP,
    @comment_mode::TEXT, @comments_locked::BOOLEAN
);

-- name: UpdateChapterStoryID :exec
UPDATE story_chapter
SET story_id = @story_id::TEXT
WHERE id = @id;

-- name: UpdateChapter :exec
UPDATE story_chapter
SET title = @title,
    source = @source,
    fictional_date = @fictional_date,
    comment_mode = @comment_mode,
    comments_locked = @comments_locked
WHERE id = @id;

-- name: DeleteChapter :exec
DELETE FROM story_chapter WHERE id=$1;

-- name: DeleteChaptersByStoryID :exec
DELETE FROM story_chapter WHERE story_id=$1;
