Feature 02 task 4: sqlc configuration and core queries (#13)
Co-authored-by: dev_agent <dev_agent@cubecraftlabs.com> Co-committed-by: dev_agent <dev_agent@cubecraftlabs.com>
This commit was merged in pull request #13.
This commit is contained in:
@@ -0,0 +1,298 @@
|
||||
// Code generated by sqlc. DO NOT EDIT.
|
||||
// versions:
|
||||
// sqlc v1.31.1
|
||||
// source: recipes.sql
|
||||
|
||||
package db
|
||||
|
||||
import (
|
||||
"context"
|
||||
"database/sql"
|
||||
)
|
||||
|
||||
const createRecipeIngredient = `-- name: CreateRecipeIngredient :exec
|
||||
INSERT INTO recipe_ingredients (
|
||||
id, recipe_id, position, raw_text, name, qty, unit, note,
|
||||
created_at, updated_at
|
||||
) VALUES (
|
||||
?, ?, ?, ?, ?, ?, ?, ?,
|
||||
?, ?
|
||||
)
|
||||
`
|
||||
|
||||
type CreateRecipeIngredientParams struct {
|
||||
ID string
|
||||
RecipeID string
|
||||
Position int64
|
||||
RawText string
|
||||
Name sql.NullString
|
||||
Qty sql.NullString
|
||||
Unit sql.NullString
|
||||
Note sql.NullString
|
||||
CreatedAt string
|
||||
UpdatedAt string
|
||||
}
|
||||
|
||||
func (q *Queries) CreateRecipeIngredient(ctx context.Context, arg CreateRecipeIngredientParams) error {
|
||||
_, err := q.db.ExecContext(ctx, createRecipeIngredient,
|
||||
arg.ID,
|
||||
arg.RecipeID,
|
||||
arg.Position,
|
||||
arg.RawText,
|
||||
arg.Name,
|
||||
arg.Qty,
|
||||
arg.Unit,
|
||||
arg.Note,
|
||||
arg.CreatedAt,
|
||||
arg.UpdatedAt,
|
||||
)
|
||||
return err
|
||||
}
|
||||
|
||||
const createRecipeStep = `-- name: CreateRecipeStep :exec
|
||||
INSERT INTO recipe_steps (
|
||||
id, recipe_id, position, text, created_at, updated_at
|
||||
) VALUES (
|
||||
?, ?, ?, ?, ?, ?
|
||||
)
|
||||
`
|
||||
|
||||
type CreateRecipeStepParams struct {
|
||||
ID string
|
||||
RecipeID string
|
||||
Position int64
|
||||
Text string
|
||||
CreatedAt string
|
||||
UpdatedAt string
|
||||
}
|
||||
|
||||
func (q *Queries) CreateRecipeStep(ctx context.Context, arg CreateRecipeStepParams) error {
|
||||
_, err := q.db.ExecContext(ctx, createRecipeStep,
|
||||
arg.ID,
|
||||
arg.RecipeID,
|
||||
arg.Position,
|
||||
arg.Text,
|
||||
arg.CreatedAt,
|
||||
arg.UpdatedAt,
|
||||
)
|
||||
return err
|
||||
}
|
||||
|
||||
const deleteRecipeIngredients = `-- name: DeleteRecipeIngredients :exec
|
||||
DELETE FROM recipe_ingredients
|
||||
WHERE recipe_id = ?
|
||||
`
|
||||
|
||||
func (q *Queries) DeleteRecipeIngredients(ctx context.Context, recipeID string) error {
|
||||
_, err := q.db.ExecContext(ctx, deleteRecipeIngredients, recipeID)
|
||||
return err
|
||||
}
|
||||
|
||||
const deleteRecipeSteps = `-- name: DeleteRecipeSteps :exec
|
||||
DELETE FROM recipe_steps
|
||||
WHERE recipe_id = ?
|
||||
`
|
||||
|
||||
func (q *Queries) DeleteRecipeSteps(ctx context.Context, recipeID string) error {
|
||||
_, err := q.db.ExecContext(ctx, deleteRecipeSteps, recipeID)
|
||||
return err
|
||||
}
|
||||
|
||||
const getRecipe = `-- name: GetRecipe :one
|
||||
SELECT id, source_url, site_name, title, total_minutes, prep_minutes, cook_minutes, yield, raw_jsonld, fetched_at, created_at, updated_at FROM recipes
|
||||
WHERE id = ?
|
||||
`
|
||||
|
||||
func (q *Queries) GetRecipe(ctx context.Context, id string) (Recipe, error) {
|
||||
row := q.db.QueryRowContext(ctx, getRecipe, id)
|
||||
var i Recipe
|
||||
err := row.Scan(
|
||||
&i.ID,
|
||||
&i.SourceUrl,
|
||||
&i.SiteName,
|
||||
&i.Title,
|
||||
&i.TotalMinutes,
|
||||
&i.PrepMinutes,
|
||||
&i.CookMinutes,
|
||||
&i.Yield,
|
||||
&i.RawJsonld,
|
||||
&i.FetchedAt,
|
||||
&i.CreatedAt,
|
||||
&i.UpdatedAt,
|
||||
)
|
||||
return i, err
|
||||
}
|
||||
|
||||
const getRecipeBySourceURL = `-- name: GetRecipeBySourceURL :one
|
||||
SELECT id, source_url, site_name, title, total_minutes, prep_minutes, cook_minutes, yield, raw_jsonld, fetched_at, created_at, updated_at FROM recipes
|
||||
WHERE source_url = ?
|
||||
`
|
||||
|
||||
func (q *Queries) GetRecipeBySourceURL(ctx context.Context, sourceUrl string) (Recipe, error) {
|
||||
row := q.db.QueryRowContext(ctx, getRecipeBySourceURL, sourceUrl)
|
||||
var i Recipe
|
||||
err := row.Scan(
|
||||
&i.ID,
|
||||
&i.SourceUrl,
|
||||
&i.SiteName,
|
||||
&i.Title,
|
||||
&i.TotalMinutes,
|
||||
&i.PrepMinutes,
|
||||
&i.CookMinutes,
|
||||
&i.Yield,
|
||||
&i.RawJsonld,
|
||||
&i.FetchedAt,
|
||||
&i.CreatedAt,
|
||||
&i.UpdatedAt,
|
||||
)
|
||||
return i, err
|
||||
}
|
||||
|
||||
const listRecipeIngredients = `-- name: ListRecipeIngredients :many
|
||||
SELECT id, recipe_id, position, raw_text, name, qty, unit, note, created_at, updated_at FROM recipe_ingredients
|
||||
WHERE recipe_id = ?
|
||||
ORDER BY position, id
|
||||
`
|
||||
|
||||
func (q *Queries) ListRecipeIngredients(ctx context.Context, recipeID string) ([]RecipeIngredient, error) {
|
||||
rows, err := q.db.QueryContext(ctx, listRecipeIngredients, recipeID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
var items []RecipeIngredient
|
||||
for rows.Next() {
|
||||
var i RecipeIngredient
|
||||
if err := rows.Scan(
|
||||
&i.ID,
|
||||
&i.RecipeID,
|
||||
&i.Position,
|
||||
&i.RawText,
|
||||
&i.Name,
|
||||
&i.Qty,
|
||||
&i.Unit,
|
||||
&i.Note,
|
||||
&i.CreatedAt,
|
||||
&i.UpdatedAt,
|
||||
); 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 listRecipeSteps = `-- name: ListRecipeSteps :many
|
||||
SELECT id, recipe_id, position, text, created_at, updated_at FROM recipe_steps
|
||||
WHERE recipe_id = ?
|
||||
ORDER BY position, id
|
||||
`
|
||||
|
||||
func (q *Queries) ListRecipeSteps(ctx context.Context, recipeID string) ([]RecipeStep, error) {
|
||||
rows, err := q.db.QueryContext(ctx, listRecipeSteps, recipeID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
var items []RecipeStep
|
||||
for rows.Next() {
|
||||
var i RecipeStep
|
||||
if err := rows.Scan(
|
||||
&i.ID,
|
||||
&i.RecipeID,
|
||||
&i.Position,
|
||||
&i.Text,
|
||||
&i.CreatedAt,
|
||||
&i.UpdatedAt,
|
||||
); 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 upsertRecipe = `-- name: UpsertRecipe :one
|
||||
INSERT INTO recipes (
|
||||
id, source_url, site_name, title, total_minutes, prep_minutes,
|
||||
cook_minutes, yield, raw_jsonld, fetched_at, created_at, updated_at
|
||||
) VALUES (
|
||||
?, ?, ?, ?, ?, ?,
|
||||
?, ?, ?, ?, ?, ?
|
||||
)
|
||||
ON CONFLICT (source_url) DO UPDATE SET
|
||||
site_name = excluded.site_name,
|
||||
title = excluded.title,
|
||||
total_minutes = excluded.total_minutes,
|
||||
prep_minutes = excluded.prep_minutes,
|
||||
cook_minutes = excluded.cook_minutes,
|
||||
yield = excluded.yield,
|
||||
raw_jsonld = excluded.raw_jsonld,
|
||||
fetched_at = excluded.fetched_at,
|
||||
updated_at = excluded.updated_at
|
||||
RETURNING id, source_url, site_name, title, total_minutes, prep_minutes, cook_minutes, yield, raw_jsonld, fetched_at, created_at, updated_at
|
||||
`
|
||||
|
||||
type UpsertRecipeParams struct {
|
||||
ID string
|
||||
SourceUrl string
|
||||
SiteName sql.NullString
|
||||
Title string
|
||||
TotalMinutes sql.NullInt64
|
||||
PrepMinutes sql.NullInt64
|
||||
CookMinutes sql.NullInt64
|
||||
Yield sql.NullString
|
||||
RawJsonld string
|
||||
FetchedAt string
|
||||
CreatedAt string
|
||||
UpdatedAt string
|
||||
}
|
||||
|
||||
// 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.
|
||||
func (q *Queries) UpsertRecipe(ctx context.Context, arg UpsertRecipeParams) (Recipe, error) {
|
||||
row := q.db.QueryRowContext(ctx, upsertRecipe,
|
||||
arg.ID,
|
||||
arg.SourceUrl,
|
||||
arg.SiteName,
|
||||
arg.Title,
|
||||
arg.TotalMinutes,
|
||||
arg.PrepMinutes,
|
||||
arg.CookMinutes,
|
||||
arg.Yield,
|
||||
arg.RawJsonld,
|
||||
arg.FetchedAt,
|
||||
arg.CreatedAt,
|
||||
arg.UpdatedAt,
|
||||
)
|
||||
var i Recipe
|
||||
err := row.Scan(
|
||||
&i.ID,
|
||||
&i.SourceUrl,
|
||||
&i.SiteName,
|
||||
&i.Title,
|
||||
&i.TotalMinutes,
|
||||
&i.PrepMinutes,
|
||||
&i.CookMinutes,
|
||||
&i.Yield,
|
||||
&i.RawJsonld,
|
||||
&i.FetchedAt,
|
||||
&i.CreatedAt,
|
||||
&i.UpdatedAt,
|
||||
)
|
||||
return i, err
|
||||
}
|
||||
Reference in New Issue
Block a user