package database
import (
"context"
"database/sql"
)
const projectDetail = `-- name: ProjectDetail :one
select id, name, description, parent_id, planned_for, start_at, due_at, completed_at FROM projects WHERE id = ?
`
type ProjectDetailRow struct {
ID int64
Name string
Description sql.NullString
ParentID sql.NullInt64
PlannedFor sql.NullTime
StartAt sql.NullTime
DueAt sql.NullTime
CompletedAt sql.NullTime
}
func (q *Queries) ProjectDetail(ctx context.Context, id int64) (ProjectDetailRow, error) {
row := q.db.QueryRowContext(ctx, projectDetail, id)
var i ProjectDetailRow
err := row.Scan(
&i.ID,
&i.Name,
&i.Description,
&i.ParentID,
&i.PlannedFor,
&i.StartAt,
&i.DueAt,
&i.CompletedAt,
)
return i, err
}
const projectName = `-- name: ProjectName :one
SELECT name FROM projects WHERE id = ?
`
func (q *Queries) ProjectName(ctx context.Context, id int64) (string, error) {
row := q.db.QueryRowContext(ctx, projectName, id)
var name string
err := row.Scan(&name)
return name, err
}
const projectShort = `-- name: ProjectShort :one
SELECT id, name, parent_id FROM projects WHERE id = ?
`
type ProjectShortRow struct {
ID int64
Name string
ParentID sql.NullInt64
}
func (q *Queries) ProjectShort(ctx context.Context, id int64) (ProjectShortRow, error) {
row := q.db.QueryRowContext(ctx, projectShort, id)
var i ProjectShortRow
err := row.Scan(&i.ID, &i.Name, &i.ParentID)
return i, err
}
const recProjectName = `-- name: RecProjectName :one
WITH RECURSIVE rec_project_name(id, name) AS (
SELECT id, name FROM projects WHERE parent_id IS NULL
UNION ALL
SELECT projects.id, rec_project_name.name||' > '||projects.name FROM projects JOIN rec_project_name ON projects.parent_id = rec_project_name.id
) SELECT name FROM rec_project_name WHERE projects.id = ?
`
func (q *Queries) RecProjectName(ctx context.Context, id int64) (string, error) {
row := q.db.QueryRowContext(ctx, recProjectName, id)
var name string
err := row.Scan(&name)
return name, err
}