73 lines
1.2 KiB
SQL
73 lines
1.2 KiB
SQL
-- name: CreateNotification :one
|
|
INSERT INTO notifications (
|
|
user_id,
|
|
type,
|
|
level,
|
|
channel,
|
|
title,
|
|
message,
|
|
payload
|
|
)
|
|
VALUES (
|
|
$1,
|
|
$2,
|
|
$3,
|
|
$4,
|
|
$5,
|
|
$6,
|
|
$7
|
|
)
|
|
RETURNING *;
|
|
|
|
-- name: GetNotification :one
|
|
SELECT *
|
|
FROM notifications
|
|
WHERE id = $1
|
|
LIMIT 1;
|
|
|
|
-- name: GetAllNotifications :many
|
|
SELECT *
|
|
FROM notifications
|
|
ORDER BY created_at DESC
|
|
LIMIT $1 OFFSET $2;
|
|
|
|
-- name: GetTotalNotificationCount :one
|
|
SELECT COUNT(*)
|
|
FROM notifications;
|
|
|
|
-- name: GetUserNotifications :many
|
|
SELECT *
|
|
FROM notifications
|
|
WHERE user_id = $1
|
|
ORDER BY created_at DESC
|
|
LIMIT $2 OFFSET $3;
|
|
|
|
-- name: GetUserNotificationCount :one
|
|
SELECT COUNT(*)
|
|
FROM notifications
|
|
WHERE user_id = $1;
|
|
|
|
-- name: CountUnreadNotifications :one
|
|
SELECT COUNT(*)
|
|
FROM notifications
|
|
WHERE user_id = $1
|
|
AND is_read = FALSE;
|
|
|
|
-- name: MarkNotificationAsRead :one
|
|
UPDATE notifications
|
|
SET is_read = TRUE,
|
|
read_at = NOW()
|
|
WHERE id = $1
|
|
RETURNING *;
|
|
|
|
-- name: MarkAllUserNotificationsAsRead :exec
|
|
UPDATE notifications
|
|
SET is_read = TRUE,
|
|
read_at = NOW()
|
|
WHERE user_id = $1
|
|
AND is_read = FALSE;
|
|
|
|
-- name: DeleteUserNotifications :exec
|
|
DELETE FROM notifications
|
|
WHERE user_id = $1;
|