mirror of
https://github.com/SamyRai/turash.git
synced 2025-12-26 23:01:33 +00:00
77 lines
2.6 KiB
SQL
Executable File
77 lines
2.6 KiB
SQL
Executable File
-- Create content management tables
|
|
-- Migration: 017_create_content_tables.up.sql
|
|
|
|
-- Static pages table
|
|
CREATE TABLE IF NOT EXISTS static_pages (
|
|
id TEXT PRIMARY KEY,
|
|
slug TEXT UNIQUE NOT NULL,
|
|
title TEXT NOT NULL,
|
|
content TEXT,
|
|
meta_description TEXT,
|
|
seo_keywords JSONB DEFAULT '[]'::jsonb,
|
|
status VARCHAR(20) DEFAULT 'draft',
|
|
visibility VARCHAR(20) DEFAULT 'public',
|
|
template VARCHAR(100),
|
|
published_at TIMESTAMP WITH TIME ZONE,
|
|
created_by TEXT,
|
|
updated_by TEXT,
|
|
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
|
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
|
|
);
|
|
|
|
-- Create indexes for static_pages
|
|
CREATE INDEX IF NOT EXISTS idx_static_pages_slug ON static_pages(slug);
|
|
CREATE INDEX IF NOT EXISTS idx_static_pages_status ON static_pages(status);
|
|
CREATE INDEX IF NOT EXISTS idx_static_pages_published_at ON static_pages(published_at);
|
|
|
|
-- Announcements table
|
|
CREATE TABLE IF NOT EXISTS announcements (
|
|
id TEXT PRIMARY KEY,
|
|
title TEXT NOT NULL,
|
|
content TEXT NOT NULL,
|
|
priority VARCHAR(20) DEFAULT 'normal',
|
|
display_type VARCHAR(20) DEFAULT 'banner',
|
|
target_audience VARCHAR(20) DEFAULT 'all',
|
|
target_groups JSONB DEFAULT '[]'::jsonb,
|
|
start_date TIMESTAMP WITH TIME ZONE,
|
|
end_date TIMESTAMP WITH TIME ZONE,
|
|
is_active BOOLEAN DEFAULT TRUE,
|
|
views BIGINT DEFAULT 0,
|
|
clicks BIGINT DEFAULT 0,
|
|
dismissals BIGINT DEFAULT 0,
|
|
created_by TEXT,
|
|
updated_by TEXT,
|
|
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
|
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
|
|
);
|
|
|
|
-- Create indexes for announcements
|
|
CREATE INDEX IF NOT EXISTS idx_announcements_is_active ON announcements(is_active);
|
|
CREATE INDEX IF NOT EXISTS idx_announcements_start_date ON announcements(start_date);
|
|
CREATE INDEX IF NOT EXISTS idx_announcements_end_date ON announcements(end_date);
|
|
CREATE INDEX IF NOT EXISTS idx_announcements_priority ON announcements(priority);
|
|
|
|
-- Media assets table
|
|
CREATE TABLE IF NOT EXISTS media_assets (
|
|
id TEXT PRIMARY KEY,
|
|
filename TEXT NOT NULL,
|
|
original_name TEXT NOT NULL,
|
|
url TEXT NOT NULL,
|
|
type VARCHAR(20) NOT NULL,
|
|
mime_type VARCHAR(100),
|
|
size BIGINT,
|
|
width INTEGER,
|
|
height INTEGER,
|
|
duration INTEGER,
|
|
alt_text TEXT,
|
|
tags JSONB DEFAULT '[]'::jsonb,
|
|
uploaded_by TEXT,
|
|
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
|
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
|
|
);
|
|
|
|
-- Create indexes for media_assets
|
|
CREATE INDEX IF NOT EXISTS idx_media_assets_type ON media_assets(type);
|
|
CREATE INDEX IF NOT EXISTS idx_media_assets_created_at ON media_assets(created_at);
|
|
|