mirror of
https://github.com/acaloiaro/frm
synced 2026-07-21 18:29:12 +00:00
499 lines
13 KiB
Go
499 lines
13 KiB
Go
// Code generated by sqlc. DO NOT EDIT.
|
|
// versions:
|
|
// sqlc v1.28.0
|
|
// source: queries.sql
|
|
|
|
package internal
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/acaloiaro/frm/types"
|
|
)
|
|
|
|
const deleteForm = `-- name: DeleteForm :exec
|
|
|
|
DELETE
|
|
FROM forms
|
|
WHERE workspace_id = $1
|
|
AND id = $2
|
|
`
|
|
|
|
type DeleteFormParams struct {
|
|
WorkspaceID string `json:"workspace_id"`
|
|
ID int64 `json:"id"`
|
|
}
|
|
|
|
// DeleteForm
|
|
//
|
|
// DELETE
|
|
// FROM forms
|
|
// WHERE workspace_id = $1
|
|
// AND id = $2
|
|
func (q *Queries) DeleteForm(ctx context.Context, arg DeleteFormParams) error {
|
|
_, err := q.db.Exec(ctx, deleteForm, arg.WorkspaceID, arg.ID)
|
|
return err
|
|
}
|
|
|
|
const getDraft = `-- name: GetDraft :one
|
|
|
|
SELECT id, form_id, workspace_id, name, fields, status, created_at, updated_at
|
|
FROM forms
|
|
WHERE workspace_id = $1
|
|
AND id = $2
|
|
AND status = 'draft'
|
|
`
|
|
|
|
type GetDraftParams struct {
|
|
WorkspaceID string `json:"workspace_id"`
|
|
ID int64 `json:"id"`
|
|
}
|
|
|
|
// GetDraft
|
|
//
|
|
// SELECT id, form_id, workspace_id, name, fields, status, created_at, updated_at
|
|
// FROM forms
|
|
// WHERE workspace_id = $1
|
|
// AND id = $2
|
|
// AND status = 'draft'
|
|
func (q *Queries) GetDraft(ctx context.Context, arg GetDraftParams) (Form, error) {
|
|
row := q.db.QueryRow(ctx, getDraft, arg.WorkspaceID, arg.ID)
|
|
var i Form
|
|
err := row.Scan(
|
|
&i.ID,
|
|
&i.FormID,
|
|
&i.WorkspaceID,
|
|
&i.Name,
|
|
&i.Fields,
|
|
&i.Status,
|
|
&i.CreatedAt,
|
|
&i.UpdatedAt,
|
|
)
|
|
return i, err
|
|
}
|
|
|
|
const getForm = `-- name: GetForm :one
|
|
|
|
SELECT id, form_id, workspace_id, name, fields, status, created_at, updated_at
|
|
FROM forms
|
|
WHERE workspace_id = $1
|
|
AND id = $2
|
|
`
|
|
|
|
type GetFormParams struct {
|
|
WorkspaceID string `json:"workspace_id"`
|
|
ID int64 `json:"id"`
|
|
}
|
|
|
|
// GetForm
|
|
//
|
|
// SELECT id, form_id, workspace_id, name, fields, status, created_at, updated_at
|
|
// FROM forms
|
|
// WHERE workspace_id = $1
|
|
// AND id = $2
|
|
func (q *Queries) GetForm(ctx context.Context, arg GetFormParams) (Form, error) {
|
|
row := q.db.QueryRow(ctx, getForm, arg.WorkspaceID, arg.ID)
|
|
var i Form
|
|
err := row.Scan(
|
|
&i.ID,
|
|
&i.FormID,
|
|
&i.WorkspaceID,
|
|
&i.Name,
|
|
&i.Fields,
|
|
&i.Status,
|
|
&i.CreatedAt,
|
|
&i.UpdatedAt,
|
|
)
|
|
return i, err
|
|
}
|
|
|
|
const getFormSubmission = `-- name: GetFormSubmission :one
|
|
|
|
SELECT id, form_id, workspace_id, subject_id, fields, status, created_at, updated_at
|
|
FROM form_submissions
|
|
WHERE workspace_id = $1
|
|
AND id = $2
|
|
`
|
|
|
|
type GetFormSubmissionParams struct {
|
|
WorkspaceID string `json:"workspace_id"`
|
|
SubmissionID int64 `json:"submission_id"`
|
|
}
|
|
|
|
// GetFormSubmission
|
|
//
|
|
// SELECT id, form_id, workspace_id, subject_id, fields, status, created_at, updated_at
|
|
// FROM form_submissions
|
|
// WHERE workspace_id = $1
|
|
// AND id = $2
|
|
func (q *Queries) GetFormSubmission(ctx context.Context, arg GetFormSubmissionParams) (FormSubmission, error) {
|
|
row := q.db.QueryRow(ctx, getFormSubmission, arg.WorkspaceID, arg.SubmissionID)
|
|
var i FormSubmission
|
|
err := row.Scan(
|
|
&i.ID,
|
|
&i.FormID,
|
|
&i.WorkspaceID,
|
|
&i.SubjectID,
|
|
&i.Fields,
|
|
&i.Status,
|
|
&i.CreatedAt,
|
|
&i.UpdatedAt,
|
|
)
|
|
return i, err
|
|
}
|
|
|
|
const getShortCode = `-- name: GetShortCode :one
|
|
|
|
SELECT id, workspace_id, form_id, short_code, subject_id, created_at, updated_at
|
|
FROM short_codes
|
|
WHERE workspace_id = $1
|
|
AND short_code = $2
|
|
`
|
|
|
|
type GetShortCodeParams struct {
|
|
WorkspaceID string `json:"workspace_id"`
|
|
ShortCode string `json:"short_code"`
|
|
}
|
|
|
|
// GetShortCode
|
|
//
|
|
// SELECT id, workspace_id, form_id, short_code, subject_id, created_at, updated_at
|
|
// FROM short_codes
|
|
// WHERE workspace_id = $1
|
|
// AND short_code = $2
|
|
func (q *Queries) GetShortCode(ctx context.Context, arg GetShortCodeParams) (ShortCode, error) {
|
|
row := q.db.QueryRow(ctx, getShortCode, arg.WorkspaceID, arg.ShortCode)
|
|
var i ShortCode
|
|
err := row.Scan(
|
|
&i.ID,
|
|
&i.WorkspaceID,
|
|
&i.FormID,
|
|
&i.ShortCode,
|
|
&i.SubjectID,
|
|
&i.CreatedAt,
|
|
&i.UpdatedAt,
|
|
)
|
|
return i, err
|
|
}
|
|
|
|
const listDrafts = `-- name: ListDrafts :many
|
|
|
|
SELECT id, form_id, workspace_id, name, fields, status, created_at, updated_at
|
|
FROM forms
|
|
WHERE workspace_id = $1
|
|
AND form_id = $2
|
|
AND status = 'draft'
|
|
`
|
|
|
|
type ListDraftsParams struct {
|
|
WorkspaceID string `json:"workspace_id"`
|
|
FormID *int64 `json:"form_id"`
|
|
}
|
|
|
|
// ListDrafts
|
|
//
|
|
// SELECT id, form_id, workspace_id, name, fields, status, created_at, updated_at
|
|
// FROM forms
|
|
// WHERE workspace_id = $1
|
|
// AND form_id = $2
|
|
// AND status = 'draft'
|
|
func (q *Queries) ListDrafts(ctx context.Context, arg ListDraftsParams) ([]Form, error) {
|
|
rows, err := q.db.Query(ctx, listDrafts, arg.WorkspaceID, arg.FormID)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer rows.Close()
|
|
var items []Form
|
|
for rows.Next() {
|
|
var i Form
|
|
if err := rows.Scan(
|
|
&i.ID,
|
|
&i.FormID,
|
|
&i.WorkspaceID,
|
|
&i.Name,
|
|
&i.Fields,
|
|
&i.Status,
|
|
&i.CreatedAt,
|
|
&i.UpdatedAt,
|
|
); err != nil {
|
|
return nil, err
|
|
}
|
|
items = append(items, i)
|
|
}
|
|
if err := rows.Err(); err != nil {
|
|
return nil, err
|
|
}
|
|
return items, nil
|
|
}
|
|
|
|
const listForms = `-- name: ListForms :many
|
|
|
|
SELECT id, form_id, workspace_id, name, fields, status, created_at, updated_at
|
|
FROM forms
|
|
WHERE workspace_id = $1
|
|
AND status = any(CASE
|
|
WHEN cardinality($2::form_status[]) > 0 THEN $2::form_status[]
|
|
ELSE enum_range(NULL::form_status)::form_status[]
|
|
END::form_status[])
|
|
`
|
|
|
|
type ListFormsParams struct {
|
|
WorkspaceID string `json:"workspace_id"`
|
|
Statuses []FormStatus `json:"statuses"`
|
|
}
|
|
|
|
// ListForms
|
|
//
|
|
// SELECT id, form_id, workspace_id, name, fields, status, created_at, updated_at
|
|
// FROM forms
|
|
// WHERE workspace_id = $1
|
|
// AND status = any(CASE
|
|
// WHEN cardinality($2::form_status[]) > 0 THEN $2::form_status[]
|
|
// ELSE enum_range(NULL::form_status)::form_status[]
|
|
// END::form_status[])
|
|
func (q *Queries) ListForms(ctx context.Context, arg ListFormsParams) ([]Form, error) {
|
|
rows, err := q.db.Query(ctx, listForms, arg.WorkspaceID, arg.Statuses)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer rows.Close()
|
|
var items []Form
|
|
for rows.Next() {
|
|
var i Form
|
|
if err := rows.Scan(
|
|
&i.ID,
|
|
&i.FormID,
|
|
&i.WorkspaceID,
|
|
&i.Name,
|
|
&i.Fields,
|
|
&i.Status,
|
|
&i.CreatedAt,
|
|
&i.UpdatedAt,
|
|
); err != nil {
|
|
return nil, err
|
|
}
|
|
items = append(items, i)
|
|
}
|
|
if err := rows.Err(); err != nil {
|
|
return nil, err
|
|
}
|
|
return items, nil
|
|
}
|
|
|
|
const publishDraft = `-- name: PublishDraft :one
|
|
WITH draft AS
|
|
(SELECT CASE
|
|
WHEN form_id IS NOT NULL THEN form_id
|
|
ELSE nextval('form_ids')
|
|
END AS id,
|
|
form_id,
|
|
workspace_id,
|
|
name,
|
|
fields,
|
|
'published'
|
|
FROM forms
|
|
WHERE forms.id = $1)
|
|
INSERT INTO forms(id, form_id, workspace_id, name, fields, status)
|
|
VALUES ((SELECT id FROM draft), NULL, (SELECT workspace_id FROM draft), (SELECT name FROM draft), (SELECT fields FROM draft), 'published') ON conflict(id) DO
|
|
UPDATE
|
|
SET updated_at = timezone('utc', now()),
|
|
form_id = NULL,
|
|
workspace_id =
|
|
(SELECT workspace_id
|
|
FROM draft),
|
|
name =
|
|
(SELECT name
|
|
FROM draft),
|
|
fields =
|
|
(SELECT fields
|
|
FROM draft),
|
|
status = 'published' RETURNING id, form_id, workspace_id, name, fields, status, created_at, updated_at
|
|
`
|
|
|
|
// PublishDraft
|
|
//
|
|
// WITH draft AS
|
|
// (SELECT CASE
|
|
// WHEN form_id IS NOT NULL THEN form_id
|
|
// ELSE nextval('form_ids')
|
|
// END AS id,
|
|
// form_id,
|
|
// workspace_id,
|
|
// name,
|
|
// fields,
|
|
// 'published'
|
|
// FROM forms
|
|
// WHERE forms.id = $1)
|
|
// INSERT INTO forms(id, form_id, workspace_id, name, fields, status)
|
|
// VALUES ((SELECT id FROM draft), NULL, (SELECT workspace_id FROM draft), (SELECT name FROM draft), (SELECT fields FROM draft), 'published') ON conflict(id) DO
|
|
// UPDATE
|
|
// SET updated_at = timezone('utc', now()),
|
|
// form_id = NULL,
|
|
// workspace_id =
|
|
// (SELECT workspace_id
|
|
// FROM draft),
|
|
// name =
|
|
// (SELECT name
|
|
// FROM draft),
|
|
// fields =
|
|
// (SELECT fields
|
|
// FROM draft),
|
|
// status = 'published' RETURNING id, form_id, workspace_id, name, fields, status, created_at, updated_at
|
|
func (q *Queries) PublishDraft(ctx context.Context, id int64) (Form, error) {
|
|
row := q.db.QueryRow(ctx, publishDraft, id)
|
|
var i Form
|
|
err := row.Scan(
|
|
&i.ID,
|
|
&i.FormID,
|
|
&i.WorkspaceID,
|
|
&i.Name,
|
|
&i.Fields,
|
|
&i.Status,
|
|
&i.CreatedAt,
|
|
&i.UpdatedAt,
|
|
)
|
|
return i, err
|
|
}
|
|
|
|
const saveForm = `-- name: SaveForm :one
|
|
|
|
INSERT INTO forms (id, form_id, workspace_id, name, fields, status)
|
|
VALUES (coalesce(nullif($1, 0), nextval('form_ids'))::bigint, $2, $3, $4, $5, coalesce(nullif($6, ''), 'draft')::form_status) ON conflict(id) DO
|
|
UPDATE
|
|
SET updated_at = timezone('utc', now()),
|
|
name = $4,
|
|
status = coalesce(nullif($6, '')::form_status, forms.status),
|
|
fields = coalesce($5, forms.fields) RETURNING id, form_id, workspace_id, name, fields, status, created_at, updated_at
|
|
`
|
|
|
|
type SaveFormParams struct {
|
|
ID interface{} `json:"id"`
|
|
FormID *int64 `json:"form_id"`
|
|
WorkspaceID string `json:"workspace_id"`
|
|
Name string `json:"name"`
|
|
Fields types.FormFields `json:"fields"`
|
|
Status interface{} `json:"status"`
|
|
}
|
|
|
|
// SaveForm
|
|
//
|
|
// INSERT INTO forms (id, form_id, workspace_id, name, fields, status)
|
|
// VALUES (coalesce(nullif($1, 0), nextval('form_ids'))::bigint, $2, $3, $4, $5, coalesce(nullif($6, ''), 'draft')::form_status) ON conflict(id) DO
|
|
// UPDATE
|
|
// SET updated_at = timezone('utc', now()),
|
|
// name = $4,
|
|
// status = coalesce(nullif($6, '')::form_status, forms.status),
|
|
// fields = coalesce($5, forms.fields) RETURNING id, form_id, workspace_id, name, fields, status, created_at, updated_at
|
|
func (q *Queries) SaveForm(ctx context.Context, arg SaveFormParams) (Form, error) {
|
|
row := q.db.QueryRow(ctx, saveForm,
|
|
arg.ID,
|
|
arg.FormID,
|
|
arg.WorkspaceID,
|
|
arg.Name,
|
|
arg.Fields,
|
|
arg.Status,
|
|
)
|
|
var i Form
|
|
err := row.Scan(
|
|
&i.ID,
|
|
&i.FormID,
|
|
&i.WorkspaceID,
|
|
&i.Name,
|
|
&i.Fields,
|
|
&i.Status,
|
|
&i.CreatedAt,
|
|
&i.UpdatedAt,
|
|
)
|
|
return i, err
|
|
}
|
|
|
|
const saveShortCode = `-- name: SaveShortCode :one
|
|
|
|
INSERT INTO short_codes (workspace_id, form_id, subject_id, short_code)
|
|
VALUES ($1, $2, $3, $4) ON CONFLICT (subject_id, form_id) DO
|
|
UPDATE
|
|
SET updated_at = timezone('utc', now()) RETURNING id, workspace_id, form_id, short_code, subject_id, created_at, updated_at
|
|
`
|
|
|
|
type SaveShortCodeParams struct {
|
|
WorkspaceID string `json:"workspace_id"`
|
|
FormID *int64 `json:"form_id"`
|
|
SubjectID string `json:"subject_id"`
|
|
ShortCode string `json:"short_code"`
|
|
}
|
|
|
|
// SaveShortCode
|
|
//
|
|
// INSERT INTO short_codes (workspace_id, form_id, subject_id, short_code)
|
|
// VALUES ($1, $2, $3, $4) ON CONFLICT (subject_id, form_id) DO
|
|
// UPDATE
|
|
// SET updated_at = timezone('utc', now()) RETURNING id, workspace_id, form_id, short_code, subject_id, created_at, updated_at
|
|
func (q *Queries) SaveShortCode(ctx context.Context, arg SaveShortCodeParams) (ShortCode, error) {
|
|
row := q.db.QueryRow(ctx, saveShortCode,
|
|
arg.WorkspaceID,
|
|
arg.FormID,
|
|
arg.SubjectID,
|
|
arg.ShortCode,
|
|
)
|
|
var i ShortCode
|
|
err := row.Scan(
|
|
&i.ID,
|
|
&i.WorkspaceID,
|
|
&i.FormID,
|
|
&i.ShortCode,
|
|
&i.SubjectID,
|
|
&i.CreatedAt,
|
|
&i.UpdatedAt,
|
|
)
|
|
return i, err
|
|
}
|
|
|
|
const saveSubmission = `-- name: SaveSubmission :one
|
|
|
|
INSERT INTO form_submissions (id, form_id, workspace_id, subject_id, fields, status)
|
|
VALUES (coalesce(nullif($1, 0), nextval('submission_ids'))::bigint, $2, $3, $4, $5, $6) ON conflict(id) DO
|
|
UPDATE
|
|
SET updated_at = timezone('utc', now()),
|
|
fields = $5,
|
|
status = $6 RETURNING id, form_id, workspace_id, subject_id, fields, status, created_at, updated_at
|
|
`
|
|
|
|
type SaveSubmissionParams struct {
|
|
ID interface{} `json:"id"`
|
|
FormID int64 `json:"form_id"`
|
|
WorkspaceID string `json:"workspace_id"`
|
|
SubjectID *string `json:"subject_id"`
|
|
Fields types.FormFieldValues `json:"fields"`
|
|
Status SubmissionStatus `json:"status"`
|
|
}
|
|
|
|
// SaveSubmission
|
|
//
|
|
// INSERT INTO form_submissions (id, form_id, workspace_id, subject_id, fields, status)
|
|
// VALUES (coalesce(nullif($1, 0), nextval('submission_ids'))::bigint, $2, $3, $4, $5, $6) ON conflict(id) DO
|
|
// UPDATE
|
|
// SET updated_at = timezone('utc', now()),
|
|
// fields = $5,
|
|
// status = $6 RETURNING id, form_id, workspace_id, subject_id, fields, status, created_at, updated_at
|
|
func (q *Queries) SaveSubmission(ctx context.Context, arg SaveSubmissionParams) (FormSubmission, error) {
|
|
row := q.db.QueryRow(ctx, saveSubmission,
|
|
arg.ID,
|
|
arg.FormID,
|
|
arg.WorkspaceID,
|
|
arg.SubjectID,
|
|
arg.Fields,
|
|
arg.Status,
|
|
)
|
|
var i FormSubmission
|
|
err := row.Scan(
|
|
&i.ID,
|
|
&i.FormID,
|
|
&i.WorkspaceID,
|
|
&i.SubjectID,
|
|
&i.Fields,
|
|
&i.Status,
|
|
&i.CreatedAt,
|
|
&i.UpdatedAt,
|
|
)
|
|
return i, err
|
|
}
|