harness.BuildContext reads the household context in one read transaction: today and its weekday in the household timezone, Regulars (cuisine, method, minutes, favorite), the Quest log, the last 60 passed Side quests and the plans of the last four ISO weeks. A character budget trims the oldest plans first, then the oldest passes, never Regulars; a budget too small for what is never trimmed is an error. Maestro task 2f54cec9-ec41-42af-b8ee-9e24b8c63057 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
89 lines
2.1 KiB
Go
89 lines
2.1 KiB
Go
// Code generated by sqlc. DO NOT EDIT.
|
|
// versions:
|
|
// sqlc v1.31.1
|
|
// source: household_context.sql
|
|
|
|
package db
|
|
|
|
import (
|
|
"context"
|
|
)
|
|
|
|
const listPlannedDinners = `-- name: ListPlannedDinners :many
|
|
SELECT plan_days.date, dinners.name
|
|
FROM plan_days
|
|
JOIN dinners ON dinners.id = plan_days.dinner_id
|
|
WHERE plan_days.date >= ?1 AND plan_days.date < ?2
|
|
ORDER BY plan_days.date, plan_days.id
|
|
`
|
|
|
|
type ListPlannedDinnersParams struct {
|
|
FromDate string
|
|
ToDate string
|
|
}
|
|
|
|
type ListPlannedDinnersRow struct {
|
|
Date string
|
|
Name string
|
|
}
|
|
|
|
// The planned dinners dated from from_date up to but not including
|
|
// to_date, oldest first. Days with no dinner are left out.
|
|
func (q *Queries) ListPlannedDinners(ctx context.Context, arg ListPlannedDinnersParams) ([]ListPlannedDinnersRow, error) {
|
|
rows, err := q.db.QueryContext(ctx, listPlannedDinners, arg.FromDate, arg.ToDate)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer rows.Close()
|
|
var items []ListPlannedDinnersRow
|
|
for rows.Next() {
|
|
var i ListPlannedDinnersRow
|
|
if err := rows.Scan(&i.Date, &i.Name); 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 listRecentDeclinedNames = `-- name: ListRecentDeclinedNames :many
|
|
|
|
SELECT dinners.name
|
|
FROM suggestions
|
|
JOIN dinners ON dinners.id = suggestions.dinner_id
|
|
WHERE suggestions.status = 'declined'
|
|
ORDER BY suggestions.decided_at DESC, suggestions.id DESC
|
|
LIMIT ?
|
|
`
|
|
|
|
// Reads for the AI household context block (internal/ai/harness).
|
|
// The names of the most recently declined suggestions, newest first.
|
|
func (q *Queries) ListRecentDeclinedNames(ctx context.Context, limit int64) ([]string, error) {
|
|
rows, err := q.db.QueryContext(ctx, listRecentDeclinedNames, limit)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer rows.Close()
|
|
var items []string
|
|
for rows.Next() {
|
|
var name string
|
|
if err := rows.Scan(&name); err != nil {
|
|
return nil, err
|
|
}
|
|
items = append(items, name)
|
|
}
|
|
if err := rows.Close(); err != nil {
|
|
return nil, err
|
|
}
|
|
if err := rows.Err(); err != nil {
|
|
return nil, err
|
|
}
|
|
return items, nil
|
|
}
|