09c61ea9b4
support delete for client, document and folder * support delete for client, document and folder * remove batch cancel conflict not used Approved-by: Jacob Mathison
93 lines
3.0 KiB
SQL
93 lines
3.0 KiB
SQL
-- name: CreateClient :exec
|
|
INSERT INTO clients (clientId, name) VALUES ($1, $2);
|
|
|
|
-- name: GetClient :one
|
|
SELECT * FROM fullClients WHERE clientId = $1;
|
|
|
|
-- name: ListClients :many
|
|
-- Returns all clients ordered by name
|
|
SELECT * FROM fullClients ORDER BY name;
|
|
|
|
-- name: UpdateClient :exec
|
|
UPDATE clients SET name = $1 WHERE clientId = $2;
|
|
|
|
-- name: AddClientCanSync :exec
|
|
INSERT INTO clientCanSync (canSync, clientId) VALUES ($1, $2);
|
|
|
|
-- name: GetAllDocumentIDsForClient :many
|
|
-- Get all document IDs for a client, used to cascade document deletes during client delete
|
|
SELECT id FROM documents WHERE clientId = @client_id;
|
|
|
|
-- name: DeleteCollectorMinCleanVersions :exec
|
|
-- @sqlc-vet-disable
|
|
-- Delete collector minimum clean version records for a client
|
|
DELETE FROM collectorMinCleanVersions WHERE clientId = @client_id;
|
|
|
|
-- name: DeleteCollectorActiveVersions :exec
|
|
-- @sqlc-vet-disable
|
|
-- Delete collector active version records for a client
|
|
DELETE FROM collectorActiveVersions WHERE clientId = @client_id;
|
|
|
|
-- name: DeleteCollectorVersions :exec
|
|
-- @sqlc-vet-disable
|
|
-- Delete collector version records for a client
|
|
DELETE FROM collectorVersions WHERE clientId = @client_id;
|
|
|
|
-- name: DeleteBatchUploads :exec
|
|
-- @sqlc-vet-disable
|
|
-- Delete all batch upload records for a client
|
|
DELETE FROM batch_uploads WHERE client_id = @client_id;
|
|
|
|
-- name: DeleteClientCanSync :exec
|
|
-- @sqlc-vet-disable
|
|
-- Delete clientCanSync records for a client
|
|
DELETE FROM clientCanSync WHERE clientId = @client_id;
|
|
|
|
-- name: DeleteDocumentUploadsForClient :exec
|
|
-- @sqlc-vet-disable
|
|
-- Delete all documentUploads for a client
|
|
DELETE FROM documentUploads WHERE clientId = @client_id;
|
|
|
|
-- name: DeleteAllFoldersForClient :exec
|
|
-- @sqlc-vet-disable
|
|
-- Delete all folders for a client. All documents must already be deleted to avoid FK violations.
|
|
DELETE FROM folders WHERE clientId = @client_id;
|
|
|
|
-- name: HardDeleteClient :execrows
|
|
-- @sqlc-vet-disable
|
|
-- Hard delete the client row itself. Returns the number of rows deleted (0 or 1).
|
|
DELETE FROM clients WHERE clientId = @client_id;
|
|
|
|
-- name: IsClientSynced :one
|
|
-- Text extraction has been removed. A client is considered synced when
|
|
-- all documents have completed cleaning (clean entry exists OR clean failed).
|
|
-- See remove_texttract_and_mocks_plan.md for details.
|
|
WITH
|
|
docs AS (
|
|
-- Get all documents for this client
|
|
SELECT id, clientId FROM documents WHERE clientId = $1
|
|
),
|
|
doc_clean_entries as (
|
|
-- Documents with their current clean entries
|
|
SELECT
|
|
d.id AS document_id,
|
|
d.clientId as client_id,
|
|
cte.id AS clean_entry_id,
|
|
cte.fail as clean_fail
|
|
FROM
|
|
docs d
|
|
LEFT JOIN currentCleanEntries cte ON cte.documentId = d.id
|
|
)
|
|
SELECT (
|
|
-- No documents means client is synced
|
|
NOT EXISTS (SELECT 1 FROM docs)
|
|
|
|
OR
|
|
|
|
-- All documents have completed processing (clean entry exists OR clean failed)
|
|
NOT EXISTS (
|
|
SELECT 1 FROM doc_clean_entries
|
|
WHERE clean_entry_id IS NULL
|
|
)
|
|
)::bool as is_synced;
|