At boot, after the job runner fails the jobs a previous process left running, FailInterruptedGroundings sets every dinner still pending with no ground_dinner job queued or running to failed (interrupted). A crash mid-job, or between saving a dinner and enqueuing its job, no longer leaves the dinner pending forever. A search failure on recipe-candidates or ground now logs only the reason code search_failed, never the wrapped error, which may quote the provider; the response stays redacted. When the grounding job cannot be enqueued, POST /dinners answers 201 with the saved dinner failed (grounding_error) and grounding_job_id null, instead of a 500 that hid the dinner it had created. Grounding a candidate or link by hand runs under a 90-second deadline (fetch, photo, normalize_recipe); past it the request answers 504 ground_timeout and the dinner is unchanged. Maestro task: 0cbaa5bf-8be4-4cbd-aab2-891e7f1bc2b5 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
114 lines
6.6 KiB
Go
114 lines
6.6 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)
|
|
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
|
|
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 dinner still pending whose grounding job is no longer queued
|
|
// or running: the process stopped before the job, or before its handler
|
|
// recorded a result. Run at boot, after the job runner fails the jobs a
|
|
// previous process left running.
|
|
FailOrphanedPendingDinnerGroundings(ctx context.Context, arg FailOrphanedPendingDinnerGroundingsParams) (int64, error)
|
|
// Records why the background grounding of a dinner still pending failed; a
|
|
// dinner grounded some other way 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)
|
|
// Returns sql.ErrNoRows until the row exists.
|
|
GetAISettings(ctx context.Context) (AiSetting, 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)
|
|
// Records a dinner's grounding (grounded or manual) and clears any
|
|
// grounding_error. An unknown id returns sql.ErrNoRows.
|
|
GroundDinner(ctx context.Context, arg GroundDinnerParams) (Dinner, error)
|
|
// Records the background grounding of a dinner still pending; a dinner
|
|
// grounded some other way meanwhile is left as it is (0 rows).
|
|
GroundPendingDinner(ctx context.Context, arg GroundPendingDinnerParams) (int64, 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.
|
|
ListUnarchivedDinners(ctx context.Context) ([]Dinner, 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)
|
|
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)
|