POST /api/v1/suggestions/batches enqueues a suggestion_batch job that runs
suggest_side_quests through the harness, grounds the survivors with
recipes.Grounder.GroundMany (dropping those no recipe grounds) and stores
each as a dinner (status suggested, origin side_quest) with a pending
suggestion holding its reason and cited_regular_ids. Only one batch is
pending or running at a time; a POST while one is active returns it.
GET /api/v1/suggestions/deck lists pending suggestions oldest first with
the dinner's name, photo, difficulty and the reason. POST
/api/v1/suggestions/{id}/accept moves the dinner to the Quest log; /decline
records the Pass and archives the dinner, whose name every later batch
reads as declined. Both are idempotent and 409 on the opposite decision.
A decision leaving fewer than 5 in the deck starts a replenish batch
unless one is already pending or running. Batches left unfinished by a
restart are failed at boot so they never block the next.
Task: b4f2558c-227f-4627-852b-be5aa190242a
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
163 lines
9.9 KiB
Go
163 lines
9.9 KiB
Go
// Code generated by sqlc. DO NOT EDIT.
|
|
// versions:
|
|
// sqlc v1.31.1
|
|
|
|
package db
|
|
|
|
import (
|
|
"context"
|
|
"database/sql"
|
|
)
|
|
|
|
type Querier interface {
|
|
// An unknown id returns sql.ErrNoRows.
|
|
ArchiveDinner(ctx context.Context, arg ArchiveDinnerParams) (Dinner, error)
|
|
// Marks the oldest queued job running and returns it. Returns sql.ErrNoRows
|
|
// when no job is queued.
|
|
ClaimNextJob(ctx context.Context, now sql.NullString) (Job, error)
|
|
// Drops references to the runs created before the cutoff, so the purge
|
|
// can delete them.
|
|
ClearSuggestionBatchAIRunsBefore(ctx context.Context, cutoff string) (int64, error)
|
|
// Drops references to the runs created before the cutoff, so the purge
|
|
// can delete them.
|
|
ClearWeekPlanAIRunsBefore(ctx context.Context, cutoff string) (int64, error)
|
|
// How many suggestions ListDeck returns.
|
|
CountDeck(ctx context.Context) (int64, error)
|
|
// How many Regulars the household has; archived dinners are not counted.
|
|
CountRegularDinners(ctx context.Context) (int64, error)
|
|
CreateAIRun(ctx context.Context, arg CreateAIRunParams) error
|
|
CreateDinner(ctx context.Context, arg CreateDinnerParams) (Dinner, error)
|
|
CreateJob(ctx context.Context, arg CreateJobParams) error
|
|
// A recipe the household typed in. Its source_url is a mealquest:manual:
|
|
// URN rather than a page, so it never matches a fetched page.
|
|
CreateManualRecipe(ctx context.Context, arg CreateManualRecipeParams) (Recipe, error)
|
|
CreatePhoto(ctx context.Context, arg CreatePhotoParams) (Photo, error)
|
|
CreateRecipeIngredient(ctx context.Context, arg CreateRecipeIngredientParams) error
|
|
CreateRecipeStep(ctx context.Context, arg CreateRecipeStepParams) error
|
|
CreateSuggestion(ctx context.Context, arg CreateSuggestionParams) error
|
|
CreateSuggestionBatch(ctx context.Context, arg CreateSuggestionBatchParams) (SuggestionBatch, error)
|
|
// Records the household's decision on a pending suggestion; one already
|
|
// decided is left as it is (0 rows).
|
|
DecideSuggestion(ctx context.Context, arg DecideSuggestionParams) (int64, error)
|
|
DeleteAIRunsBefore(ctx context.Context, cutoff string) (int64, error)
|
|
DeleteRecipeIngredients(ctx context.Context, recipeID string) error
|
|
DeleteRecipeSteps(ctx context.Context, recipeID string) error
|
|
FailJob(ctx context.Context, arg FailJobParams) (int64, error)
|
|
// Fails every unarchived dinner still pending whose grounding job for its
|
|
// current grounding_revision is no longer queued or running: the process
|
|
// stopped before the job, or before its handler recorded a result. An
|
|
// archived dinner is left as it is; archiving stopped its grounding. Run at
|
|
// boot, after the job runner fails the jobs a previous process left running.
|
|
FailOrphanedPendingDinnerGroundings(ctx context.Context, arg FailOrphanedPendingDinnerGroundingsParams) (int64, error)
|
|
// Fails every batch still pending or running whose job is no longer queued
|
|
// or running: the process stopped before enqueuing the job or before its
|
|
// handler recorded a result. Run at boot, after the job runner fails the
|
|
// jobs a previous process left running.
|
|
FailOrphanedSuggestionBatches(ctx context.Context, arg FailOrphanedSuggestionBatchesParams) (int64, error)
|
|
// Records why the background grounding of an unarchived dinner still
|
|
// pending at the grounding_revision it was grounded for failed; a dinner
|
|
// grounded some other way, renamed or archived meanwhile is left as it is
|
|
// (0 rows).
|
|
FailPendingDinnerGrounding(ctx context.Context, arg FailPendingDinnerGroundingParams) (int64, error)
|
|
// Fails every job left running, at boot before any worker starts.
|
|
FailRunningJobs(ctx context.Context, arg FailRunningJobsParams) (int64, error)
|
|
// Records a pending or running batch as done or failed; a batch already
|
|
// finished is left as it is (0 rows).
|
|
FinishSuggestionBatch(ctx context.Context, arg FinishSuggestionBatchParams) (int64, error)
|
|
// Returns sql.ErrNoRows until the row exists.
|
|
GetAISettings(ctx context.Context) (AiSetting, error)
|
|
// The batch still pending or running, oldest first. Returns sql.ErrNoRows
|
|
// when there is none.
|
|
GetActiveSuggestionBatch(ctx context.Context) (SuggestionBatch, error)
|
|
// Returns sql.ErrNoRows until the row exists.
|
|
GetChatSettings(ctx context.Context) (ChatSetting, error)
|
|
GetDinner(ctx context.Context, id string) (Dinner, error)
|
|
// Returns sql.ErrNoRows until the row exists.
|
|
GetHouseholdSettings(ctx context.Context) (HouseholdSetting, error)
|
|
// Returns sql.ErrNoRows until the row exists.
|
|
GetIntegrationsGoogle(ctx context.Context) (IntegrationsGoogle, error)
|
|
GetJob(ctx context.Context, id string) (Job, error)
|
|
GetPhoto(ctx context.Context, id string) (Photo, error)
|
|
// Finds stored image bytes by content hash. The schema does not make sha256
|
|
// unique, so the earliest-created (lowest id) match is returned.
|
|
GetPhotoBySHA256(ctx context.Context, sha256 string) (Photo, error)
|
|
GetRecipe(ctx context.Context, id string) (Recipe, error)
|
|
GetRecipeBySourceURL(ctx context.Context, sourceUrl string) (Recipe, error)
|
|
// Returns sql.ErrNoRows until the row exists.
|
|
GetRecipeSearchSettings(ctx context.Context) (RecipeSearchSetting, error)
|
|
// A suggestion with its dinner. Returns sql.ErrNoRows for an unknown id.
|
|
GetSuggestion(ctx context.Context, id string) (GetSuggestionRow, error)
|
|
// The id of the job that runs batch batch_id.
|
|
GetSuggestionBatchJobID(ctx context.Context, arg GetSuggestionBatchJobIDParams) (string, error)
|
|
// Records a dinner's grounding by hand (grounded or manual) and clears any
|
|
// grounding_error and pasted recipe_url: the recipe chosen replaces the
|
|
// link. It writes only an unarchived dinner still as it was observed
|
|
// before grounding (same name, normalized_name, grounding_status,
|
|
// grounding_revision and recipe_id), so a dinner renamed, archived or
|
|
// grounded some other way meanwhile is left as it is. That dinner, or an
|
|
// unknown id, returns sql.ErrNoRows. A method, minutes_total or difficulty
|
|
// no longer as observed is kept: a member edited it while it was grounding.
|
|
GroundDinner(ctx context.Context, arg GroundDinnerParams) (Dinner, error)
|
|
// Records the background grounding of an unarchived dinner still pending at
|
|
// the grounding_revision it was grounded for; a dinner grounded some other
|
|
// way, renamed or archived meanwhile is left as it is (0 rows). A method,
|
|
// minutes_total or difficulty already set is kept: a pending dinner has
|
|
// them only when a member edited them while it was grounding.
|
|
GroundPendingDinner(ctx context.Context, arg GroundPendingDinnerParams) (int64, error)
|
|
// The pending suggestions whose dinner is still suggested, oldest first,
|
|
// with their dinners.
|
|
ListDeck(ctx context.Context) ([]ListDeckRow, error)
|
|
// The name of every declined suggestion's dinner, oldest decision first.
|
|
ListDeclinedSuggestionNames(ctx context.Context) ([]string, error)
|
|
ListDinnersByStatus(ctx context.Context, status string) ([]Dinner, error)
|
|
// The planned dinners dated from from_date up to but not including
|
|
// to_date, oldest first. Days with no dinner are left out.
|
|
ListPlannedDinners(ctx context.Context, arg ListPlannedDinnersParams) ([]ListPlannedDinnersRow, error)
|
|
// Reads for the AI household context block (internal/ai/harness).
|
|
// The names of the most recently declined suggestions, newest first.
|
|
ListRecentDeclinedNames(ctx context.Context, limit int64) ([]string, error)
|
|
ListRecipeIngredients(ctx context.Context, recipeID string) ([]RecipeIngredient, error)
|
|
ListRecipeSteps(ctx context.Context, recipeID string) ([]RecipeStep, error)
|
|
// Every dinner a new or renamed dinner must not repeat, with the
|
|
// source_url of the recipe it is grounded in (NULL while it has none).
|
|
ListUnarchivedDinners(ctx context.Context) ([]ListUnarchivedDinnersRow, error)
|
|
// Moves a dinner still suggested to status (quest_log or archived),
|
|
// recording updated_by; a dinner no longer suggested is left as it is
|
|
// (0 rows).
|
|
MoveSuggestedDinner(ctx context.Context, arg MoveSuggestedDinnerParams) (int64, error)
|
|
// Stores a partial result of a running job.
|
|
PublishJobResult(ctx context.Context, arg PublishJobResultParams) (int64, error)
|
|
// An unknown id returns sql.ErrNoRows.
|
|
SetDinnerFavorite(ctx context.Context, arg SetDinnerFavoriteParams) (Dinner, error)
|
|
// Marks a pending batch running; a batch in any other status is left as
|
|
// it is (0 rows).
|
|
StartSuggestionBatch(ctx context.Context, arg StartSuggestionBatchParams) (int64, error)
|
|
SucceedJob(ctx context.Context, arg SucceedJobParams) (int64, error)
|
|
// An unknown id returns sql.ErrNoRows.
|
|
ToggleDinnerFavorite(ctx context.Context, arg ToggleDinnerFavoriteParams) (Dinner, error)
|
|
// An unknown id returns sql.ErrNoRows.
|
|
UpdateDinner(ctx context.Context, arg UpdateDinnerParams) (Dinner, error)
|
|
// Creates the single row (id 1) or replaces every column except id and
|
|
// created_at.
|
|
UpsertAISettings(ctx context.Context, arg UpsertAISettingsParams) (AiSetting, error)
|
|
// Creates the single row (id 1) or replaces every column except id and
|
|
// created_at.
|
|
UpsertChatSettings(ctx context.Context, arg UpsertChatSettingsParams) (ChatSetting, error)
|
|
// Creates the single row (id 1) or replaces every column except id and
|
|
// created_at.
|
|
UpsertHouseholdSettings(ctx context.Context, arg UpsertHouseholdSettingsParams) (HouseholdSetting, error)
|
|
// Creates the single row (id 1) or replaces every column except id and
|
|
// created_at.
|
|
UpsertIntegrationsGoogle(ctx context.Context, arg UpsertIntegrationsGoogleParams) (IntegrationsGoogle, error)
|
|
// A recipe is keyed by source_url: re-fetching the same URL updates the
|
|
// existing row and keeps its id and created_at, which the returned row
|
|
// carries. Replace its ingredients and steps in the same transaction with
|
|
// DeleteRecipeIngredients/DeleteRecipeSteps then the Create queries.
|
|
UpsertRecipe(ctx context.Context, arg UpsertRecipeParams) (Recipe, error)
|
|
// Creates the single row (id 1) or replaces every column except id and
|
|
// created_at.
|
|
UpsertRecipeSearchSettings(ctx context.Context, arg UpsertRecipeSearchSettingsParams) (RecipeSearchSetting, error)
|
|
}
|
|
|
|
var _ Querier = (*Queries)(nil)
|