// Code generated by sqlc. DO NOT EDIT. // versions: // sqlc v1.31.1 // source: dinners.sql package db import ( "context" "database/sql" ) const archiveDinner = `-- name: ArchiveDinner :one UPDATE dinners SET status = 'archived', updated_by = ?, updated_at = ? WHERE id = ? RETURNING id, name, normalized_name, status, origin, method, minutes_total, difficulty, cuisine, is_favorite, recipe_id, photo_id, grounding_status, updated_by, created_at, updated_at, recipe_url, grounding_error ` type ArchiveDinnerParams struct { UpdatedBy sql.NullString UpdatedAt string ID string } // An unknown id returns sql.ErrNoRows. func (q *Queries) ArchiveDinner(ctx context.Context, arg ArchiveDinnerParams) (Dinner, error) { row := q.db.QueryRowContext(ctx, archiveDinner, arg.UpdatedBy, arg.UpdatedAt, arg.ID) var i Dinner err := row.Scan( &i.ID, &i.Name, &i.NormalizedName, &i.Status, &i.Origin, &i.Method, &i.MinutesTotal, &i.Difficulty, &i.Cuisine, &i.IsFavorite, &i.RecipeID, &i.PhotoID, &i.GroundingStatus, &i.UpdatedBy, &i.CreatedAt, &i.UpdatedAt, &i.RecipeUrl, &i.GroundingError, ) return i, err } const countRegularDinners = `-- name: CountRegularDinners :one SELECT COUNT(*) FROM dinners WHERE status = 'regular' ` // How many Regulars the household has; archived dinners are not counted. func (q *Queries) CountRegularDinners(ctx context.Context) (int64, error) { row := q.db.QueryRowContext(ctx, countRegularDinners) var count int64 err := row.Scan(&count) return count, err } const createDinner = `-- name: CreateDinner :one INSERT INTO dinners ( id, name, normalized_name, status, origin, method, minutes_total, difficulty, cuisine, is_favorite, recipe_id, recipe_url, photo_id, grounding_status, updated_by, created_at, updated_at ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? ) RETURNING id, name, normalized_name, status, origin, method, minutes_total, difficulty, cuisine, is_favorite, recipe_id, photo_id, grounding_status, updated_by, created_at, updated_at, recipe_url, grounding_error ` type CreateDinnerParams struct { ID string Name string NormalizedName string Status string Origin string Method sql.NullString MinutesTotal sql.NullInt64 Difficulty sql.NullString Cuisine sql.NullString IsFavorite int64 RecipeID sql.NullString RecipeUrl sql.NullString PhotoID sql.NullString GroundingStatus string UpdatedBy sql.NullString CreatedAt string UpdatedAt string } func (q *Queries) CreateDinner(ctx context.Context, arg CreateDinnerParams) (Dinner, error) { row := q.db.QueryRowContext(ctx, createDinner, arg.ID, arg.Name, arg.NormalizedName, arg.Status, arg.Origin, arg.Method, arg.MinutesTotal, arg.Difficulty, arg.Cuisine, arg.IsFavorite, arg.RecipeID, arg.RecipeUrl, arg.PhotoID, arg.GroundingStatus, arg.UpdatedBy, arg.CreatedAt, arg.UpdatedAt, ) var i Dinner err := row.Scan( &i.ID, &i.Name, &i.NormalizedName, &i.Status, &i.Origin, &i.Method, &i.MinutesTotal, &i.Difficulty, &i.Cuisine, &i.IsFavorite, &i.RecipeID, &i.PhotoID, &i.GroundingStatus, &i.UpdatedBy, &i.CreatedAt, &i.UpdatedAt, &i.RecipeUrl, &i.GroundingError, ) return i, err } const failOrphanedPendingDinnerGroundings = `-- name: FailOrphanedPendingDinnerGroundings :execrows UPDATE dinners SET grounding_status = 'failed', grounding_error = ?1, updated_at = ?2 WHERE grounding_status = 'pending' AND NOT EXISTS ( SELECT 1 FROM jobs WHERE jobs.kind = ?3 AND jobs.status IN ('queued', 'running') AND json_extract(jobs.payload, '$.dinner_id') = dinners.id ) ` type FailOrphanedPendingDinnerGroundingsParams struct { GroundingError sql.NullString UpdatedAt string Kind string } // 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. func (q *Queries) FailOrphanedPendingDinnerGroundings(ctx context.Context, arg FailOrphanedPendingDinnerGroundingsParams) (int64, error) { result, err := q.db.ExecContext(ctx, failOrphanedPendingDinnerGroundings, arg.GroundingError, arg.UpdatedAt, arg.Kind) if err != nil { return 0, err } return result.RowsAffected() } const failPendingDinnerGrounding = `-- name: FailPendingDinnerGrounding :execrows UPDATE dinners SET grounding_status = 'failed', grounding_error = ?, updated_at = ? WHERE id = ? AND grounding_status = 'pending' AND normalized_name = ? ` type FailPendingDinnerGroundingParams struct { GroundingError sql.NullString UpdatedAt string ID string NormalizedName string } // Records why the background grounding of a dinner still pending under the // normalized name it was grounded for failed; a dinner grounded some other // way or renamed meanwhile is left as it is (0 rows). func (q *Queries) FailPendingDinnerGrounding(ctx context.Context, arg FailPendingDinnerGroundingParams) (int64, error) { result, err := q.db.ExecContext(ctx, failPendingDinnerGrounding, arg.GroundingError, arg.UpdatedAt, arg.ID, arg.NormalizedName, ) if err != nil { return 0, err } return result.RowsAffected() } const getDinner = `-- name: GetDinner :one SELECT id, name, normalized_name, status, origin, method, minutes_total, difficulty, cuisine, is_favorite, recipe_id, photo_id, grounding_status, updated_by, created_at, updated_at, recipe_url, grounding_error FROM dinners WHERE id = ? ` func (q *Queries) GetDinner(ctx context.Context, id string) (Dinner, error) { row := q.db.QueryRowContext(ctx, getDinner, id) var i Dinner err := row.Scan( &i.ID, &i.Name, &i.NormalizedName, &i.Status, &i.Origin, &i.Method, &i.MinutesTotal, &i.Difficulty, &i.Cuisine, &i.IsFavorite, &i.RecipeID, &i.PhotoID, &i.GroundingStatus, &i.UpdatedBy, &i.CreatedAt, &i.UpdatedAt, &i.RecipeUrl, &i.GroundingError, ) return i, err } const groundDinner = `-- name: GroundDinner :one UPDATE dinners SET recipe_id = ?, photo_id = ?, method = ?, minutes_total = ?, difficulty = ?, grounding_status = ?, grounding_error = NULL, updated_by = ?, updated_at = ? WHERE id = ? RETURNING id, name, normalized_name, status, origin, method, minutes_total, difficulty, cuisine, is_favorite, recipe_id, photo_id, grounding_status, updated_by, created_at, updated_at, recipe_url, grounding_error ` type GroundDinnerParams struct { RecipeID sql.NullString PhotoID sql.NullString Method sql.NullString MinutesTotal sql.NullInt64 Difficulty sql.NullString GroundingStatus string UpdatedBy sql.NullString UpdatedAt string ID string } // Records a dinner's grounding (grounded or manual) and clears any // grounding_error. An unknown id returns sql.ErrNoRows. func (q *Queries) GroundDinner(ctx context.Context, arg GroundDinnerParams) (Dinner, error) { row := q.db.QueryRowContext(ctx, groundDinner, arg.RecipeID, arg.PhotoID, arg.Method, arg.MinutesTotal, arg.Difficulty, arg.GroundingStatus, arg.UpdatedBy, arg.UpdatedAt, arg.ID, ) var i Dinner err := row.Scan( &i.ID, &i.Name, &i.NormalizedName, &i.Status, &i.Origin, &i.Method, &i.MinutesTotal, &i.Difficulty, &i.Cuisine, &i.IsFavorite, &i.RecipeID, &i.PhotoID, &i.GroundingStatus, &i.UpdatedBy, &i.CreatedAt, &i.UpdatedAt, &i.RecipeUrl, &i.GroundingError, ) return i, err } const groundPendingDinner = `-- name: GroundPendingDinner :execrows UPDATE dinners SET recipe_id = ?, photo_id = ?, method = ?, minutes_total = ?, difficulty = ?, grounding_status = 'grounded', grounding_error = NULL, updated_at = ? WHERE id = ? AND grounding_status = 'pending' AND normalized_name = ? ` type GroundPendingDinnerParams struct { RecipeID sql.NullString PhotoID sql.NullString Method sql.NullString MinutesTotal sql.NullInt64 Difficulty sql.NullString UpdatedAt string ID string NormalizedName string } // Records the background grounding of a dinner still pending under the // normalized name it was grounded for; a dinner grounded some other way or // renamed meanwhile is left as it is (0 rows). func (q *Queries) GroundPendingDinner(ctx context.Context, arg GroundPendingDinnerParams) (int64, error) { result, err := q.db.ExecContext(ctx, groundPendingDinner, arg.RecipeID, arg.PhotoID, arg.Method, arg.MinutesTotal, arg.Difficulty, arg.UpdatedAt, arg.ID, arg.NormalizedName, ) if err != nil { return 0, err } return result.RowsAffected() } const listDinnersByStatus = `-- name: ListDinnersByStatus :many SELECT id, name, normalized_name, status, origin, method, minutes_total, difficulty, cuisine, is_favorite, recipe_id, photo_id, grounding_status, updated_by, created_at, updated_at, recipe_url, grounding_error FROM dinners WHERE status = ? ORDER BY normalized_name, id ` func (q *Queries) ListDinnersByStatus(ctx context.Context, status string) ([]Dinner, error) { rows, err := q.db.QueryContext(ctx, listDinnersByStatus, status) if err != nil { return nil, err } defer rows.Close() var items []Dinner for rows.Next() { var i Dinner if err := rows.Scan( &i.ID, &i.Name, &i.NormalizedName, &i.Status, &i.Origin, &i.Method, &i.MinutesTotal, &i.Difficulty, &i.Cuisine, &i.IsFavorite, &i.RecipeID, &i.PhotoID, &i.GroundingStatus, &i.UpdatedBy, &i.CreatedAt, &i.UpdatedAt, &i.RecipeUrl, &i.GroundingError, ); err != nil { return nil, err } items = append(items, i) } if err := rows.Close(); err != nil { return nil, err } if err := rows.Err(); err != nil { return nil, err } return items, nil } const listUnarchivedDinners = `-- name: ListUnarchivedDinners :many SELECT id, name, normalized_name, status, origin, method, minutes_total, difficulty, cuisine, is_favorite, recipe_id, photo_id, grounding_status, updated_by, created_at, updated_at, recipe_url, grounding_error FROM dinners WHERE status <> 'archived' ORDER BY id ` // Every dinner a new or renamed dinner must not repeat. func (q *Queries) ListUnarchivedDinners(ctx context.Context) ([]Dinner, error) { rows, err := q.db.QueryContext(ctx, listUnarchivedDinners) if err != nil { return nil, err } defer rows.Close() var items []Dinner for rows.Next() { var i Dinner if err := rows.Scan( &i.ID, &i.Name, &i.NormalizedName, &i.Status, &i.Origin, &i.Method, &i.MinutesTotal, &i.Difficulty, &i.Cuisine, &i.IsFavorite, &i.RecipeID, &i.PhotoID, &i.GroundingStatus, &i.UpdatedBy, &i.CreatedAt, &i.UpdatedAt, &i.RecipeUrl, &i.GroundingError, ); err != nil { return nil, err } items = append(items, i) } if err := rows.Close(); err != nil { return nil, err } if err := rows.Err(); err != nil { return nil, err } return items, nil } const setDinnerFavorite = `-- name: SetDinnerFavorite :one UPDATE dinners SET is_favorite = ?, updated_by = ?, updated_at = ? WHERE id = ? RETURNING id, name, normalized_name, status, origin, method, minutes_total, difficulty, cuisine, is_favorite, recipe_id, photo_id, grounding_status, updated_by, created_at, updated_at, recipe_url, grounding_error ` type SetDinnerFavoriteParams struct { IsFavorite int64 UpdatedBy sql.NullString UpdatedAt string ID string } // An unknown id returns sql.ErrNoRows. func (q *Queries) SetDinnerFavorite(ctx context.Context, arg SetDinnerFavoriteParams) (Dinner, error) { row := q.db.QueryRowContext(ctx, setDinnerFavorite, arg.IsFavorite, arg.UpdatedBy, arg.UpdatedAt, arg.ID, ) var i Dinner err := row.Scan( &i.ID, &i.Name, &i.NormalizedName, &i.Status, &i.Origin, &i.Method, &i.MinutesTotal, &i.Difficulty, &i.Cuisine, &i.IsFavorite, &i.RecipeID, &i.PhotoID, &i.GroundingStatus, &i.UpdatedBy, &i.CreatedAt, &i.UpdatedAt, &i.RecipeUrl, &i.GroundingError, ) return i, err } const toggleDinnerFavorite = `-- name: ToggleDinnerFavorite :one UPDATE dinners SET is_favorite = 1 - is_favorite, updated_by = ?, updated_at = ? WHERE id = ? RETURNING id, name, normalized_name, status, origin, method, minutes_total, difficulty, cuisine, is_favorite, recipe_id, photo_id, grounding_status, updated_by, created_at, updated_at, recipe_url, grounding_error ` type ToggleDinnerFavoriteParams struct { UpdatedBy sql.NullString UpdatedAt string ID string } // An unknown id returns sql.ErrNoRows. func (q *Queries) ToggleDinnerFavorite(ctx context.Context, arg ToggleDinnerFavoriteParams) (Dinner, error) { row := q.db.QueryRowContext(ctx, toggleDinnerFavorite, arg.UpdatedBy, arg.UpdatedAt, arg.ID) var i Dinner err := row.Scan( &i.ID, &i.Name, &i.NormalizedName, &i.Status, &i.Origin, &i.Method, &i.MinutesTotal, &i.Difficulty, &i.Cuisine, &i.IsFavorite, &i.RecipeID, &i.PhotoID, &i.GroundingStatus, &i.UpdatedBy, &i.CreatedAt, &i.UpdatedAt, &i.RecipeUrl, &i.GroundingError, ) return i, err } const updateDinner = `-- name: UpdateDinner :one UPDATE dinners SET name = ?, normalized_name = ?, status = ?, origin = ?, method = ?, minutes_total = ?, difficulty = ?, cuisine = ?, recipe_id = ?, recipe_url = ?, photo_id = ?, grounding_status = ?, updated_by = ?, updated_at = ? WHERE id = ? RETURNING id, name, normalized_name, status, origin, method, minutes_total, difficulty, cuisine, is_favorite, recipe_id, photo_id, grounding_status, updated_by, created_at, updated_at, recipe_url, grounding_error ` type UpdateDinnerParams struct { Name string NormalizedName string Status string Origin string Method sql.NullString MinutesTotal sql.NullInt64 Difficulty sql.NullString Cuisine sql.NullString RecipeID sql.NullString RecipeUrl sql.NullString PhotoID sql.NullString GroundingStatus string UpdatedBy sql.NullString UpdatedAt string ID string } // An unknown id returns sql.ErrNoRows. func (q *Queries) UpdateDinner(ctx context.Context, arg UpdateDinnerParams) (Dinner, error) { row := q.db.QueryRowContext(ctx, updateDinner, arg.Name, arg.NormalizedName, arg.Status, arg.Origin, arg.Method, arg.MinutesTotal, arg.Difficulty, arg.Cuisine, arg.RecipeID, arg.RecipeUrl, arg.PhotoID, arg.GroundingStatus, arg.UpdatedBy, arg.UpdatedAt, arg.ID, ) var i Dinner err := row.Scan( &i.ID, &i.Name, &i.NormalizedName, &i.Status, &i.Origin, &i.Method, &i.MinutesTotal, &i.Difficulty, &i.Cuisine, &i.IsFavorite, &i.RecipeID, &i.PhotoID, &i.GroundingStatus, &i.UpdatedBy, &i.CreatedAt, &i.UpdatedAt, &i.RecipeUrl, &i.GroundingError, ) return i, err }