first commit
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
-- mstfyldz Journal PostgreSQL Schema for psql
|
||||
|
||||
-- Create Custom Enum Types (if not existing)
|
||||
DO $$ BEGIN
|
||||
IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'post_type') THEN
|
||||
CREATE TYPE post_type AS ENUM ('notebook', 'sticky', 'polaroid', 'code', 'audio');
|
||||
END IF;
|
||||
IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'mood_type') THEN
|
||||
CREATE TYPE mood_type AS ENUM ('focus', 'night', 'spark', 'calm', 'visual');
|
||||
END IF;
|
||||
END $$;
|
||||
|
||||
-- Create Posts Table
|
||||
CREATE TABLE IF NOT EXISTS posts (
|
||||
id VARCHAR(255) PRIMARY KEY,
|
||||
type post_type NOT NULL,
|
||||
date VARCHAR(50) NOT NULL,
|
||||
timestamp VARCHAR(50) NOT NULL,
|
||||
mood mood_type NOT NULL,
|
||||
mood_label VARCHAR(100) NOT NULL,
|
||||
title TEXT,
|
||||
content TEXT NOT NULL,
|
||||
margin_notes TEXT[] DEFAULT '{}',
|
||||
tags TEXT[] DEFAULT '{}',
|
||||
likes INT DEFAULT 0 NOT NULL,
|
||||
highlight_words TEXT[] DEFAULT '{}',
|
||||
author_note TEXT,
|
||||
image_url TEXT,
|
||||
image_caption TEXT,
|
||||
code_snippet TEXT,
|
||||
code_language VARCHAR(50),
|
||||
audio_duration VARCHAR(50),
|
||||
audio_title TEXT,
|
||||
stamped_text VARCHAR(100),
|
||||
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
||||
updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP NOT NULL
|
||||
);
|
||||
|
||||
-- Performance Indexes
|
||||
CREATE INDEX IF NOT EXISTS idx_posts_mood ON posts(mood);
|
||||
CREATE INDEX IF NOT EXISTS idx_posts_type ON posts(type);
|
||||
CREATE INDEX IF NOT EXISTS idx_posts_created_at ON posts(created_at DESC);
|
||||
Reference in New Issue
Block a user