fix pagination methods

This commit is contained in:
pasha1coil 2025-04-25 17:49:10 +03:00
parent c2702e984b
commit 51689eeb92

@ -731,48 +731,78 @@ SELECT * FROM usersamo WHERE amoid = $1 AND deleted = false;
WITH user_data AS ( WITH user_data AS (
SELECT AmoID FROM accountsAmo WHERE accountsAmo.AccountID = $1 AND accountsAmo.Deleted = false SELECT AmoID FROM accountsAmo WHERE accountsAmo.AccountID = $1 AND accountsAmo.Deleted = false
) )
SELECT u.*, COUNT(*) OVER() as total_count SELECT u.*
FROM usersAmo u FROM usersAmo u
JOIN user_data a ON u.AmoID = a.AmoID JOIN user_data a ON u.AmoID = a.AmoID
WHERE u.Deleted = false WHERE u.Deleted = false
ORDER BY u.ID OFFSET ($2 - 1) * $3 LIMIT $3; ORDER BY u.ID OFFSET ($2 - 1) * $3 LIMIT $3;
-- name: GetUsersCount :one
WITH user_data AS (
SELECT AmoID FROM accountsAmo WHERE accountsAmo.AccountID = $1 AND accountsAmo.Deleted = false
)
SELECT COUNT(*) FROM usersAmo u JOIN user_data a ON u.AmoID = a.AmoID WHERE u.Deleted = false;
-- name: GetTagsWithPagination :many -- name: GetTagsWithPagination :many
WITH user_data AS ( WITH user_data AS (
SELECT AmoID FROM accountsAmo WHERE accountsAmo.AccountID = $1 AND accountsAmo.Deleted = false SELECT AmoID FROM accountsAmo WHERE accountsAmo.AccountID = $1 AND accountsAmo.Deleted = false
) )
SELECT t.*, COUNT(*) OVER() as total_count SELECT t.*
FROM tags t JOIN user_data u ON t.AccountID = u.AmoID FROM tags t JOIN user_data u ON t.AccountID = u.AmoID
WHERE t.Deleted = false WHERE t.Deleted = false
ORDER BY t.ID OFFSET ($2 - 1) * $3 LIMIT $3; ORDER BY t.ID OFFSET ($2 - 1) * $3 LIMIT $3;
-- name: GetTagsCount :one
WITH user_data AS (
SELECT AmoID FROM accountsAmo WHERE accountsAmo.AccountID = $1 AND accountsAmo.Deleted = false
)
SELECT COUNT(*) FROM tags t JOIN user_data u ON t.AccountID = u.AmoID WHERE t.Deleted = false;
-- name: GetStepsWithPagination :many -- name: GetStepsWithPagination :many
WITH user_data AS ( WITH user_data AS (
SELECT AmoID FROM accountsAmo WHERE accountsAmo.AccountID = $1 AND accountsAmo.Deleted = false SELECT AmoID FROM accountsAmo WHERE accountsAmo.AccountID = $1 AND accountsAmo.Deleted = false
) )
SELECT s.*, COUNT(*) OVER() as total_count SELECT s.*
FROM steps s JOIN user_data u ON s.AccountID = u.AmoID FROM steps s JOIN user_data u ON s.AccountID = u.AmoID
WHERE s.Deleted = false AND PipelineID = $4 WHERE s.Deleted = false AND s.PipelineID = $4
ORDER BY s.ID OFFSET ($2 - 1) * $3 LIMIT $3; ORDER BY s.ID OFFSET ($2 - 1) * $3 LIMIT $3;
-- name: GetStepsCount :one
WITH user_data AS (
SELECT AmoID FROM accountsAmo WHERE accountsAmo.AccountID = $1 AND accountsAmo.Deleted = false
)
SELECT COUNT(*) FROM steps s JOIN user_data u ON s.AccountID = u.AmoID WHERE s.Deleted = false AND s.PipelineID = $4;
-- name: GetPipelinesWithPagination :many -- name: GetPipelinesWithPagination :many
WITH user_data AS ( WITH user_data AS (
SELECT AmoID FROM accountsAmo WHERE accountsAmo.AccountID = $1 AND accountsAmo.Deleted = false SELECT AmoID FROM accountsAmo WHERE accountsAmo.AccountID = $1 AND accountsAmo.Deleted = false
) )
SELECT p.*, COUNT(*) OVER() as total_count SELECT p.*
FROM pipelines p JOIN user_data u ON p.AccountID = u.AmoID FROM pipelines p JOIN user_data u ON p.AccountID = u.AmoID
WHERE p.Deleted = false WHERE p.Deleted = false
ORDER BY p.ID OFFSET ($2 - 1) * $3 LIMIT $3; ORDER BY p.ID OFFSET ($2 - 1) * $3 LIMIT $3;
-- name: GetPipelinesCount :one
WITH user_data AS (
SELECT AmoID FROM accountsAmo WHERE accountsAmo.AccountID = $1 AND accountsAmo.Deleted = false
)
SELECT COUNT(*) FROM pipelines p JOIN user_data u ON p.AccountID = u.AmoID WHERE p.Deleted = false;
-- name: GetFieldsWithPagination :many -- name: GetFieldsWithPagination :many
WITH user_data AS ( WITH user_data AS (
SELECT AmoID FROM accountsAmo WHERE accountsAmo.AccountID = $1 AND accountsAmo.Deleted = false SELECT AmoID FROM accountsAmo WHERE accountsAmo.AccountID = $1 AND accountsAmo.Deleted = false
) )
SELECT f.*, COUNT(*) OVER() as total_count SELECT f.*
FROM fields f JOIN user_data u ON f.AccountID = u.AmoID FROM fields f JOIN user_data u ON f.AccountID = u.AmoID
WHERE f.Deleted = false WHERE f.Deleted = false
ORDER BY f.ID OFFSET ($2 - 1) * $3 LIMIT $3; ORDER BY f.ID OFFSET ($2 - 1) * $3 LIMIT $3;
-- name: GetFieldsCount :one
WITH user_data AS (
SELECT AmoID FROM accountsAmo WHERE accountsAmo.AccountID = $1 AND accountsAmo.Deleted = false
)
SELECT COUNT(*) FROM fields f JOIN user_data u ON f.AccountID = u.AmoID WHERE f.Deleted = false;
-- name: UpdateTags :exec -- name: UpdateTags :exec
UPDATE tags AS t UPDATE tags AS t
SET name = (update_data ->> 'Name')::varchar(512), SET name = (update_data ->> 'Name')::varchar(512),
@ -1055,10 +1085,10 @@ INSERT INTO amoContact (AccountID, AmoID, Field) VALUES ($1, $2, $3) RETURNING A
UPDATE amoContact SET Field = $1,AmoID=$3 WHERE ID = $2; UPDATE amoContact SET Field = $1,AmoID=$3 WHERE ID = $2;
-- name: GetQuestionsAI :many -- name: GetQuestionsAI :many
WITH total_count AS (SELECT COUNT(*) AS count SELECT q.id, q.quiz_id, q.title, q.description, q.questiontype, q.required, q.deleted, q.page, q.content, q.version, q.parent_ids, q.created_at, q.updated_at, q.session FROM question q
FROM question WHERE quiz_id = $1 AND (session = $2 OR session = '') AND deleted = FALSE)
SELECT q.*, t.count FROM question q
CROSS JOIN total_count t
WHERE q.quiz_id = $1 AND (q.session = $2 OR q.session = '') AND q.deleted = FALSE WHERE q.quiz_id = $1 AND (q.session = $2 OR q.session = '') AND q.deleted = FALSE
ORDER BY q.page, q.created_at ASC LIMIT $3 OFFSET $4; ORDER BY q.page, q.created_at ASC LIMIT $3 OFFSET $4
-- name: GetQuestionsAICount :one
SELECT COUNT(*) AS count FROM question WHERE quiz_id = $1 AND (session = $2 OR session = '') AND deleted = FALSE;