first commit
Made-with: Cursor
This commit is contained in:
98
sqlc/queries/events.sql
Normal file
98
sqlc/queries/events.sql
Normal file
@@ -0,0 +1,98 @@
|
||||
-- name: CreateEvent :one
|
||||
INSERT INTO events (id, calendar_id, title, description, location, start_time, end_time, timezone, all_day, recurrence_rule, tags, created_by, updated_by)
|
||||
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13)
|
||||
RETURNING *;
|
||||
|
||||
-- name: GetEventByID :one
|
||||
SELECT * FROM events
|
||||
WHERE id = $1 AND deleted_at IS NULL;
|
||||
|
||||
-- name: ListEventsInRange :many
|
||||
SELECT e.* FROM events e
|
||||
JOIN calendar_members cm ON cm.calendar_id = e.calendar_id
|
||||
WHERE cm.user_id = @user_id
|
||||
AND e.deleted_at IS NULL
|
||||
AND e.start_time < @range_end
|
||||
AND e.end_time > @range_start
|
||||
AND (sqlc.narg('calendar_id')::UUID IS NULL OR e.calendar_id = sqlc.narg('calendar_id')::UUID)
|
||||
AND (sqlc.narg('search')::TEXT IS NULL OR (e.title ILIKE '%' || sqlc.narg('search')::TEXT || '%' OR e.description ILIKE '%' || sqlc.narg('search')::TEXT || '%'))
|
||||
AND (sqlc.narg('tag')::TEXT IS NULL OR sqlc.narg('tag')::TEXT = ANY(e.tags))
|
||||
AND (
|
||||
sqlc.narg('cursor_time')::TIMESTAMPTZ IS NULL
|
||||
OR (e.start_time, e.id) > (sqlc.narg('cursor_time')::TIMESTAMPTZ, sqlc.narg('cursor_id')::UUID)
|
||||
)
|
||||
ORDER BY e.start_time ASC, e.id ASC
|
||||
LIMIT @lim;
|
||||
|
||||
-- name: ListRecurringEventsInRange :many
|
||||
SELECT e.* FROM events e
|
||||
JOIN calendar_members cm ON cm.calendar_id = e.calendar_id
|
||||
WHERE cm.user_id = @user_id
|
||||
AND e.deleted_at IS NULL
|
||||
AND e.recurrence_rule IS NOT NULL
|
||||
AND e.start_time <= @range_end
|
||||
AND (sqlc.narg('calendar_id')::UUID IS NULL OR e.calendar_id = sqlc.narg('calendar_id')::UUID)
|
||||
ORDER BY e.start_time ASC;
|
||||
|
||||
-- name: UpdateEvent :one
|
||||
UPDATE events
|
||||
SET title = COALESCE(sqlc.narg('title'), title),
|
||||
description = COALESCE(sqlc.narg('description'), description),
|
||||
location = COALESCE(sqlc.narg('location'), location),
|
||||
start_time = COALESCE(sqlc.narg('start_time'), start_time),
|
||||
end_time = COALESCE(sqlc.narg('end_time'), end_time),
|
||||
timezone = COALESCE(sqlc.narg('timezone'), timezone),
|
||||
all_day = COALESCE(sqlc.narg('all_day'), all_day),
|
||||
recurrence_rule = sqlc.narg('recurrence_rule'),
|
||||
tags = COALESCE(sqlc.narg('tags'), tags),
|
||||
updated_by = @updated_by,
|
||||
updated_at = now()
|
||||
WHERE id = @id AND deleted_at IS NULL
|
||||
RETURNING *;
|
||||
|
||||
-- name: SoftDeleteEvent :exec
|
||||
UPDATE events SET deleted_at = now(), updated_at = now()
|
||||
WHERE id = $1 AND deleted_at IS NULL;
|
||||
|
||||
-- name: SoftDeleteEventsByCalendar :exec
|
||||
UPDATE events SET deleted_at = now(), updated_at = now()
|
||||
WHERE calendar_id = $1 AND deleted_at IS NULL;
|
||||
|
||||
-- name: SoftDeleteEventsByCreator :exec
|
||||
UPDATE events SET deleted_at = now(), updated_at = now()
|
||||
WHERE created_by = $1 AND deleted_at IS NULL;
|
||||
|
||||
-- name: CheckEventOverlap :one
|
||||
SELECT EXISTS(
|
||||
SELECT 1 FROM events
|
||||
WHERE calendar_id = $1
|
||||
AND deleted_at IS NULL
|
||||
AND start_time < $3
|
||||
AND end_time > $2
|
||||
) AS overlap;
|
||||
|
||||
-- name: CheckEventOverlapForUpdate :one
|
||||
SELECT EXISTS(
|
||||
SELECT 1 FROM events
|
||||
WHERE calendar_id = $1
|
||||
AND deleted_at IS NULL
|
||||
AND start_time < $3
|
||||
AND end_time > $2
|
||||
FOR UPDATE
|
||||
) AS overlap;
|
||||
|
||||
-- name: ListEventsByCalendarInRange :many
|
||||
SELECT * FROM events
|
||||
WHERE calendar_id = $1
|
||||
AND deleted_at IS NULL
|
||||
AND start_time < $3
|
||||
AND end_time > $2
|
||||
ORDER BY start_time ASC;
|
||||
|
||||
-- name: ListRecurringEventsByCalendar :many
|
||||
SELECT * FROM events
|
||||
WHERE calendar_id = $1
|
||||
AND deleted_at IS NULL
|
||||
AND recurrence_rule IS NOT NULL
|
||||
AND start_time <= $2
|
||||
ORDER BY start_time ASC;
|
||||
Reference in New Issue
Block a user