-- -- 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();