tailly_clips/migrations/0001_initial_clips_schema.up.sql
admin 7bfc7eb9a8
All checks were successful
continuous-integration/drone/push Build is passing
v.0.0.2 Убран duration из клипов
2025-09-02 23:03:30 +03:00

42 lines
2.0 KiB
SQL

-- Клипы
CREATE TABLE clips (
id SERIAL PRIMARY KEY,
title VARCHAR(255),
video_url TEXT NOT NULL,
thumbnail_url TEXT NOT NULL,
author_id INTEGER NOT NULL,
likes_count INTEGER DEFAULT 0,
comments_count INTEGER DEFAULT 0,
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(),
updated_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(),
deleted_at TIMESTAMP WITH TIME ZONE
);
-- Лайки клипов
CREATE TABLE clip_likes (
id SERIAL PRIMARY KEY,
clip_id INTEGER NOT NULL REFERENCES clips(id) ON DELETE CASCADE,
user_id INTEGER NOT NULL,
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(),
UNIQUE(clip_id, user_id)
);
-- Комментарии к клипам
CREATE TABLE clip_comments (
id SERIAL PRIMARY KEY,
content TEXT NOT NULL,
clip_id INTEGER NOT NULL REFERENCES clips(id) ON DELETE CASCADE,
author_id INTEGER NOT NULL,
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(),
updated_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(),
deleted_at TIMESTAMP WITH TIME ZONE
);
-- Индексы для производительности
CREATE INDEX idx_clips_author_id ON clips(author_id);
CREATE INDEX idx_clip_likes_clip_id ON clip_likes(clip_id);
CREATE INDEX idx_clip_likes_user_id ON clip_likes(user_id);
CREATE INDEX idx_clip_comments_clip_id ON clip_comments(clip_id);
CREATE INDEX idx_clip_comments_author_id ON clip_comments(author_id);
CREATE INDEX idx_clips_deleted_at ON clips(deleted_at);
CREATE INDEX idx_clip_comments_deleted_at ON clip_comments(deleted_at);