Yimaru-BackEnd/db/query/notification.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();