28 lines
960 B
SQL
28 lines
960 B
SQL
-- migrations/0008_events.sql
|
|
-- Phase 10: Events
|
|
|
|
-- +goose Up
|
|
|
|
CREATE TABLE events (
|
|
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
tablo_id uuid NOT NULL REFERENCES tablos(id) ON DELETE CASCADE,
|
|
title text NOT NULL,
|
|
event_date date NOT NULL,
|
|
start_time time NOT NULL,
|
|
end_time time,
|
|
description text,
|
|
location text,
|
|
created_at timestamptz NOT NULL DEFAULT now(),
|
|
updated_at timestamptz NOT NULL DEFAULT now(),
|
|
CONSTRAINT events_title_not_blank CHECK (length(trim(title)) > 0),
|
|
CONSTRAINT events_end_after_start CHECK (end_time IS NULL OR end_time > start_time)
|
|
);
|
|
|
|
CREATE INDEX events_tablo_month_idx ON events(tablo_id, event_date, start_time, title);
|
|
CREATE INDEX events_date_idx ON events(event_date, start_time);
|
|
|
|
-- +goose Down
|
|
|
|
DROP INDEX IF EXISTS events_date_idx;
|
|
DROP INDEX IF EXISTS events_tablo_month_idx;
|
|
DROP TABLE IF EXISTS events;
|