mirror of
https://github.com/abhinavxd/libredesk.git
synced 2026-11-01 17:09:52 +00:00
a9fd8616a8
Alias replies now put the +conv tag on the main address, because many alias forwarders bounce + addresses. From now follows the last address we sent from, and a failed re-verify no longer blocks an alias that was verified before.
100 lines
5.3 KiB
SQL
100 lines
5.3 KiB
SQL
-- name: get-active-inboxes
|
|
SELECT inboxes.id, uuid, created_at, updated_at, "name", deleted_at, channel, enabled, csat_enabled, prompt_tags_on_reply, reopen_window_hours, config, "from", from_name_template, linked_email_inbox_id,
|
|
COALESCE((SELECT jsonb_agg(jsonb_build_object('email', email, 'verification_status', verification_status, 'verified_at', verified_at) ORDER BY position, id) FROM inbox_email_addresses WHERE inbox_id = inboxes.id AND kind = 'alias'), '[]'::jsonb) AS aliases
|
|
FROM inboxes where enabled is TRUE and deleted_at is NULL;
|
|
|
|
-- name: get-all-inboxes
|
|
SELECT inboxes.id, uuid, created_at, updated_at, "name", deleted_at, channel, enabled, csat_enabled, prompt_tags_on_reply, reopen_window_hours, config, "from", from_name_template, linked_email_inbox_id,
|
|
COALESCE((SELECT jsonb_agg(jsonb_build_object('email', email, 'verification_status', verification_status, 'verified_at', verified_at) ORDER BY position, id) FROM inbox_email_addresses WHERE inbox_id = inboxes.id AND kind = 'alias'), '[]'::jsonb) AS aliases
|
|
FROM inboxes where deleted_at is NULL;
|
|
|
|
-- name: insert-inbox
|
|
INSERT INTO inboxes
|
|
(channel, config, "name", "from", enabled, csat_enabled, prompt_tags_on_reply, reopen_window_hours, secret, linked_email_inbox_id, from_name_template)
|
|
VALUES($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11)
|
|
RETURNING *, '[]'::jsonb AS aliases
|
|
|
|
-- name: get-inbox
|
|
SELECT inboxes.id, uuid, created_at, updated_at, "name", deleted_at, channel, enabled, csat_enabled, prompt_tags_on_reply, reopen_window_hours, config, "from", from_name_template, secret, linked_email_inbox_id,
|
|
COALESCE((SELECT jsonb_agg(jsonb_build_object('email', email, 'verification_status', verification_status, 'verified_at', verified_at) ORDER BY position, id) FROM inbox_email_addresses WHERE inbox_id = inboxes.id AND kind = 'alias'), '[]'::jsonb) AS aliases
|
|
FROM inboxes where inboxes.id = $1 and deleted_at is NULL;
|
|
|
|
-- name: get-inbox-by-uuid
|
|
SELECT inboxes.id, uuid, created_at, updated_at, "name", deleted_at, channel, enabled, csat_enabled, prompt_tags_on_reply, reopen_window_hours, config, "from", from_name_template, secret, linked_email_inbox_id,
|
|
COALESCE((SELECT jsonb_agg(jsonb_build_object('email', email, 'verification_status', verification_status, 'verified_at', verified_at) ORDER BY position, id) FROM inbox_email_addresses WHERE inbox_id = inboxes.id AND kind = 'alias'), '[]'::jsonb) AS aliases
|
|
FROM inboxes where uuid = $1 and deleted_at is NULL;
|
|
|
|
-- name: update
|
|
UPDATE inboxes
|
|
set channel = $2, config = $3, "name" = $4, "from" = $5, csat_enabled = $6, prompt_tags_on_reply = $7, reopen_window_hours = $8, enabled = $9, secret = $10, linked_email_inbox_id = $11, from_name_template = $12, updated_at = now()
|
|
where id = $1 and deleted_at is NULL
|
|
RETURNING *, '[]'::jsonb AS aliases;
|
|
|
|
-- name: soft-delete
|
|
UPDATE inboxes set deleted_at = now(), updated_at = now(), config = '{}', enabled = false where id = $1 and deleted_at is NULL;
|
|
|
|
-- name: toggle
|
|
UPDATE inboxes
|
|
SET enabled = NOT enabled, updated_at = NOW()
|
|
WHERE id = $1
|
|
RETURNING *;
|
|
|
|
-- name: update-config
|
|
UPDATE inboxes
|
|
SET config = $2, updated_at = NOW()
|
|
WHERE id = $1 AND deleted_at IS NULL;
|
|
|
|
-- name: delete-inbox-email-addresses
|
|
DELETE FROM inbox_email_addresses
|
|
WHERE inbox_id = $1 AND (NOT (LOWER(email) = ANY($2)) OR (kind = 'primary' AND LOWER(email) != $3));
|
|
|
|
-- name: lock-inbox
|
|
SELECT id FROM inboxes WHERE id = $1 AND deleted_at IS NULL FOR UPDATE;
|
|
|
|
-- name: reset-alias-verification
|
|
UPDATE inbox_email_addresses
|
|
SET verification_status = 'not_verified', verification_token = NULL, verification_started_at = NULL, verified_at = NULL
|
|
WHERE inbox_id = $1 AND kind = 'alias';
|
|
|
|
-- name: insert-inbox-email-address
|
|
INSERT INTO inbox_email_addresses (inbox_id, email, kind, position, verification_status)
|
|
VALUES ($1, $2, $3, $4, $5)
|
|
ON CONFLICT (inbox_id, LOWER(email)) DO UPDATE
|
|
SET kind = EXCLUDED.kind, position = EXCLUDED.position,
|
|
verification_status = CASE WHEN EXCLUDED.kind = 'primary' THEN 'verified' ELSE inbox_email_addresses.verification_status END,
|
|
verification_token = CASE WHEN EXCLUDED.kind = 'primary' THEN NULL ELSE inbox_email_addresses.verification_token END;
|
|
|
|
-- name: get-alias-verification-states
|
|
SELECT email, verification_status, verified_at
|
|
FROM inbox_email_addresses
|
|
WHERE inbox_id = $1 AND kind = 'alias'
|
|
FOR UPDATE;
|
|
|
|
-- name: start-alias-verification
|
|
UPDATE inbox_email_addresses
|
|
SET verification_status = $3,
|
|
verification_token = $4,
|
|
verification_started_at = NOW()
|
|
WHERE inbox_id = $1 AND LOWER(email) = LOWER($2) AND kind = 'alias';
|
|
|
|
-- name: fail-alias-verification
|
|
UPDATE inbox_email_addresses
|
|
SET verification_status = $3, verification_token = NULL
|
|
WHERE inbox_id = $1 AND LOWER(email) = LOWER($2) AND kind = 'alias' AND verification_token = $4;
|
|
|
|
-- name: complete-alias-verification
|
|
UPDATE inbox_email_addresses
|
|
SET verification_status = $4, verification_token = NULL, verified_at = NOW()
|
|
WHERE inbox_id = $1 AND verification_token = $2 AND LOWER(email) = $3
|
|
AND kind = 'alias';
|
|
|
|
-- name: fail-alias-verification-by-token
|
|
UPDATE inbox_email_addresses
|
|
SET verification_status = $3, verification_token = NULL
|
|
WHERE inbox_id = $1 AND verification_token = $2 AND kind = 'alias' AND verification_status = $4;
|
|
|
|
-- name: expire-alias-verifications
|
|
UPDATE inbox_email_addresses
|
|
SET verification_status = $2, verification_token = NULL
|
|
WHERE inbox_id = $1 AND kind = 'alias' AND verification_status = $3 AND verification_started_at < $4;
|