-
-
Save juliogreff/88e585fed5d710044d69f4eca7bf1cb7 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-- name: CountListProjects :one | |
SELECT COUNT(*)::int AS count FROM projects | |
WHERE projects.account_id = @account_id | |
AND (projects.name ILIKE @name OR @name = '') | |
AND (projects.client_id = @client_id OR @client_id = 0) | |
AND (ARRAY_LENGTH(@status::text[], 1) IS NULL OR projects.status = ANY(@status::project_status[])) | |
AND (@label_id::int IN ( | |
SELECT label_id FROM labelables | |
WHERE projects.id = labelables.labelable_id | |
AND labelables.labelable_type = 'project' | |
) OR @label_id = 0) | |
AND (projects.is_archived = false OR @include_archived::bool) | |
AND (projects.is_invoiced = false OR NOT @only_uninvoiced::bool) | |
AND (projects.status IN ('created', 'in_progress') OR NOT @only_unfinished::bool) | |
; | |
-- name: ListProjects :many | |
SELECT sqlc.embed(projects), clients.name AS client_name FROM projects | |
INNER JOIN clients | |
ON projects.client_id = clients.id | |
WHERE projects.account_id = @account_id | |
AND (projects.name ILIKE @name OR @name = '') | |
AND (projects.client_id = @client_id OR @client_id = 0) | |
AND (ARRAY_LENGTH(@status::text[], 1) IS NULL OR projects.status = ANY(@status::project_status[])) | |
AND (@label_id::int IN ( | |
SELECT label_id FROM labelables | |
WHERE projects.id = labelables.labelable_id | |
AND labelables.labelable_type = 'project' | |
) OR @label_id = 0) | |
AND (projects.is_archived = false OR @include_archived::bool) | |
AND (projects.is_invoiced = false OR NOT @only_uninvoiced::bool) | |
AND (projects.status IN ('created', 'in_progress') OR NOT @only_unfinished::bool) | |
ORDER BY | |
CASE WHEN @sort_name::text = 'asc' THEN projects.name END ASC, | |
CASE WHEN @sort_name::text = 'desc' THEN projects.name END DESC, | |
CASE WHEN @sort_status::text = 'asc' THEN status END ASC, | |
CASE WHEN @sort_status::text = 'desc' THEN status END DESC, | |
CASE WHEN @sort_deadline_at::text = 'asc' THEN projects.deadline_at END ASC NULLS LAST, | |
CASE WHEN @sort_deadline_at::text = 'desc' THEN projects.deadline_at END DESC NULLS LAST, | |
CASE WHEN @sort_start_at::text = 'asc' THEN projects.start_at END ASC NULLS LAST, | |
CASE WHEN @sort_start_at::text = 'desc' THEN projects.start_at END DESC NULLS LAST, | |
CASE WHEN @sort_total_price::text = 'asc' THEN projects.total_price_amount END ASC, | |
CASE WHEN @sort_total_price::text = 'desc' THEN projects.total_price_amount END DESC, | |
CASE WHEN @sort_client_name::text = 'asc' THEN clients.name END ASC, | |
CASE WHEN @sort_client_name::text = 'desc' THEN clients.name END DESC, | |
COALESCE(projects.deadline_at, projects.start_at) DESC NULLS LAST | |
LIMIT $1 | |
OFFSET $2; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment