mirror of
https://github.com/abhinavxd/libredesk.git
synced 2026-10-26 22:37:00 +00:00
76 lines
2.4 KiB
SQL
76 lines
2.4 KiB
SQL
-- name: search-conversations-by-reference-number
|
|
SELECT
|
|
conversations.created_at,
|
|
conversations.uuid,
|
|
conversations.reference_number,
|
|
conversations.subject,
|
|
cs.name AS status
|
|
FROM conversations
|
|
LEFT JOIN conversation_statuses cs ON conversations.status_id = cs.id
|
|
WHERE reference_number::text = $1
|
|
AND $3
|
|
AND (
|
|
$4
|
|
OR ($5 AND conversations.assigned_user_id = $2)
|
|
OR ($6 AND conversations.assigned_team_id = ANY($9::int[]))
|
|
OR ($7 AND conversations.assigned_team_id = ANY($9::int[]) AND conversations.assigned_user_id IS NULL)
|
|
OR ($8 AND conversations.assigned_user_id IS NULL AND conversations.assigned_team_id IS NULL)
|
|
);
|
|
|
|
-- name: search-conversations-by-contact-email
|
|
SELECT
|
|
conversations.created_at,
|
|
conversations.uuid,
|
|
conversations.reference_number,
|
|
conversations.subject,
|
|
cs.name AS status
|
|
FROM conversations
|
|
JOIN users ON conversations.contact_id = users.id
|
|
LEFT JOIN conversation_statuses cs ON conversations.status_id = cs.id
|
|
WHERE users.email ILIKE '%' || $1 || '%'
|
|
AND $3
|
|
AND (
|
|
$4
|
|
OR ($5 AND conversations.assigned_user_id = $2)
|
|
OR ($6 AND conversations.assigned_team_id = ANY($9::int[]))
|
|
OR ($7 AND conversations.assigned_team_id = ANY($9::int[]) AND conversations.assigned_user_id IS NULL)
|
|
OR ($8 AND conversations.assigned_user_id IS NULL AND conversations.assigned_team_id IS NULL)
|
|
)
|
|
ORDER BY conversations.created_at DESC
|
|
LIMIT $10;
|
|
|
|
-- name: search-messages
|
|
SELECT
|
|
c.created_at as "conversation_created_at",
|
|
c.reference_number as "conversation_reference_number",
|
|
c.uuid as "conversation_uuid",
|
|
LEFT(m.text_content, 200) AS text_content,
|
|
cs.name as "conversation_status"
|
|
FROM conversation_messages m
|
|
JOIN conversations c ON m.conversation_id = c.id
|
|
LEFT JOIN conversation_statuses cs ON c.status_id = cs.id
|
|
WHERE m.type != 'activity' and m.text_content ILIKE '%' || $1 || '%'
|
|
AND $3
|
|
AND (
|
|
$4
|
|
OR ($5 AND c.assigned_user_id = $2)
|
|
OR ($6 AND c.assigned_team_id = ANY($9::int[]))
|
|
OR ($7 AND c.assigned_team_id = ANY($9::int[]) AND c.assigned_user_id IS NULL)
|
|
OR ($8 AND c.assigned_user_id IS NULL AND c.assigned_team_id IS NULL)
|
|
)
|
|
LIMIT $10;
|
|
|
|
-- name: search-contacts
|
|
SELECT
|
|
id,
|
|
created_at,
|
|
first_name,
|
|
last_name,
|
|
email,
|
|
external_user_id
|
|
FROM users
|
|
WHERE type = 'contact'
|
|
AND deleted_at IS NULL
|
|
AND email ILIKE '%' || $1 || '%'
|
|
LIMIT $2;
|