99 lines
2.2 KiB
SQL
99 lines
2.2 KiB
SQL
-- -- name: CreateNotification :one
|
|
-- INSERT INTO notifications (
|
|
-- id,
|
|
-- recipient_id,
|
|
-- type,
|
|
-- level,
|
|
-- error_severity,
|
|
-- reciever,
|
|
-- is_read,
|
|
-- delivery_status,
|
|
-- delivery_channel,
|
|
-- payload,
|
|
-- priority,
|
|
-- timestamp,
|
|
-- expires,
|
|
-- img,
|
|
-- metadata
|
|
-- )
|
|
-- VALUES (
|
|
-- $1,
|
|
-- $2,
|
|
-- $3,
|
|
-- $4,
|
|
-- $5,
|
|
-- $6,
|
|
-- $7,
|
|
-- $8,
|
|
-- $9,
|
|
-- $10,
|
|
-- $11,
|
|
-- $12,
|
|
-- $13,
|
|
-- $14,
|
|
-- $15
|
|
-- )
|
|
-- RETURNING *;
|
|
-- -- name: GetNotification :one
|
|
-- SELECT *
|
|
-- FROM notifications
|
|
-- WHERE id = $1
|
|
-- LIMIT 1;
|
|
-- -- name: GetAllNotifications :many
|
|
-- SELECT *
|
|
-- FROM notifications
|
|
-- ORDER BY timestamp DESC
|
|
-- LIMIT $1 OFFSET $2;
|
|
-- -- name: GetTotalNotificationCount :one
|
|
-- SELECT COUNT(*)
|
|
-- FROM notifications;
|
|
-- -- name: GetUserNotifications :many
|
|
-- SELECT *
|
|
-- FROM notifications
|
|
-- WHERE recipient_id = $1
|
|
-- ORDER BY timestamp DESC
|
|
-- LIMIT $2 OFFSET $3;
|
|
-- -- name: GetUserNotificationCount :one
|
|
-- SELECT COUNT(*)
|
|
-- FROM notifications
|
|
-- WHERE recipient_id = $1;
|
|
-- -- name: CountUnreadNotifications :one
|
|
-- SELECT count(id)
|
|
-- FROM notifications
|
|
-- WHERE recipient_id = $1
|
|
-- AND is_read = false;
|
|
-- -- name: UpdateNotificationStatus :one
|
|
-- UPDATE notifications
|
|
-- SET delivery_status = $2,
|
|
-- is_read = $3,
|
|
-- metadata = $4
|
|
-- WHERE id = $1
|
|
-- RETURNING *;
|
|
-- -- name: ListFailedNotifications :many
|
|
-- SELECT *
|
|
-- FROM notifications
|
|
-- WHERE delivery_status = 'failed'
|
|
-- AND timestamp < NOW() - INTERVAL '1 hour'
|
|
-- ORDER BY timestamp ASC
|
|
-- LIMIT $1;
|
|
-- -- name: ListRecipientIDsByReceiver :many
|
|
-- SELECT recipient_id
|
|
-- FROM notifications
|
|
-- WHERE reciever = $1;
|
|
-- -- name: GetNotificationCounts :many
|
|
-- SELECT COUNT(*) as total,
|
|
-- COUNT(
|
|
-- CASE
|
|
-- WHEN is_read = true THEN 1
|
|
-- END
|
|
-- ) as read,
|
|
-- COUNT(
|
|
-- CASE
|
|
-- WHEN is_read = false THEN 1
|
|
-- END
|
|
-- ) as unread
|
|
-- FROM notifications;
|
|
|
|
-- -- name: DeleteOldNotifications :exec
|
|
-- DELETE FROM notifications
|
|
-- WHERE expires < now(); |