f11f4def43
Clean Set Up * fail * starteddb * constraint * cleantest * fixqueries * fixtests * storemimetype * buffer * tests * setup * passingtests * pdfHElloWorld * rm * test * notodos * tests * clean * testpdf
290 lines
8.0 KiB
Go
290 lines
8.0 KiB
Go
// Code generated by sqlc. DO NOT EDIT.
|
|
// versions:
|
|
// sqlc v1.27.0
|
|
// source: job.sql
|
|
|
|
package repository
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/jackc/pgx/v5/pgtype"
|
|
)
|
|
|
|
const addJobCanSync = `-- name: AddJobCanSync :exec
|
|
INSERT INTO jobCanSync (canSync, jobId) VALUES ($1, $2)
|
|
`
|
|
|
|
type AddJobCanSyncParams struct {
|
|
Cansync bool `db:"cansync"`
|
|
Jobid pgtype.UUID `db:"jobid"`
|
|
}
|
|
|
|
// AddJobCanSync
|
|
//
|
|
// INSERT INTO jobCanSync (canSync, jobId) VALUES ($1, $2)
|
|
func (q *Queries) AddJobCanSync(ctx context.Context, arg *AddJobCanSyncParams) error {
|
|
_, err := q.db.Exec(ctx, addJobCanSync, arg.Cansync, arg.Jobid)
|
|
return err
|
|
}
|
|
|
|
const createJob = `-- name: CreateJob :one
|
|
INSERT INTO jobs (clientId) VALUES ($1) RETURNING id
|
|
`
|
|
|
|
// CreateJob
|
|
//
|
|
// INSERT INTO jobs (clientId) VALUES ($1) RETURNING id
|
|
func (q *Queries) CreateJob(ctx context.Context, clientid pgtype.UUID) (pgtype.UUID, error) {
|
|
row := q.db.QueryRow(ctx, createJob, clientid)
|
|
var id pgtype.UUID
|
|
err := row.Scan(&id)
|
|
return id, err
|
|
}
|
|
|
|
const getJob = `-- name: GetJob :one
|
|
SELECT j.id, j.clientId, cs.canSync
|
|
FROM jobs as j
|
|
JOIN currentJobCanSync as cs on cs.jobId = j.id
|
|
WHERE j.id = $1
|
|
`
|
|
|
|
type GetJobRow struct {
|
|
ID pgtype.UUID `db:"id"`
|
|
Clientid pgtype.UUID `db:"clientid"`
|
|
Cansync bool `db:"cansync"`
|
|
}
|
|
|
|
// GetJob
|
|
//
|
|
// SELECT j.id, j.clientId, cs.canSync
|
|
// FROM jobs as j
|
|
// JOIN currentJobCanSync as cs on cs.jobId = j.id
|
|
// WHERE j.id = $1
|
|
func (q *Queries) GetJob(ctx context.Context, id pgtype.UUID) (*GetJobRow, error) {
|
|
row := q.db.QueryRow(ctx, getJob, id)
|
|
var i GetJobRow
|
|
err := row.Scan(&i.ID, &i.Clientid, &i.Cansync)
|
|
return &i, err
|
|
}
|
|
|
|
const isJobSynced = `-- name: IsJobSynced :one
|
|
WITH
|
|
docs AS (
|
|
-- Get all documents for this job
|
|
SELECT id, jobId FROM documents WHERE jobId = $1
|
|
),
|
|
doc_clean_entries as (
|
|
-- Documents with their current clean entries
|
|
SELECT
|
|
d.id AS document_id,
|
|
d.jobId as job_id,
|
|
cte.id AS clean_entry_id
|
|
FROM
|
|
docs d
|
|
LEFT JOIN currentCleanEntries cte ON cte.documentId = d.id
|
|
WHERE cte.id is null or cte.id is not null and cte.fail is null
|
|
),
|
|
doc_text_entries AS (
|
|
-- Documents with their current text entries
|
|
SELECT
|
|
d.document_id,
|
|
cte.id AS text_entry_id
|
|
FROM
|
|
doc_clean_entries d
|
|
LEFT JOIN currentTextEntries cte ON cte.cleanEntryId = d.clean_entry_id
|
|
),
|
|
required_results AS (
|
|
-- All required document-query-version combinations
|
|
SELECT
|
|
d.document_id,
|
|
cqdt.queryId,
|
|
cqdt.queryVersion,
|
|
dte.text_entry_id
|
|
FROM
|
|
doc_clean_entries d
|
|
JOIN collectorQueryDependencyTree cqdt ON cqdt.jobId = d.job_id
|
|
JOIN doc_text_entries dte ON dte.document_id = d.document_id
|
|
and dte.text_entry_id IS NOT NULL
|
|
),
|
|
existing_results AS (
|
|
-- Valid results that exist
|
|
SELECT
|
|
rr.document_id AS document_id,
|
|
r.queryId,
|
|
r.id AS result_id
|
|
FROM
|
|
results r
|
|
JOIN required_results rr ON
|
|
r.queryId = rr.queryId AND
|
|
r.queryVersion = rr.queryVersion AND
|
|
r.textEntryId = rr.text_entry_id
|
|
),
|
|
missing_results AS (
|
|
-- Find missing results
|
|
SELECT rr.queryId
|
|
FROM required_results rr
|
|
LEFT JOIN existing_results er on er.queryId = rr.queryId
|
|
WHERE er.result_id is null
|
|
),
|
|
dependency_check AS (
|
|
-- Check for missing dependencies
|
|
SELECT DISTINCT er.queryId, er.result_id, qcri.queryId, rd.resultId
|
|
FROM existing_results er
|
|
JOIN queryCurrentRequiredIds qcri on qcri.requiredQueryId = er.queryId
|
|
LEFT JOIN resultDependencies rd on rd.requiredResultId = er.result_id
|
|
WHERE rd.resultId is null
|
|
)
|
|
SELECT (
|
|
-- No documents means job is synced
|
|
NOT EXISTS (SELECT 1 FROM docs)
|
|
|
|
OR
|
|
|
|
-- Documents with no text entries
|
|
(NOT EXISTS (SELECT 1 FROM doc_text_entries WHERE text_entry_id IS NULL)
|
|
|
|
and
|
|
|
|
-- Documents with missing results
|
|
NOT EXISTS (SELECT 1 FROM missing_results)
|
|
|
|
and
|
|
|
|
-- Documents with missing dependencies
|
|
NOT EXISTS (SELECT 1 FROM dependency_check))
|
|
)::bool as is_synced
|
|
`
|
|
|
|
// IsJobSynced
|
|
//
|
|
// WITH
|
|
// docs AS (
|
|
// -- Get all documents for this job
|
|
// SELECT id, jobId FROM documents WHERE jobId = $1
|
|
// ),
|
|
// doc_clean_entries as (
|
|
// -- Documents with their current clean entries
|
|
// SELECT
|
|
// d.id AS document_id,
|
|
// d.jobId as job_id,
|
|
// cte.id AS clean_entry_id
|
|
// FROM
|
|
// docs d
|
|
// LEFT JOIN currentCleanEntries cte ON cte.documentId = d.id
|
|
// WHERE cte.id is null or cte.id is not null and cte.fail is null
|
|
// ),
|
|
// doc_text_entries AS (
|
|
// -- Documents with their current text entries
|
|
// SELECT
|
|
// d.document_id,
|
|
// cte.id AS text_entry_id
|
|
// FROM
|
|
// doc_clean_entries d
|
|
// LEFT JOIN currentTextEntries cte ON cte.cleanEntryId = d.clean_entry_id
|
|
// ),
|
|
// required_results AS (
|
|
// -- All required document-query-version combinations
|
|
// SELECT
|
|
// d.document_id,
|
|
// cqdt.queryId,
|
|
// cqdt.queryVersion,
|
|
// dte.text_entry_id
|
|
// FROM
|
|
// doc_clean_entries d
|
|
// JOIN collectorQueryDependencyTree cqdt ON cqdt.jobId = d.job_id
|
|
// JOIN doc_text_entries dte ON dte.document_id = d.document_id
|
|
// and dte.text_entry_id IS NOT NULL
|
|
// ),
|
|
// existing_results AS (
|
|
// -- Valid results that exist
|
|
// SELECT
|
|
// rr.document_id AS document_id,
|
|
// r.queryId,
|
|
// r.id AS result_id
|
|
// FROM
|
|
// results r
|
|
// JOIN required_results rr ON
|
|
// r.queryId = rr.queryId AND
|
|
// r.queryVersion = rr.queryVersion AND
|
|
// r.textEntryId = rr.text_entry_id
|
|
// ),
|
|
// missing_results AS (
|
|
// -- Find missing results
|
|
// SELECT rr.queryId
|
|
// FROM required_results rr
|
|
// LEFT JOIN existing_results er on er.queryId = rr.queryId
|
|
// WHERE er.result_id is null
|
|
// ),
|
|
// dependency_check AS (
|
|
// -- Check for missing dependencies
|
|
// SELECT DISTINCT er.queryId, er.result_id, qcri.queryId, rd.resultId
|
|
// FROM existing_results er
|
|
// JOIN queryCurrentRequiredIds qcri on qcri.requiredQueryId = er.queryId
|
|
// LEFT JOIN resultDependencies rd on rd.requiredResultId = er.result_id
|
|
// WHERE rd.resultId is null
|
|
// )
|
|
// SELECT (
|
|
// -- No documents means job is synced
|
|
// NOT EXISTS (SELECT 1 FROM docs)
|
|
//
|
|
// OR
|
|
//
|
|
// -- Documents with no text entries
|
|
// (NOT EXISTS (SELECT 1 FROM doc_text_entries WHERE text_entry_id IS NULL)
|
|
//
|
|
// and
|
|
//
|
|
// -- Documents with missing results
|
|
// NOT EXISTS (SELECT 1 FROM missing_results)
|
|
//
|
|
// and
|
|
//
|
|
// -- Documents with missing dependencies
|
|
// NOT EXISTS (SELECT 1 FROM dependency_check))
|
|
// )::bool as is_synced
|
|
func (q *Queries) IsJobSynced(ctx context.Context, dollar_1 pgtype.UUID) (bool, error) {
|
|
row := q.db.QueryRow(ctx, isJobSynced, dollar_1)
|
|
var is_synced bool
|
|
err := row.Scan(&is_synced)
|
|
return is_synced, err
|
|
}
|
|
|
|
const listJobDocumentIDsBatch = `-- name: ListJobDocumentIDsBatch :many
|
|
SELECT id, totalCount FROM listJobDocumentIDs($1, $2, $3)
|
|
`
|
|
|
|
type ListJobDocumentIDsBatchParams struct {
|
|
Jobid pgtype.UUID `db:"jobid"`
|
|
Batchsize int32 `db:"batchsize"`
|
|
Pageoffset int32 `db:"pageoffset"`
|
|
}
|
|
|
|
type ListJobDocumentIDsBatchRow struct {
|
|
ID pgtype.UUID `db:"id"`
|
|
Totalcount *int64 `db:"totalcount"`
|
|
}
|
|
|
|
// ListJobDocumentIDsBatch
|
|
//
|
|
// SELECT id, totalCount FROM listJobDocumentIDs($1, $2, $3)
|
|
func (q *Queries) ListJobDocumentIDsBatch(ctx context.Context, arg *ListJobDocumentIDsBatchParams) ([]*ListJobDocumentIDsBatchRow, error) {
|
|
rows, err := q.db.Query(ctx, listJobDocumentIDsBatch, arg.Jobid, arg.Batchsize, arg.Pageoffset)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer rows.Close()
|
|
items := []*ListJobDocumentIDsBatchRow{}
|
|
for rows.Next() {
|
|
var i ListJobDocumentIDsBatchRow
|
|
if err := rows.Scan(&i.ID, &i.Totalcount); err != nil {
|
|
return nil, err
|
|
}
|
|
items = append(items, &i)
|
|
}
|
|
if err := rows.Err(); err != nil {
|
|
return nil, err
|
|
}
|
|
return items, nil
|
|
}
|