43 lines
2.1 KiB
SQL
43 lines
2.1 KiB
SQL
-- Клипы
|
|
CREATE TABLE clips (
|
|
id SERIAL PRIMARY KEY,
|
|
title VARCHAR(255) NOT NULL,
|
|
video_url TEXT NOT NULL,
|
|
thumbnail_url TEXT NOT NULL,
|
|
duration INT 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); |