init
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
CREATE EXTENSION IF NOT EXISTS pgcrypto;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS gifts (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
slug VARCHAR(100) NOT NULL UNIQUE,
|
||||
recipient_name TEXT NOT NULL,
|
||||
sender_name TEXT NOT NULL,
|
||||
title TEXT NOT NULL,
|
||||
intro_message TEXT NOT NULL,
|
||||
reveal_message TEXT NOT NULL,
|
||||
status TEXT NOT NULL DEFAULT 'published',
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
CONSTRAINT gifts_status_check CHECK (status IN ('draft', 'published', 'archived'))
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS gift_items (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
gift_id UUID NOT NULL REFERENCES gifts(id) ON DELETE CASCADE,
|
||||
type TEXT NOT NULL,
|
||||
title TEXT,
|
||||
text TEXT,
|
||||
media_url TEXT,
|
||||
sort_order INTEGER NOT NULL DEFAULT 0,
|
||||
metadata JSONB NOT NULL DEFAULT '{}'::jsonb,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
CONSTRAINT gift_items_type_check CHECK (length(trim(type)) > 0)
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS gift_items_gift_id_sort_order_idx
|
||||
ON gift_items (gift_id, sort_order, id);
|
||||
Reference in New Issue
Block a user