add query check tags

This commit is contained in:
Pavel 2024-04-18 12:16:25 +03:00
parent 44291564e2
commit ae01145ce6
3 changed files with 49 additions and 5 deletions

@ -667,7 +667,7 @@ UPDATE tokens SET AccessToken = $1, RefreshToken = $2, Expiration = $3, CreatedA
SELECT * FROM tokens;
-- name: CheckExpired :many
SELECT * FROM tokens WHERE Expiration <= EXTRACT(EPOCH FROM NOW()) + (10 * 60);
SELECT * FROM tokens WHERE Expiration <= TO_TIMESTAMP(EXTRACT(EPOCH FROM NOW()) + (10 * 60));
-- name: WebhookDelete :exec
DELETE FROM tokens WHERE AccountID = $1;
@ -683,3 +683,47 @@ UPDATE users SET Name = $1, "Group" = $2, Email = $3, Role = $4 WHERE AmoID = $5
-- name: GetUsersWithPagination :many
SELECT *, COUNT(*) OVER() as total_count FROM users WHERE Deleted = false ORDER BY ID OFFSET ($1 - 1) * $2 LIMIT $2;
-- name: GetTagsWithPagination :many
SELECT *, COUNT(*) OVER() as total_count FROM tags WHERE Deleted = false ORDER BY ID OFFSET ($1 - 1) * $2 LIMIT $2;
-- name: GetStepsWithPagination :many
SELECT *, COUNT(*) OVER() as total_count FROM steps WHERE Deleted = false ORDER BY ID OFFSET ($1 - 1) * $2 LIMIT $2;
-- name: GetPipelinesWithPagination :many
SELECT *, COUNT(*) OVER() as total_count FROM pipelines WHERE Deleted = false ORDER BY ID OFFSET ($1 - 1) * $2 LIMIT $2;
-- name: GetFieldsWithPagination :many
SELECT *, COUNT(*) OVER() as total_count FROM fields WHERE Deleted = false ORDER BY ID OFFSET ($1 - 1) * $2 LIMIT $2;
-- name: CheckTags :many
WITH user_data AS (
SELECT AmoID
FROM users
WHERE AccountID = $1 -- параметр AccountID из токена для получения id аккаунта в амо
), updated_tags AS (
UPDATE tags
SET name = new_tags.name, color = new_tags.color, createdAt = CURRENT_TIMESTAMP
FROM (
SELECT t.ID, t.Name, t.Color, t.AmoID
FROM UNNEST($3::entitytype[], $4::varchar(50)[], $5::varchar(50)[]) AS t(ID INT, Name VARCHAR(50), Color VARCHAR(50), AmoID INT)
) AS new_tags
JOIN user_data ON tags.AccountID = user_data.AmoID
WHERE tags.amoID = $2
AND tags.amoID = new_tags.amoID
AND tags.accountID = user_data.AmoID -- Используем полученный AmoID из таблицы users
AND tags.entity = $3
AND tags.deleted = FALSE
RETURNING tags.id, tags.amoID
), inserted_tags AS (
INSERT INTO tags (amoID, accountID, entity, name, color, createdAt)
SELECT $2, user_data.AmoID, $3, t.Name, t.Color, CURRENT_TIMESTAMP
FROM UNNEST($3::entitytype[], $4::varchar(50)[], $5::varchar(50)[]) AS t(Name VARCHAR(50), Color VARCHAR(50))
JOIN user_data ON $1 = user_data.AmoID
WHERE (t.Name, t.Color) NOT IN (SELECT name, color FROM updated_tags)
RETURNING id, amoID
)
SELECT * FROM updated_tags
UNION ALL
SELECT * FROM inserted_tags;

@ -73,7 +73,7 @@ CREATE TABLE IF NOT EXISTS tags (
CreatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
ALTER TABLE question
ALTER TABLE quiz
ADD COLUMN utm jsonb NOT NULL DEFAULT '{}';
ALTER TABLE question
ALTER TABLE quiz
ADD COLUMN rules jsonb NOT NULL DEFAULT '{}';

@ -175,7 +175,7 @@ func (r *AmoRepository) WebhookCreate(ctx context.Context, tokens model.Token) e
Refreshtoken: tokens.RefreshToken,
Accesstoken: tokens.AccessToken,
Authcode: tokens.AuthCode,
Expiration: time.Unix(tokens.Expiration, 0),
Expiration: time.Unix(tokens.Expiration, 0).In(time.UTC),
Createdat: sql.NullTime{Time: time.Unix(tokens.CreatedAt, 0), Valid: true},
})
@ -191,7 +191,7 @@ func (r *AmoRepository) WebhookUpdate(ctx context.Context, tokens model.Token) e
Accountid: tokens.AccountID,
Accesstoken: tokens.AccessToken,
Refreshtoken: tokens.RefreshToken,
Expiration: time.Unix(tokens.Expiration, 0),
Expiration: time.Unix(tokens.Expiration, 0).In(time.UTC),
Createdat: sql.NullTime{Time: time.Unix(tokens.CreatedAt, 0), Valid: true},
})