first commit
Made-with: Cursor
This commit is contained in:
479
internal/repository/events.sql.go
Normal file
479
internal/repository/events.sql.go
Normal file
@@ -0,0 +1,479 @@
|
||||
// Code generated by sqlc. DO NOT EDIT.
|
||||
// versions:
|
||||
// sqlc v1.30.0
|
||||
// source: events.sql
|
||||
|
||||
package repository
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/jackc/pgx/v5/pgtype"
|
||||
)
|
||||
|
||||
const checkEventOverlap = `-- 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
|
||||
`
|
||||
|
||||
type CheckEventOverlapParams struct {
|
||||
CalendarID pgtype.UUID `json:"calendar_id"`
|
||||
EndTime pgtype.Timestamptz `json:"end_time"`
|
||||
StartTime pgtype.Timestamptz `json:"start_time"`
|
||||
}
|
||||
|
||||
func (q *Queries) CheckEventOverlap(ctx context.Context, arg CheckEventOverlapParams) (bool, error) {
|
||||
row := q.db.QueryRow(ctx, checkEventOverlap, arg.CalendarID, arg.EndTime, arg.StartTime)
|
||||
var overlap bool
|
||||
err := row.Scan(&overlap)
|
||||
return overlap, err
|
||||
}
|
||||
|
||||
const checkEventOverlapForUpdate = `-- 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
|
||||
`
|
||||
|
||||
type CheckEventOverlapForUpdateParams struct {
|
||||
CalendarID pgtype.UUID `json:"calendar_id"`
|
||||
EndTime pgtype.Timestamptz `json:"end_time"`
|
||||
StartTime pgtype.Timestamptz `json:"start_time"`
|
||||
}
|
||||
|
||||
func (q *Queries) CheckEventOverlapForUpdate(ctx context.Context, arg CheckEventOverlapForUpdateParams) (bool, error) {
|
||||
row := q.db.QueryRow(ctx, checkEventOverlapForUpdate, arg.CalendarID, arg.EndTime, arg.StartTime)
|
||||
var overlap bool
|
||||
err := row.Scan(&overlap)
|
||||
return overlap, err
|
||||
}
|
||||
|
||||
const createEvent = `-- 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 id, calendar_id, title, description, location, start_time, end_time, timezone, all_day, recurrence_rule, tags, created_by, updated_by, created_at, updated_at, deleted_at
|
||||
`
|
||||
|
||||
type CreateEventParams struct {
|
||||
ID pgtype.UUID `json:"id"`
|
||||
CalendarID pgtype.UUID `json:"calendar_id"`
|
||||
Title string `json:"title"`
|
||||
Description pgtype.Text `json:"description"`
|
||||
Location pgtype.Text `json:"location"`
|
||||
StartTime pgtype.Timestamptz `json:"start_time"`
|
||||
EndTime pgtype.Timestamptz `json:"end_time"`
|
||||
Timezone string `json:"timezone"`
|
||||
AllDay bool `json:"all_day"`
|
||||
RecurrenceRule pgtype.Text `json:"recurrence_rule"`
|
||||
Tags []string `json:"tags"`
|
||||
CreatedBy pgtype.UUID `json:"created_by"`
|
||||
UpdatedBy pgtype.UUID `json:"updated_by"`
|
||||
}
|
||||
|
||||
func (q *Queries) CreateEvent(ctx context.Context, arg CreateEventParams) (Event, error) {
|
||||
row := q.db.QueryRow(ctx, createEvent,
|
||||
arg.ID,
|
||||
arg.CalendarID,
|
||||
arg.Title,
|
||||
arg.Description,
|
||||
arg.Location,
|
||||
arg.StartTime,
|
||||
arg.EndTime,
|
||||
arg.Timezone,
|
||||
arg.AllDay,
|
||||
arg.RecurrenceRule,
|
||||
arg.Tags,
|
||||
arg.CreatedBy,
|
||||
arg.UpdatedBy,
|
||||
)
|
||||
var i Event
|
||||
err := row.Scan(
|
||||
&i.ID,
|
||||
&i.CalendarID,
|
||||
&i.Title,
|
||||
&i.Description,
|
||||
&i.Location,
|
||||
&i.StartTime,
|
||||
&i.EndTime,
|
||||
&i.Timezone,
|
||||
&i.AllDay,
|
||||
&i.RecurrenceRule,
|
||||
&i.Tags,
|
||||
&i.CreatedBy,
|
||||
&i.UpdatedBy,
|
||||
&i.CreatedAt,
|
||||
&i.UpdatedAt,
|
||||
&i.DeletedAt,
|
||||
)
|
||||
return i, err
|
||||
}
|
||||
|
||||
const getEventByID = `-- name: GetEventByID :one
|
||||
SELECT id, calendar_id, title, description, location, start_time, end_time, timezone, all_day, recurrence_rule, tags, created_by, updated_by, created_at, updated_at, deleted_at FROM events
|
||||
WHERE id = $1 AND deleted_at IS NULL
|
||||
`
|
||||
|
||||
func (q *Queries) GetEventByID(ctx context.Context, id pgtype.UUID) (Event, error) {
|
||||
row := q.db.QueryRow(ctx, getEventByID, id)
|
||||
var i Event
|
||||
err := row.Scan(
|
||||
&i.ID,
|
||||
&i.CalendarID,
|
||||
&i.Title,
|
||||
&i.Description,
|
||||
&i.Location,
|
||||
&i.StartTime,
|
||||
&i.EndTime,
|
||||
&i.Timezone,
|
||||
&i.AllDay,
|
||||
&i.RecurrenceRule,
|
||||
&i.Tags,
|
||||
&i.CreatedBy,
|
||||
&i.UpdatedBy,
|
||||
&i.CreatedAt,
|
||||
&i.UpdatedAt,
|
||||
&i.DeletedAt,
|
||||
)
|
||||
return i, err
|
||||
}
|
||||
|
||||
const listEventsByCalendarInRange = `-- name: ListEventsByCalendarInRange :many
|
||||
SELECT id, calendar_id, title, description, location, start_time, end_time, timezone, all_day, recurrence_rule, tags, created_by, updated_by, created_at, updated_at, deleted_at FROM events
|
||||
WHERE calendar_id = $1
|
||||
AND deleted_at IS NULL
|
||||
AND start_time < $3
|
||||
AND end_time > $2
|
||||
ORDER BY start_time ASC
|
||||
`
|
||||
|
||||
type ListEventsByCalendarInRangeParams struct {
|
||||
CalendarID pgtype.UUID `json:"calendar_id"`
|
||||
EndTime pgtype.Timestamptz `json:"end_time"`
|
||||
StartTime pgtype.Timestamptz `json:"start_time"`
|
||||
}
|
||||
|
||||
func (q *Queries) ListEventsByCalendarInRange(ctx context.Context, arg ListEventsByCalendarInRangeParams) ([]Event, error) {
|
||||
rows, err := q.db.Query(ctx, listEventsByCalendarInRange, arg.CalendarID, arg.EndTime, arg.StartTime)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
items := []Event{}
|
||||
for rows.Next() {
|
||||
var i Event
|
||||
if err := rows.Scan(
|
||||
&i.ID,
|
||||
&i.CalendarID,
|
||||
&i.Title,
|
||||
&i.Description,
|
||||
&i.Location,
|
||||
&i.StartTime,
|
||||
&i.EndTime,
|
||||
&i.Timezone,
|
||||
&i.AllDay,
|
||||
&i.RecurrenceRule,
|
||||
&i.Tags,
|
||||
&i.CreatedBy,
|
||||
&i.UpdatedBy,
|
||||
&i.CreatedAt,
|
||||
&i.UpdatedAt,
|
||||
&i.DeletedAt,
|
||||
); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
items = append(items, i)
|
||||
}
|
||||
if err := rows.Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return items, nil
|
||||
}
|
||||
|
||||
const listEventsInRange = `-- name: ListEventsInRange :many
|
||||
SELECT e.id, e.calendar_id, e.title, e.description, e.location, e.start_time, e.end_time, e.timezone, e.all_day, e.recurrence_rule, e.tags, e.created_by, e.updated_by, e.created_at, e.updated_at, e.deleted_at FROM events e
|
||||
JOIN calendar_members cm ON cm.calendar_id = e.calendar_id
|
||||
WHERE cm.user_id = $1
|
||||
AND e.deleted_at IS NULL
|
||||
AND e.start_time < $2
|
||||
AND e.end_time > $3
|
||||
AND ($4::UUID IS NULL OR e.calendar_id = $4::UUID)
|
||||
AND ($5::TEXT IS NULL OR (e.title ILIKE '%' || $5::TEXT || '%' OR e.description ILIKE '%' || $5::TEXT || '%'))
|
||||
AND ($6::TEXT IS NULL OR $6::TEXT = ANY(e.tags))
|
||||
AND (
|
||||
$7::TIMESTAMPTZ IS NULL
|
||||
OR (e.start_time, e.id) > ($7::TIMESTAMPTZ, $8::UUID)
|
||||
)
|
||||
ORDER BY e.start_time ASC, e.id ASC
|
||||
LIMIT $9
|
||||
`
|
||||
|
||||
type ListEventsInRangeParams struct {
|
||||
UserID pgtype.UUID `json:"user_id"`
|
||||
RangeEnd pgtype.Timestamptz `json:"range_end"`
|
||||
RangeStart pgtype.Timestamptz `json:"range_start"`
|
||||
CalendarID pgtype.UUID `json:"calendar_id"`
|
||||
Search pgtype.Text `json:"search"`
|
||||
Tag pgtype.Text `json:"tag"`
|
||||
CursorTime pgtype.Timestamptz `json:"cursor_time"`
|
||||
CursorID pgtype.UUID `json:"cursor_id"`
|
||||
Lim int32 `json:"lim"`
|
||||
}
|
||||
|
||||
func (q *Queries) ListEventsInRange(ctx context.Context, arg ListEventsInRangeParams) ([]Event, error) {
|
||||
rows, err := q.db.Query(ctx, listEventsInRange,
|
||||
arg.UserID,
|
||||
arg.RangeEnd,
|
||||
arg.RangeStart,
|
||||
arg.CalendarID,
|
||||
arg.Search,
|
||||
arg.Tag,
|
||||
arg.CursorTime,
|
||||
arg.CursorID,
|
||||
arg.Lim,
|
||||
)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
items := []Event{}
|
||||
for rows.Next() {
|
||||
var i Event
|
||||
if err := rows.Scan(
|
||||
&i.ID,
|
||||
&i.CalendarID,
|
||||
&i.Title,
|
||||
&i.Description,
|
||||
&i.Location,
|
||||
&i.StartTime,
|
||||
&i.EndTime,
|
||||
&i.Timezone,
|
||||
&i.AllDay,
|
||||
&i.RecurrenceRule,
|
||||
&i.Tags,
|
||||
&i.CreatedBy,
|
||||
&i.UpdatedBy,
|
||||
&i.CreatedAt,
|
||||
&i.UpdatedAt,
|
||||
&i.DeletedAt,
|
||||
); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
items = append(items, i)
|
||||
}
|
||||
if err := rows.Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return items, nil
|
||||
}
|
||||
|
||||
const listRecurringEventsByCalendar = `-- name: ListRecurringEventsByCalendar :many
|
||||
SELECT id, calendar_id, title, description, location, start_time, end_time, timezone, all_day, recurrence_rule, tags, created_by, updated_by, created_at, updated_at, deleted_at 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
|
||||
`
|
||||
|
||||
type ListRecurringEventsByCalendarParams struct {
|
||||
CalendarID pgtype.UUID `json:"calendar_id"`
|
||||
StartTime pgtype.Timestamptz `json:"start_time"`
|
||||
}
|
||||
|
||||
func (q *Queries) ListRecurringEventsByCalendar(ctx context.Context, arg ListRecurringEventsByCalendarParams) ([]Event, error) {
|
||||
rows, err := q.db.Query(ctx, listRecurringEventsByCalendar, arg.CalendarID, arg.StartTime)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
items := []Event{}
|
||||
for rows.Next() {
|
||||
var i Event
|
||||
if err := rows.Scan(
|
||||
&i.ID,
|
||||
&i.CalendarID,
|
||||
&i.Title,
|
||||
&i.Description,
|
||||
&i.Location,
|
||||
&i.StartTime,
|
||||
&i.EndTime,
|
||||
&i.Timezone,
|
||||
&i.AllDay,
|
||||
&i.RecurrenceRule,
|
||||
&i.Tags,
|
||||
&i.CreatedBy,
|
||||
&i.UpdatedBy,
|
||||
&i.CreatedAt,
|
||||
&i.UpdatedAt,
|
||||
&i.DeletedAt,
|
||||
); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
items = append(items, i)
|
||||
}
|
||||
if err := rows.Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return items, nil
|
||||
}
|
||||
|
||||
const listRecurringEventsInRange = `-- name: ListRecurringEventsInRange :many
|
||||
SELECT e.id, e.calendar_id, e.title, e.description, e.location, e.start_time, e.end_time, e.timezone, e.all_day, e.recurrence_rule, e.tags, e.created_by, e.updated_by, e.created_at, e.updated_at, e.deleted_at FROM events e
|
||||
JOIN calendar_members cm ON cm.calendar_id = e.calendar_id
|
||||
WHERE cm.user_id = $1
|
||||
AND e.deleted_at IS NULL
|
||||
AND e.recurrence_rule IS NOT NULL
|
||||
AND e.start_time <= $2
|
||||
AND ($3::UUID IS NULL OR e.calendar_id = $3::UUID)
|
||||
ORDER BY e.start_time ASC
|
||||
`
|
||||
|
||||
type ListRecurringEventsInRangeParams struct {
|
||||
UserID pgtype.UUID `json:"user_id"`
|
||||
RangeEnd pgtype.Timestamptz `json:"range_end"`
|
||||
CalendarID pgtype.UUID `json:"calendar_id"`
|
||||
}
|
||||
|
||||
func (q *Queries) ListRecurringEventsInRange(ctx context.Context, arg ListRecurringEventsInRangeParams) ([]Event, error) {
|
||||
rows, err := q.db.Query(ctx, listRecurringEventsInRange, arg.UserID, arg.RangeEnd, arg.CalendarID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
items := []Event{}
|
||||
for rows.Next() {
|
||||
var i Event
|
||||
if err := rows.Scan(
|
||||
&i.ID,
|
||||
&i.CalendarID,
|
||||
&i.Title,
|
||||
&i.Description,
|
||||
&i.Location,
|
||||
&i.StartTime,
|
||||
&i.EndTime,
|
||||
&i.Timezone,
|
||||
&i.AllDay,
|
||||
&i.RecurrenceRule,
|
||||
&i.Tags,
|
||||
&i.CreatedBy,
|
||||
&i.UpdatedBy,
|
||||
&i.CreatedAt,
|
||||
&i.UpdatedAt,
|
||||
&i.DeletedAt,
|
||||
); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
items = append(items, i)
|
||||
}
|
||||
if err := rows.Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return items, nil
|
||||
}
|
||||
|
||||
const softDeleteEvent = `-- name: SoftDeleteEvent :exec
|
||||
UPDATE events SET deleted_at = now(), updated_at = now()
|
||||
WHERE id = $1 AND deleted_at IS NULL
|
||||
`
|
||||
|
||||
func (q *Queries) SoftDeleteEvent(ctx context.Context, id pgtype.UUID) error {
|
||||
_, err := q.db.Exec(ctx, softDeleteEvent, id)
|
||||
return err
|
||||
}
|
||||
|
||||
const softDeleteEventsByCalendar = `-- name: SoftDeleteEventsByCalendar :exec
|
||||
UPDATE events SET deleted_at = now(), updated_at = now()
|
||||
WHERE calendar_id = $1 AND deleted_at IS NULL
|
||||
`
|
||||
|
||||
func (q *Queries) SoftDeleteEventsByCalendar(ctx context.Context, calendarID pgtype.UUID) error {
|
||||
_, err := q.db.Exec(ctx, softDeleteEventsByCalendar, calendarID)
|
||||
return err
|
||||
}
|
||||
|
||||
const softDeleteEventsByCreator = `-- name: SoftDeleteEventsByCreator :exec
|
||||
UPDATE events SET deleted_at = now(), updated_at = now()
|
||||
WHERE created_by = $1 AND deleted_at IS NULL
|
||||
`
|
||||
|
||||
func (q *Queries) SoftDeleteEventsByCreator(ctx context.Context, createdBy pgtype.UUID) error {
|
||||
_, err := q.db.Exec(ctx, softDeleteEventsByCreator, createdBy)
|
||||
return err
|
||||
}
|
||||
|
||||
const updateEvent = `-- name: UpdateEvent :one
|
||||
UPDATE events
|
||||
SET title = COALESCE($1, title),
|
||||
description = COALESCE($2, description),
|
||||
location = COALESCE($3, location),
|
||||
start_time = COALESCE($4, start_time),
|
||||
end_time = COALESCE($5, end_time),
|
||||
timezone = COALESCE($6, timezone),
|
||||
all_day = COALESCE($7, all_day),
|
||||
recurrence_rule = $8,
|
||||
tags = COALESCE($9, tags),
|
||||
updated_by = $10,
|
||||
updated_at = now()
|
||||
WHERE id = $11 AND deleted_at IS NULL
|
||||
RETURNING id, calendar_id, title, description, location, start_time, end_time, timezone, all_day, recurrence_rule, tags, created_by, updated_by, created_at, updated_at, deleted_at
|
||||
`
|
||||
|
||||
type UpdateEventParams struct {
|
||||
Title pgtype.Text `json:"title"`
|
||||
Description pgtype.Text `json:"description"`
|
||||
Location pgtype.Text `json:"location"`
|
||||
StartTime pgtype.Timestamptz `json:"start_time"`
|
||||
EndTime pgtype.Timestamptz `json:"end_time"`
|
||||
Timezone pgtype.Text `json:"timezone"`
|
||||
AllDay pgtype.Bool `json:"all_day"`
|
||||
RecurrenceRule pgtype.Text `json:"recurrence_rule"`
|
||||
Tags []string `json:"tags"`
|
||||
UpdatedBy pgtype.UUID `json:"updated_by"`
|
||||
ID pgtype.UUID `json:"id"`
|
||||
}
|
||||
|
||||
func (q *Queries) UpdateEvent(ctx context.Context, arg UpdateEventParams) (Event, error) {
|
||||
row := q.db.QueryRow(ctx, updateEvent,
|
||||
arg.Title,
|
||||
arg.Description,
|
||||
arg.Location,
|
||||
arg.StartTime,
|
||||
arg.EndTime,
|
||||
arg.Timezone,
|
||||
arg.AllDay,
|
||||
arg.RecurrenceRule,
|
||||
arg.Tags,
|
||||
arg.UpdatedBy,
|
||||
arg.ID,
|
||||
)
|
||||
var i Event
|
||||
err := row.Scan(
|
||||
&i.ID,
|
||||
&i.CalendarID,
|
||||
&i.Title,
|
||||
&i.Description,
|
||||
&i.Location,
|
||||
&i.StartTime,
|
||||
&i.EndTime,
|
||||
&i.Timezone,
|
||||
&i.AllDay,
|
||||
&i.RecurrenceRule,
|
||||
&i.Tags,
|
||||
&i.CreatedBy,
|
||||
&i.UpdatedBy,
|
||||
&i.CreatedAt,
|
||||
&i.UpdatedAt,
|
||||
&i.DeletedAt,
|
||||
)
|
||||
return i, err
|
||||
}
|
||||
Reference in New Issue
Block a user