@ooneex/typeorm 0.0.1 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/shared/chunk-19qhst35.js +5 -0
- package/dist/shared/chunk-19qhst35.js.map +12 -0
- package/dist/shared/chunk-31y260d6.js +101 -0
- package/dist/shared/chunk-31y260d6.js.map +11 -0
- package/dist/shared/chunk-59vwmfpm.js +5 -0
- package/dist/shared/chunk-59vwmfpm.js.map +9 -0
- package/dist/shared/chunk-5tnqjb3n.js +5 -0
- package/dist/shared/{chunk-eh420jqn.js.map → chunk-5tnqjb3n.js.map} +2 -2
- package/dist/shared/chunk-5ybg5hda.js +5 -0
- package/dist/shared/{chunk-pwhygf44.js.map → chunk-5ybg5hda.js.map} +2 -2
- package/dist/shared/chunk-6jnj2pfx.js +5 -0
- package/dist/shared/chunk-6jnj2pfx.js.map +10 -0
- package/dist/shared/chunk-6kdkyjbn.js +5 -0
- package/dist/shared/chunk-6kdkyjbn.js.map +10 -0
- package/dist/shared/chunk-aj0aak90.js +42 -0
- package/dist/shared/chunk-aj0aak90.js.map +10 -0
- package/dist/shared/chunk-e51ktjsq.js +5 -0
- package/dist/shared/chunk-e51ktjsq.js.map +18 -0
- package/dist/shared/chunk-jr0xys18.js +36 -0
- package/dist/shared/chunk-jr0xys18.js.map +10 -0
- package/dist/shared/chunk-kw4t1san.js +5 -0
- package/dist/shared/{chunk-wawk30n1.js.map → chunk-kw4t1san.js.map} +9 -4
- package/dist/shared/chunk-nfv9ce7v.js +5 -0
- package/dist/shared/{chunk-wmftwzcs.js.map → chunk-nfv9ce7v.js.map} +2 -2
- package/dist/shared/chunk-p22keb3y.js +5 -0
- package/dist/shared/{chunk-2e7zbxcq.js.map → chunk-p22keb3y.js.map} +2 -2
- package/dist/shared/chunk-pbns711f.js +5 -0
- package/dist/shared/chunk-pbns711f.js.map +10 -0
- package/dist/shared/chunk-qrs0g3m9.js +51 -0
- package/dist/shared/chunk-qrs0g3m9.js.map +10 -0
- package/dist/shared/chunk-qyf32qsz.js +82 -0
- package/dist/shared/chunk-qyf32qsz.js.map +10 -0
- package/dist/shared/chunk-t1jad451.js +5 -0
- package/dist/shared/chunk-t1jad451.js.map +21 -0
- package/dist/shared/chunk-t5cy307m.js +5 -0
- package/dist/shared/chunk-t5cy307m.js.map +10 -0
- package/dist/shared/chunk-x2d798hg.js +5 -0
- package/dist/shared/chunk-x2d798hg.js.map +11 -0
- package/dist/shared/chunk-x3pmm3na.js +5 -0
- package/dist/shared/chunk-x3pmm3na.js.map +21 -0
- package/dist/shared/chunk-xrqhqgen.js +5 -0
- package/dist/shared/{chunk-j7nprmyh.js.map → chunk-xrqhqgen.js.map} +2 -2
- package/dist/shared/chunk-xwe8m6av.js +5 -0
- package/dist/shared/{chunk-zmzz7hqq.js.map → chunk-xwe8m6av.js.map} +2 -2
- package/dist/shared/chunk-yrwsqc6r.js +5 -0
- package/dist/shared/chunk-yrwsqc6r.js.map +21 -0
- package/dist/src/entities/book/index.d.ts +80 -3
- package/dist/src/entities/book/index.js +2 -2
- package/dist/src/entities/book/index.js.map +1 -1
- package/dist/src/entities/common/index.d.ts +21 -28
- package/dist/src/entities/common/index.js +2 -2
- package/dist/src/entities/common/index.js.map +1 -1
- package/dist/src/entities/country/index.d.ts +21 -0
- package/dist/src/entities/country/index.js +4 -0
- package/dist/src/entities/country/index.js.map +9 -0
- package/dist/src/entities/currency/index.d.ts +23 -0
- package/dist/src/entities/currency/index.js +4 -0
- package/dist/src/entities/currency/index.js.map +9 -0
- package/dist/src/entities/folder/index.d.ts +104 -0
- package/dist/src/entities/folder/index.js +4 -0
- package/dist/src/entities/folder/index.js.map +19 -0
- package/dist/src/entities/gamification/flashcard/index.js +2 -2
- package/dist/src/entities/gamification/flashcard/index.js.map +1 -1
- package/dist/src/entities/gamification/index.js +2 -2
- package/dist/src/entities/gamification/index.js.map +1 -1
- package/dist/src/entities/gamification/mcq/index.d.ts +76 -7
- package/dist/src/entities/gamification/mcq/index.js +2 -2
- package/dist/src/entities/gamification/mcq/index.js.map +1 -1
- package/dist/src/entities/image/index.d.ts +83 -6
- package/dist/src/entities/image/index.js +2 -2
- package/dist/src/entities/image/index.js.map +1 -1
- package/dist/src/entities/medecine/index.d.ts +36 -0
- package/dist/src/entities/medecine/index.js +4 -0
- package/dist/src/entities/medecine/index.js.map +9 -0
- package/dist/src/entities/payment/index.js +2 -2
- package/dist/src/entities/payment/index.js.map +1 -1
- package/dist/src/entities/user/index.d.ts +48 -7
- package/dist/src/entities/user/index.js +2 -2
- package/dist/src/entities/user/index.js.map +1 -1
- package/dist/src/entities/video/index.d.ts +88 -10
- package/dist/src/entities/video/index.js +2 -2
- package/dist/src/entities/video/index.js.map +1 -1
- package/dist/src/migrations/book/index.d.ts +97 -0
- package/dist/src/migrations/book/index.js +516 -0
- package/dist/src/migrations/book/index.js.map +21 -0
- package/dist/src/migrations/common/index.d.ts +41 -0
- package/dist/src/migrations/common/index.js +57 -0
- package/dist/src/migrations/common/index.js.map +10 -0
- package/dist/src/migrations/country/index.d.ts +9 -0
- package/dist/src/migrations/country/index.js +40 -0
- package/dist/src/migrations/country/index.js.map +10 -0
- package/dist/src/migrations/currency/index.d.ts +9 -0
- package/dist/src/migrations/currency/index.js +44 -0
- package/dist/src/migrations/currency/index.js.map +10 -0
- package/dist/src/migrations/folder/index.d.ts +81 -0
- package/dist/src/migrations/folder/index.js +387 -0
- package/dist/src/migrations/folder/index.js.map +19 -0
- package/dist/src/migrations/gamification/flashcard/index.d.ts +57 -0
- package/dist/src/migrations/gamification/flashcard/index.js +420 -0
- package/dist/src/migrations/gamification/flashcard/index.js.map +16 -0
- package/dist/src/migrations/gamification/index.d.ts +9 -0
- package/dist/src/migrations/gamification/index.js +4 -0
- package/dist/src/migrations/gamification/index.js.map +9 -0
- package/dist/src/migrations/gamification/mcq/index.d.ts +97 -0
- package/dist/src/migrations/gamification/mcq/index.js +526 -0
- package/dist/src/migrations/gamification/mcq/index.js.map +21 -0
- package/dist/src/migrations/image/index.d.ts +81 -0
- package/dist/src/migrations/image/index.js +328 -0
- package/dist/src/migrations/image/index.js.map +18 -0
- package/dist/src/migrations/medecine/index.d.ts +25 -0
- package/dist/src/migrations/medecine/index.js +119 -0
- package/dist/src/migrations/medecine/index.js.map +12 -0
- package/dist/src/migrations/payment/index.d.ts +49 -0
- package/dist/src/migrations/payment/index.js +352 -0
- package/dist/src/migrations/payment/index.js.map +15 -0
- package/dist/src/migrations/user/index.d.ts +81 -0
- package/dist/src/migrations/user/index.js +309 -0
- package/dist/src/migrations/user/index.js.map +19 -0
- package/dist/src/migrations/video/index.d.ts +97 -0
- package/dist/src/migrations/video/index.js +289 -0
- package/dist/src/migrations/video/index.js.map +21 -0
- package/dist/src/repositories/book/index.d.ts +310 -35
- package/dist/src/repositories/book/index.js +2 -2
- package/dist/src/repositories/book/index.js.map +15 -6
- package/dist/src/repositories/common/index.d.ts +65 -94
- package/dist/src/repositories/common/index.js +2 -2
- package/dist/src/repositories/common/index.js.map +8 -9
- package/dist/src/repositories/country/index.d.ts +42 -0
- package/dist/src/repositories/country/index.js +4 -0
- package/dist/src/repositories/country/index.js.map +10 -0
- package/dist/src/repositories/currency/index.d.ts +44 -0
- package/dist/src/repositories/currency/index.js +4 -0
- package/dist/src/repositories/currency/index.js.map +10 -0
- package/dist/src/repositories/gamification/flashcard/index.d.ts +14 -14
- package/dist/src/repositories/gamification/flashcard/index.js +2 -2
- package/dist/src/repositories/gamification/flashcard/index.js.map +9 -9
- package/dist/src/repositories/gamification/index.d.ts +328 -83
- package/dist/src/repositories/gamification/index.js +2 -2
- package/dist/src/repositories/gamification/index.js.map +3 -3
- package/dist/src/repositories/gamification/mcq/index.d.ts +299 -54
- package/dist/src/repositories/gamification/mcq/index.js +2 -2
- package/dist/src/repositories/gamification/mcq/index.js.map +15 -7
- package/dist/src/repositories/image/index.d.ts +295 -20
- package/dist/src/repositories/image/index.js +2 -2
- package/dist/src/repositories/image/index.js.map +13 -4
- package/dist/src/repositories/medecine/index.d.ts +99 -0
- package/dist/src/repositories/medecine/index.js +4 -0
- package/dist/src/repositories/medecine/index.js.map +12 -0
- package/dist/src/repositories/payment/index.d.ts +12 -12
- package/dist/src/repositories/payment/index.js +2 -2
- package/dist/src/repositories/payment/index.js.map +8 -8
- package/dist/src/repositories/user/index.d.ts +210 -59
- package/dist/src/repositories/user/index.js +2 -2
- package/dist/src/repositories/user/index.js.map +13 -8
- package/dist/src/repositories/video/index.d.ts +330 -54
- package/dist/src/repositories/video/index.js +2 -2
- package/dist/src/repositories/video/index.js.map +15 -6
- package/package.json +188 -58
- package/dist/ooneex-typeorm-0.0.1.tgz +0 -0
- package/dist/shared/chunk-2e7zbxcq.js +0 -5
- package/dist/shared/chunk-764bzjhz.js +0 -5
- package/dist/shared/chunk-764bzjhz.js.map +0 -12
- package/dist/shared/chunk-eh420jqn.js +0 -5
- package/dist/shared/chunk-gjsgnzaq.js +0 -5
- package/dist/shared/chunk-gjsgnzaq.js.map +0 -10
- package/dist/shared/chunk-hw4vdg6q.js +0 -5
- package/dist/shared/chunk-hw4vdg6q.js.map +0 -10
- package/dist/shared/chunk-j7nprmyh.js +0 -5
- package/dist/shared/chunk-kgxsdeye.js +0 -5
- package/dist/shared/chunk-kgxsdeye.js.map +0 -13
- package/dist/shared/chunk-ntrrrvwt.js +0 -5
- package/dist/shared/chunk-ntrrrvwt.js.map +0 -12
- package/dist/shared/chunk-pwhygf44.js +0 -5
- package/dist/shared/chunk-sd6mmec6.js +0 -5
- package/dist/shared/chunk-sd6mmec6.js.map +0 -12
- package/dist/shared/chunk-wawk30n1.js +0 -5
- package/dist/shared/chunk-wmftwzcs.js +0 -5
- package/dist/shared/chunk-zmzz7hqq.js +0 -5
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
import{Ha as d}from"../../../shared/chunk-59vwmfpm.js";import{decorator as l}from"@ooneex/migrations";class i{async up(e){await e`CREATE TYPE video_resolution AS ENUM ('144p', '240p', '360p', '480p', '720p', '1080p', '1440p', '2160p', '4320p')`,await e`CREATE TYPE video_quality AS ENUM ('low', 'medium', 'high', 'ultra')`,await e`CREATE TYPE video_format AS ENUM ('mp4', 'webm', 'ogg', 'avi', 'mov', 'mkv', 'flv', 'wmv')`,await e`CREATE TYPE video_codec AS ENUM ('h264', 'h265', 'vp8', 'vp9', 'av1')`,await e`
|
|
3
|
+
CREATE TABLE IF NOT EXISTS videos (
|
|
4
|
+
id VARCHAR(25) PRIMARY KEY,
|
|
5
|
+
title VARCHAR(500) NOT NULL,
|
|
6
|
+
subtitle VARCHAR(500),
|
|
7
|
+
release_date DATE,
|
|
8
|
+
description TEXT,
|
|
9
|
+
duration INTEGER,
|
|
10
|
+
category_id VARCHAR(25),
|
|
11
|
+
genres JSONB,
|
|
12
|
+
size BIGINT,
|
|
13
|
+
url TEXT,
|
|
14
|
+
poster_image TEXT,
|
|
15
|
+
thumbnail_image TEXT,
|
|
16
|
+
resolution video_resolution,
|
|
17
|
+
quality video_quality,
|
|
18
|
+
format video_format,
|
|
19
|
+
codec video_codec,
|
|
20
|
+
bitrate INTEGER,
|
|
21
|
+
frame_rate DECIMAL(5, 2),
|
|
22
|
+
audio_codec VARCHAR(50),
|
|
23
|
+
audio_channels VARCHAR(20),
|
|
24
|
+
average_rating DECIMAL(3, 2),
|
|
25
|
+
ratings_count INTEGER,
|
|
26
|
+
content_rating VARCHAR(10),
|
|
27
|
+
context VARCHAR(255),
|
|
28
|
+
context_id VARCHAR(25),
|
|
29
|
+
is_youtube BOOLEAN DEFAULT false,
|
|
30
|
+
status_id VARCHAR(25),
|
|
31
|
+
is_locked BOOLEAN DEFAULT false,
|
|
32
|
+
locked_at TIMESTAMP,
|
|
33
|
+
is_blocked BOOLEAN DEFAULT false,
|
|
34
|
+
blocked_at TIMESTAMP,
|
|
35
|
+
block_reason TEXT,
|
|
36
|
+
is_public BOOLEAN DEFAULT true,
|
|
37
|
+
language VARCHAR(10) DEFAULT 'en',
|
|
38
|
+
created_at TIMESTAMP DEFAULT NOW(),
|
|
39
|
+
updated_at TIMESTAMP DEFAULT NOW(),
|
|
40
|
+
deleted_at TIMESTAMP,
|
|
41
|
+
CONSTRAINT fk_videos_category FOREIGN KEY (category_id) REFERENCES categories(id) ON DELETE SET NULL,
|
|
42
|
+
CONSTRAINT fk_videos_status FOREIGN KEY (status_id) REFERENCES statuses(id) ON DELETE SET NULL
|
|
43
|
+
)
|
|
44
|
+
`,await e`
|
|
45
|
+
CREATE TABLE IF NOT EXISTS videos_tags (
|
|
46
|
+
video_id VARCHAR(25) NOT NULL,
|
|
47
|
+
tag_id VARCHAR(25) NOT NULL,
|
|
48
|
+
PRIMARY KEY (video_id, tag_id),
|
|
49
|
+
CONSTRAINT fk_videos_tags_video FOREIGN KEY (video_id) REFERENCES videos(id) ON DELETE CASCADE,
|
|
50
|
+
CONSTRAINT fk_videos_tags_tag FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE
|
|
51
|
+
)
|
|
52
|
+
`,await e`CREATE INDEX IF NOT EXISTS idx_videos_title ON videos(title)`,await e`CREATE INDEX IF NOT EXISTS idx_videos_category_id ON videos(category_id)`,await e`CREATE INDEX IF NOT EXISTS idx_videos_status_id ON videos(status_id)`,await e`CREATE INDEX IF NOT EXISTS idx_videos_resolution ON videos(resolution)`,await e`CREATE INDEX IF NOT EXISTS idx_videos_quality ON videos(quality)`,await e`CREATE INDEX IF NOT EXISTS idx_videos_format ON videos(format)`,await e`CREATE INDEX IF NOT EXISTS idx_videos_is_youtube ON videos(is_youtube)`,await e`CREATE INDEX IF NOT EXISTS idx_videos_context ON videos(context, context_id)`,await e`CREATE INDEX IF NOT EXISTS idx_videos_created_at ON videos(created_at)`,await e`CREATE INDEX IF NOT EXISTS idx_videos_deleted_at ON videos(deleted_at)`,await e`CREATE INDEX IF NOT EXISTS idx_videos_tags_video_id ON videos_tags(video_id)`,await e`CREATE INDEX IF NOT EXISTS idx_videos_tags_tag_id ON videos_tags(tag_id)`}async down(e){await e`DROP TABLE IF EXISTS videos_tags CASCADE`,await e`DROP TABLE IF EXISTS videos CASCADE`,await e`DROP TYPE IF EXISTS video_codec CASCADE`,await e`DROP TYPE IF EXISTS video_format CASCADE`,await e`DROP TYPE IF EXISTS video_quality CASCADE`,await e`DROP TYPE IF EXISTS video_resolution CASCADE`}getVersion(){return"20251225184023570"}getDependencies(){return[]}}i=d([l.migration()],i);import{decorator as S}from"@ooneex/migrations";class E{async up(e){await e`
|
|
53
|
+
CREATE TABLE IF NOT EXISTS video_playlists (
|
|
54
|
+
id VARCHAR(25) PRIMARY KEY,
|
|
55
|
+
name VARCHAR(255) NOT NULL,
|
|
56
|
+
description TEXT,
|
|
57
|
+
status_id VARCHAR(25),
|
|
58
|
+
is_locked BOOLEAN DEFAULT false,
|
|
59
|
+
locked_at TIMESTAMP,
|
|
60
|
+
is_blocked BOOLEAN DEFAULT false,
|
|
61
|
+
blocked_at TIMESTAMP,
|
|
62
|
+
block_reason TEXT,
|
|
63
|
+
is_public BOOLEAN DEFAULT true,
|
|
64
|
+
language VARCHAR(10) DEFAULT 'en',
|
|
65
|
+
created_at TIMESTAMP DEFAULT NOW(),
|
|
66
|
+
updated_at TIMESTAMP DEFAULT NOW(),
|
|
67
|
+
deleted_at TIMESTAMP,
|
|
68
|
+
CONSTRAINT fk_video_playlists_status FOREIGN KEY (status_id) REFERENCES statuses(id) ON DELETE SET NULL
|
|
69
|
+
)
|
|
70
|
+
`,await e`
|
|
71
|
+
CREATE TABLE IF NOT EXISTS playlists_videos (
|
|
72
|
+
playlist_id VARCHAR(25) NOT NULL,
|
|
73
|
+
video_id VARCHAR(25) NOT NULL,
|
|
74
|
+
PRIMARY KEY (playlist_id, video_id),
|
|
75
|
+
CONSTRAINT fk_playlists_videos_playlist FOREIGN KEY (playlist_id) REFERENCES video_playlists(id) ON DELETE CASCADE,
|
|
76
|
+
CONSTRAINT fk_playlists_videos_video FOREIGN KEY (video_id) REFERENCES videos(id) ON DELETE CASCADE
|
|
77
|
+
)
|
|
78
|
+
`,await e`
|
|
79
|
+
CREATE TABLE IF NOT EXISTS playlists_tags (
|
|
80
|
+
playlist_id VARCHAR(25) NOT NULL,
|
|
81
|
+
tag_id VARCHAR(25) NOT NULL,
|
|
82
|
+
PRIMARY KEY (playlist_id, tag_id),
|
|
83
|
+
CONSTRAINT fk_playlists_tags_playlist FOREIGN KEY (playlist_id) REFERENCES video_playlists(id) ON DELETE CASCADE,
|
|
84
|
+
CONSTRAINT fk_playlists_tags_tag FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE
|
|
85
|
+
)
|
|
86
|
+
`,await e`CREATE INDEX IF NOT EXISTS idx_video_playlists_name ON video_playlists(name)`,await e`CREATE INDEX IF NOT EXISTS idx_video_playlists_status_id ON video_playlists(status_id)`,await e`CREATE INDEX IF NOT EXISTS idx_video_playlists_created_at ON video_playlists(created_at)`,await e`CREATE INDEX IF NOT EXISTS idx_video_playlists_deleted_at ON video_playlists(deleted_at)`,await e`CREATE INDEX IF NOT EXISTS idx_playlists_videos_playlist_id ON playlists_videos(playlist_id)`,await e`CREATE INDEX IF NOT EXISTS idx_playlists_videos_video_id ON playlists_videos(video_id)`,await e`CREATE INDEX IF NOT EXISTS idx_playlists_tags_playlist_id ON playlists_tags(playlist_id)`,await e`CREATE INDEX IF NOT EXISTS idx_playlists_tags_tag_id ON playlists_tags(tag_id)`}async down(e){await e`DROP TABLE IF EXISTS playlists_tags CASCADE`,await e`DROP TABLE IF EXISTS playlists_videos CASCADE`,await e`DROP TABLE IF EXISTS video_playlists CASCADE`}getVersion(){return"20251225184023573"}getDependencies(){return[i]}}E=d([S.migration()],E);import{decorator as R}from"@ooneex/migrations";class a{async up(e){await e`
|
|
87
|
+
CREATE TABLE IF NOT EXISTS video_progress (
|
|
88
|
+
id VARCHAR(25) PRIMARY KEY,
|
|
89
|
+
video_id VARCHAR(25),
|
|
90
|
+
user_id VARCHAR(15) NOT NULL,
|
|
91
|
+
current_time INTEGER NOT NULL,
|
|
92
|
+
duration INTEGER,
|
|
93
|
+
completed BOOLEAN DEFAULT false,
|
|
94
|
+
last_watched TIMESTAMP,
|
|
95
|
+
is_locked BOOLEAN DEFAULT false,
|
|
96
|
+
locked_at TIMESTAMP,
|
|
97
|
+
is_blocked BOOLEAN DEFAULT false,
|
|
98
|
+
blocked_at TIMESTAMP,
|
|
99
|
+
block_reason TEXT,
|
|
100
|
+
is_public BOOLEAN DEFAULT true,
|
|
101
|
+
language VARCHAR(10) DEFAULT 'en',
|
|
102
|
+
created_at TIMESTAMP DEFAULT NOW(),
|
|
103
|
+
updated_at TIMESTAMP DEFAULT NOW(),
|
|
104
|
+
deleted_at TIMESTAMP,
|
|
105
|
+
CONSTRAINT fk_video_progress_video FOREIGN KEY (video_id) REFERENCES videos(id) ON DELETE CASCADE
|
|
106
|
+
)
|
|
107
|
+
`,await e`CREATE INDEX IF NOT EXISTS idx_video_progress_video_id ON video_progress(video_id)`,await e`CREATE INDEX IF NOT EXISTS idx_video_progress_user_id ON video_progress(user_id)`,await e`CREATE INDEX IF NOT EXISTS idx_video_progress_completed ON video_progress(completed)`,await e`CREATE INDEX IF NOT EXISTS idx_video_progress_user_video ON video_progress(user_id, video_id)`,await e`CREATE INDEX IF NOT EXISTS idx_video_progress_created_at ON video_progress(created_at)`,await e`CREATE INDEX IF NOT EXISTS idx_video_progress_deleted_at ON video_progress(deleted_at)`}async down(e){await e`DROP TABLE IF EXISTS video_progress CASCADE`}getVersion(){return"20251225184023575"}getDependencies(){return[i]}}a=d([R.migration()],a);import{decorator as n}from"@ooneex/migrations";class o{async up(e){await e`
|
|
108
|
+
CREATE TABLE IF NOT EXISTS videos_stats (
|
|
109
|
+
id VARCHAR(25) PRIMARY KEY,
|
|
110
|
+
video_id VARCHAR(25),
|
|
111
|
+
likes_count INTEGER DEFAULT 0,
|
|
112
|
+
dislikes_count INTEGER DEFAULT 0,
|
|
113
|
+
comments_count INTEGER DEFAULT 0,
|
|
114
|
+
shares_count INTEGER DEFAULT 0,
|
|
115
|
+
saves_count INTEGER DEFAULT 0,
|
|
116
|
+
downloads_count INTEGER DEFAULT 0,
|
|
117
|
+
views_count INTEGER DEFAULT 0,
|
|
118
|
+
reports_count INTEGER DEFAULT 0,
|
|
119
|
+
is_locked BOOLEAN DEFAULT false,
|
|
120
|
+
locked_at TIMESTAMP,
|
|
121
|
+
is_blocked BOOLEAN DEFAULT false,
|
|
122
|
+
blocked_at TIMESTAMP,
|
|
123
|
+
block_reason TEXT,
|
|
124
|
+
is_public BOOLEAN DEFAULT true,
|
|
125
|
+
language VARCHAR(10) DEFAULT 'en',
|
|
126
|
+
created_at TIMESTAMP DEFAULT NOW(),
|
|
127
|
+
updated_at TIMESTAMP DEFAULT NOW(),
|
|
128
|
+
deleted_at TIMESTAMP,
|
|
129
|
+
CONSTRAINT fk_videos_stats_video FOREIGN KEY (video_id) REFERENCES videos(id) ON DELETE CASCADE
|
|
130
|
+
)
|
|
131
|
+
`,await e`CREATE INDEX IF NOT EXISTS idx_videos_stats_video_id ON videos_stats(video_id)`,await e`CREATE INDEX IF NOT EXISTS idx_videos_stats_likes_count ON videos_stats(likes_count)`,await e`CREATE INDEX IF NOT EXISTS idx_videos_stats_views_count ON videos_stats(views_count)`,await e`CREATE INDEX IF NOT EXISTS idx_videos_stats_created_at ON videos_stats(created_at)`,await e`CREATE INDEX IF NOT EXISTS idx_videos_stats_deleted_at ON videos_stats(deleted_at)`}async down(e){await e`DROP TABLE IF EXISTS videos_stats CASCADE`}getVersion(){return"20251225184023577"}getDependencies(){return[i]}}o=d([n.migration()],o);import{decorator as v}from"@ooneex/migrations";class s{async up(e){await e`
|
|
132
|
+
CREATE TABLE IF NOT EXISTS videos_comments (
|
|
133
|
+
id VARCHAR(25) PRIMARY KEY,
|
|
134
|
+
video_id VARCHAR(25),
|
|
135
|
+
comment TEXT NOT NULL,
|
|
136
|
+
commented_by VARCHAR(255),
|
|
137
|
+
commented_by_id VARCHAR(25),
|
|
138
|
+
parent_comment_id VARCHAR(25),
|
|
139
|
+
is_locked BOOLEAN DEFAULT false,
|
|
140
|
+
locked_at TIMESTAMP,
|
|
141
|
+
is_blocked BOOLEAN DEFAULT false,
|
|
142
|
+
blocked_at TIMESTAMP,
|
|
143
|
+
block_reason TEXT,
|
|
144
|
+
is_public BOOLEAN DEFAULT true,
|
|
145
|
+
language VARCHAR(10) DEFAULT 'en',
|
|
146
|
+
created_at TIMESTAMP DEFAULT NOW(),
|
|
147
|
+
updated_at TIMESTAMP DEFAULT NOW(),
|
|
148
|
+
deleted_at TIMESTAMP,
|
|
149
|
+
CONSTRAINT fk_videos_comments_video FOREIGN KEY (video_id) REFERENCES videos(id) ON DELETE CASCADE,
|
|
150
|
+
CONSTRAINT fk_videos_comments_parent FOREIGN KEY (parent_comment_id) REFERENCES videos_comments(id) ON DELETE CASCADE
|
|
151
|
+
)
|
|
152
|
+
`,await e`CREATE INDEX IF NOT EXISTS idx_videos_comments_video_id ON videos_comments(video_id)`,await e`CREATE INDEX IF NOT EXISTS idx_videos_comments_commented_by_id ON videos_comments(commented_by_id)`,await e`CREATE INDEX IF NOT EXISTS idx_videos_comments_parent_comment_id ON videos_comments(parent_comment_id)`,await e`CREATE INDEX IF NOT EXISTS idx_videos_comments_created_at ON videos_comments(created_at)`,await e`CREATE INDEX IF NOT EXISTS idx_videos_comments_deleted_at ON videos_comments(deleted_at)`}async down(e){await e`DROP TABLE IF EXISTS videos_comments CASCADE`}getVersion(){return"20251225184023579"}getDependencies(){return[i]}}s=d([v.migration()],s);import{decorator as O}from"@ooneex/migrations";class t{async up(e){await e`
|
|
153
|
+
CREATE TABLE IF NOT EXISTS videos_liked (
|
|
154
|
+
id VARCHAR(25) PRIMARY KEY,
|
|
155
|
+
video_id VARCHAR(25),
|
|
156
|
+
liked_by VARCHAR(255),
|
|
157
|
+
liked_by_id VARCHAR(25),
|
|
158
|
+
is_locked BOOLEAN DEFAULT false,
|
|
159
|
+
locked_at TIMESTAMP,
|
|
160
|
+
is_blocked BOOLEAN DEFAULT false,
|
|
161
|
+
blocked_at TIMESTAMP,
|
|
162
|
+
block_reason TEXT,
|
|
163
|
+
is_public BOOLEAN DEFAULT true,
|
|
164
|
+
language VARCHAR(10) DEFAULT 'en',
|
|
165
|
+
created_at TIMESTAMP DEFAULT NOW(),
|
|
166
|
+
updated_at TIMESTAMP DEFAULT NOW(),
|
|
167
|
+
deleted_at TIMESTAMP,
|
|
168
|
+
CONSTRAINT fk_videos_liked_video FOREIGN KEY (video_id) REFERENCES videos(id) ON DELETE CASCADE,
|
|
169
|
+
CONSTRAINT uk_videos_liked_video_user UNIQUE (video_id, liked_by_id)
|
|
170
|
+
)
|
|
171
|
+
`,await e`CREATE INDEX IF NOT EXISTS idx_videos_liked_video_id ON videos_liked(video_id)`,await e`CREATE INDEX IF NOT EXISTS idx_videos_liked_liked_by_id ON videos_liked(liked_by_id)`,await e`CREATE INDEX IF NOT EXISTS idx_videos_liked_created_at ON videos_liked(created_at)`,await e`CREATE INDEX IF NOT EXISTS idx_videos_liked_deleted_at ON videos_liked(deleted_at)`}async down(e){await e`DROP TABLE IF EXISTS videos_liked CASCADE`}getVersion(){return"20251225184023582"}getDependencies(){return[i]}}t=d([O.migration()],t);import{decorator as c}from"@ooneex/migrations";class T{async up(e){await e`
|
|
172
|
+
CREATE TABLE IF NOT EXISTS videos_disliked (
|
|
173
|
+
id VARCHAR(25) PRIMARY KEY,
|
|
174
|
+
video_id VARCHAR(25),
|
|
175
|
+
disliked_by VARCHAR(255),
|
|
176
|
+
disliked_by_id VARCHAR(25),
|
|
177
|
+
is_locked BOOLEAN DEFAULT false,
|
|
178
|
+
locked_at TIMESTAMP,
|
|
179
|
+
is_blocked BOOLEAN DEFAULT false,
|
|
180
|
+
blocked_at TIMESTAMP,
|
|
181
|
+
block_reason TEXT,
|
|
182
|
+
is_public BOOLEAN DEFAULT true,
|
|
183
|
+
language VARCHAR(10) DEFAULT 'en',
|
|
184
|
+
created_at TIMESTAMP DEFAULT NOW(),
|
|
185
|
+
updated_at TIMESTAMP DEFAULT NOW(),
|
|
186
|
+
deleted_at TIMESTAMP,
|
|
187
|
+
CONSTRAINT fk_videos_disliked_video FOREIGN KEY (video_id) REFERENCES videos(id) ON DELETE CASCADE,
|
|
188
|
+
CONSTRAINT uk_videos_disliked_video_user UNIQUE (video_id, disliked_by_id)
|
|
189
|
+
)
|
|
190
|
+
`,await e`CREATE INDEX IF NOT EXISTS idx_videos_disliked_video_id ON videos_disliked(video_id)`,await e`CREATE INDEX IF NOT EXISTS idx_videos_disliked_disliked_by_id ON videos_disliked(disliked_by_id)`,await e`CREATE INDEX IF NOT EXISTS idx_videos_disliked_created_at ON videos_disliked(created_at)`,await e`CREATE INDEX IF NOT EXISTS idx_videos_disliked_deleted_at ON videos_disliked(deleted_at)`}async down(e){await e`DROP TABLE IF EXISTS videos_disliked CASCADE`}getVersion(){return"20251225184023584"}getDependencies(){return[i]}}T=d([c.migration()],T);import{decorator as p}from"@ooneex/migrations";class _{async up(e){await e`
|
|
191
|
+
CREATE TABLE IF NOT EXISTS videos_viewed (
|
|
192
|
+
id VARCHAR(25) PRIMARY KEY,
|
|
193
|
+
video_id VARCHAR(25),
|
|
194
|
+
viewed_by VARCHAR(255),
|
|
195
|
+
viewed_by_id VARCHAR(25),
|
|
196
|
+
is_locked BOOLEAN DEFAULT false,
|
|
197
|
+
locked_at TIMESTAMP,
|
|
198
|
+
is_blocked BOOLEAN DEFAULT false,
|
|
199
|
+
blocked_at TIMESTAMP,
|
|
200
|
+
block_reason TEXT,
|
|
201
|
+
is_public BOOLEAN DEFAULT true,
|
|
202
|
+
language VARCHAR(10) DEFAULT 'en',
|
|
203
|
+
created_at TIMESTAMP DEFAULT NOW(),
|
|
204
|
+
updated_at TIMESTAMP DEFAULT NOW(),
|
|
205
|
+
deleted_at TIMESTAMP,
|
|
206
|
+
CONSTRAINT fk_videos_viewed_video FOREIGN KEY (video_id) REFERENCES videos(id) ON DELETE CASCADE
|
|
207
|
+
)
|
|
208
|
+
`,await e`CREATE INDEX IF NOT EXISTS idx_videos_viewed_video_id ON videos_viewed(video_id)`,await e`CREATE INDEX IF NOT EXISTS idx_videos_viewed_viewed_by_id ON videos_viewed(viewed_by_id)`,await e`CREATE INDEX IF NOT EXISTS idx_videos_viewed_created_at ON videos_viewed(created_at)`,await e`CREATE INDEX IF NOT EXISTS idx_videos_viewed_deleted_at ON videos_viewed(deleted_at)`,await e`CREATE INDEX IF NOT EXISTS idx_videos_viewed_video_user ON videos_viewed(video_id, viewed_by_id, created_at)`}async down(e){await e`DROP TABLE IF EXISTS videos_viewed CASCADE`}getVersion(){return"20251225184023586"}getDependencies(){return[i]}}_=d([p.migration()],_);import{decorator as C}from"@ooneex/migrations";class A{async up(e){await e`
|
|
209
|
+
CREATE TABLE IF NOT EXISTS videos_downloaded (
|
|
210
|
+
id VARCHAR(25) PRIMARY KEY,
|
|
211
|
+
video_id VARCHAR(25),
|
|
212
|
+
downloaded_by VARCHAR(255),
|
|
213
|
+
downloaded_by_id VARCHAR(25),
|
|
214
|
+
is_locked BOOLEAN DEFAULT false,
|
|
215
|
+
locked_at TIMESTAMP,
|
|
216
|
+
is_blocked BOOLEAN DEFAULT false,
|
|
217
|
+
blocked_at TIMESTAMP,
|
|
218
|
+
block_reason TEXT,
|
|
219
|
+
is_public BOOLEAN DEFAULT true,
|
|
220
|
+
language VARCHAR(10) DEFAULT 'en',
|
|
221
|
+
created_at TIMESTAMP DEFAULT NOW(),
|
|
222
|
+
updated_at TIMESTAMP DEFAULT NOW(),
|
|
223
|
+
deleted_at TIMESTAMP,
|
|
224
|
+
CONSTRAINT fk_videos_downloaded_video FOREIGN KEY (video_id) REFERENCES videos(id) ON DELETE CASCADE
|
|
225
|
+
)
|
|
226
|
+
`,await e`CREATE INDEX IF NOT EXISTS idx_videos_downloaded_video_id ON videos_downloaded(video_id)`,await e`CREATE INDEX IF NOT EXISTS idx_videos_downloaded_downloaded_by_id ON videos_downloaded(downloaded_by_id)`,await e`CREATE INDEX IF NOT EXISTS idx_videos_downloaded_created_at ON videos_downloaded(created_at)`,await e`CREATE INDEX IF NOT EXISTS idx_videos_downloaded_deleted_at ON videos_downloaded(deleted_at)`}async down(e){await e`DROP TABLE IF EXISTS videos_downloaded CASCADE`}getVersion(){return"20251225184023588"}getDependencies(){return[i]}}A=d([C.migration()],A);import{decorator as D}from"@ooneex/migrations";class r{async up(e){await e`
|
|
227
|
+
CREATE TABLE IF NOT EXISTS videos_saved (
|
|
228
|
+
id VARCHAR(25) PRIMARY KEY,
|
|
229
|
+
video_id VARCHAR(25),
|
|
230
|
+
saved_by VARCHAR(255),
|
|
231
|
+
saved_by_id VARCHAR(25),
|
|
232
|
+
is_locked BOOLEAN DEFAULT false,
|
|
233
|
+
locked_at TIMESTAMP,
|
|
234
|
+
is_blocked BOOLEAN DEFAULT false,
|
|
235
|
+
blocked_at TIMESTAMP,
|
|
236
|
+
block_reason TEXT,
|
|
237
|
+
is_public BOOLEAN DEFAULT true,
|
|
238
|
+
language VARCHAR(10) DEFAULT 'en',
|
|
239
|
+
created_at TIMESTAMP DEFAULT NOW(),
|
|
240
|
+
updated_at TIMESTAMP DEFAULT NOW(),
|
|
241
|
+
deleted_at TIMESTAMP,
|
|
242
|
+
CONSTRAINT fk_videos_saved_video FOREIGN KEY (video_id) REFERENCES videos(id) ON DELETE CASCADE,
|
|
243
|
+
CONSTRAINT uk_videos_saved_video_user UNIQUE (video_id, saved_by_id)
|
|
244
|
+
)
|
|
245
|
+
`,await e`CREATE INDEX IF NOT EXISTS idx_videos_saved_video_id ON videos_saved(video_id)`,await e`CREATE INDEX IF NOT EXISTS idx_videos_saved_saved_by_id ON videos_saved(saved_by_id)`,await e`CREATE INDEX IF NOT EXISTS idx_videos_saved_created_at ON videos_saved(created_at)`,await e`CREATE INDEX IF NOT EXISTS idx_videos_saved_deleted_at ON videos_saved(deleted_at)`}async down(e){await e`DROP TABLE IF EXISTS videos_saved CASCADE`}getVersion(){return"20251225184023590"}getDependencies(){return[i]}}r=d([D.migration()],r);import{decorator as L}from"@ooneex/migrations";class N{async up(e){await e`
|
|
246
|
+
CREATE TABLE IF NOT EXISTS videos_shared (
|
|
247
|
+
id VARCHAR(25) PRIMARY KEY,
|
|
248
|
+
video_id VARCHAR(25),
|
|
249
|
+
shared_with VARCHAR(255),
|
|
250
|
+
shared_by_id VARCHAR(25),
|
|
251
|
+
permission VARCHAR(50),
|
|
252
|
+
expires_at TIMESTAMP,
|
|
253
|
+
is_locked BOOLEAN DEFAULT false,
|
|
254
|
+
locked_at TIMESTAMP,
|
|
255
|
+
is_blocked BOOLEAN DEFAULT false,
|
|
256
|
+
blocked_at TIMESTAMP,
|
|
257
|
+
block_reason TEXT,
|
|
258
|
+
is_public BOOLEAN DEFAULT true,
|
|
259
|
+
language VARCHAR(10) DEFAULT 'en',
|
|
260
|
+
created_at TIMESTAMP DEFAULT NOW(),
|
|
261
|
+
updated_at TIMESTAMP DEFAULT NOW(),
|
|
262
|
+
deleted_at TIMESTAMP,
|
|
263
|
+
CONSTRAINT fk_videos_shared_video FOREIGN KEY (video_id) REFERENCES videos(id) ON DELETE CASCADE
|
|
264
|
+
)
|
|
265
|
+
`,await e`CREATE INDEX IF NOT EXISTS idx_videos_shared_video_id ON videos_shared(video_id)`,await e`CREATE INDEX IF NOT EXISTS idx_videos_shared_shared_by_id ON videos_shared(shared_by_id)`,await e`CREATE INDEX IF NOT EXISTS idx_videos_shared_permission ON videos_shared(permission)`,await e`CREATE INDEX IF NOT EXISTS idx_videos_shared_expires_at ON videos_shared(expires_at)`,await e`CREATE INDEX IF NOT EXISTS idx_videos_shared_created_at ON videos_shared(created_at)`,await e`CREATE INDEX IF NOT EXISTS idx_videos_shared_deleted_at ON videos_shared(deleted_at)`}async down(e){await e`DROP TABLE IF EXISTS videos_shared CASCADE`}getVersion(){return"20251225184023593"}getDependencies(){return[i]}}N=d([L.migration()],N);import{decorator as F}from"@ooneex/migrations";class I{async up(e){await e`
|
|
266
|
+
CREATE TABLE IF NOT EXISTS videos_reports (
|
|
267
|
+
id VARCHAR(25) PRIMARY KEY,
|
|
268
|
+
video_id VARCHAR(25),
|
|
269
|
+
reason VARCHAR(255) NOT NULL,
|
|
270
|
+
description TEXT,
|
|
271
|
+
reported_by VARCHAR(255),
|
|
272
|
+
reported_by_id VARCHAR(25),
|
|
273
|
+
status_id VARCHAR(25),
|
|
274
|
+
is_locked BOOLEAN DEFAULT false,
|
|
275
|
+
locked_at TIMESTAMP,
|
|
276
|
+
is_blocked BOOLEAN DEFAULT false,
|
|
277
|
+
blocked_at TIMESTAMP,
|
|
278
|
+
block_reason TEXT,
|
|
279
|
+
is_public BOOLEAN DEFAULT true,
|
|
280
|
+
language VARCHAR(10) DEFAULT 'en',
|
|
281
|
+
created_at TIMESTAMP DEFAULT NOW(),
|
|
282
|
+
updated_at TIMESTAMP DEFAULT NOW(),
|
|
283
|
+
deleted_at TIMESTAMP,
|
|
284
|
+
CONSTRAINT fk_videos_reports_video FOREIGN KEY (video_id) REFERENCES videos(id) ON DELETE CASCADE,
|
|
285
|
+
CONSTRAINT fk_videos_reports_status FOREIGN KEY (status_id) REFERENCES statuses(id) ON DELETE SET NULL
|
|
286
|
+
)
|
|
287
|
+
`,await e`CREATE INDEX IF NOT EXISTS idx_videos_reports_video_id ON videos_reports(video_id)`,await e`CREATE INDEX IF NOT EXISTS idx_videos_reports_reported_by_id ON videos_reports(reported_by_id)`,await e`CREATE INDEX IF NOT EXISTS idx_videos_reports_status_id ON videos_reports(status_id)`,await e`CREATE INDEX IF NOT EXISTS idx_videos_reports_reason ON videos_reports(reason)`,await e`CREATE INDEX IF NOT EXISTS idx_videos_reports_created_at ON videos_reports(created_at)`,await e`CREATE INDEX IF NOT EXISTS idx_videos_reports_deleted_at ON videos_reports(deleted_at)`}async down(e){await e`DROP TABLE IF EXISTS videos_reports CASCADE`}getVersion(){return"20251225184023595"}getDependencies(){return[i]}}I=d([F.migration()],I);export{I as Migration20251225184023595,N as Migration20251225184023593,r as Migration20251225184023590,A as Migration20251225184023588,_ as Migration20251225184023586,T as Migration20251225184023584,t as Migration20251225184023582,s as Migration20251225184023579,o as Migration20251225184023577,a as Migration20251225184023575,E as Migration20251225184023573,i as Migration20251225184023570};
|
|
288
|
+
|
|
289
|
+
//# debugId=AB00C240B7370AD764756E2164756E21
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["src/migrations/video/Migration20251225184023570.ts", "src/migrations/video/Migration20251225184023573.ts", "src/migrations/video/Migration20251225184023575.ts", "src/migrations/video/Migration20251225184023577.ts", "src/migrations/video/Migration20251225184023579.ts", "src/migrations/video/Migration20251225184023582.ts", "src/migrations/video/Migration20251225184023584.ts", "src/migrations/video/Migration20251225184023586.ts", "src/migrations/video/Migration20251225184023588.ts", "src/migrations/video/Migration20251225184023590.ts", "src/migrations/video/Migration20251225184023593.ts", "src/migrations/video/Migration20251225184023595.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"import { decorator, type IMigration, type MigrationClassType } from \"@ooneex/migrations\";\nimport type { TransactionSQL } from \"bun\";\n\n@decorator.migration()\nexport class Migration20251225184023570 implements IMigration {\n public async up(tx: TransactionSQL): Promise<void> {\n await tx`CREATE TYPE video_resolution AS ENUM ('144p', '240p', '360p', '480p', '720p', '1080p', '1440p', '2160p', '4320p')`;\n await tx`CREATE TYPE video_quality AS ENUM ('low', 'medium', 'high', 'ultra')`;\n await tx`CREATE TYPE video_format AS ENUM ('mp4', 'webm', 'ogg', 'avi', 'mov', 'mkv', 'flv', 'wmv')`;\n await tx`CREATE TYPE video_codec AS ENUM ('h264', 'h265', 'vp8', 'vp9', 'av1')`;\n\n await tx`\n CREATE TABLE IF NOT EXISTS videos (\n id VARCHAR(25) PRIMARY KEY,\n title VARCHAR(500) NOT NULL,\n subtitle VARCHAR(500),\n release_date DATE,\n description TEXT,\n duration INTEGER,\n category_id VARCHAR(25),\n genres JSONB,\n size BIGINT,\n url TEXT,\n poster_image TEXT,\n thumbnail_image TEXT,\n resolution video_resolution,\n quality video_quality,\n format video_format,\n codec video_codec,\n bitrate INTEGER,\n frame_rate DECIMAL(5, 2),\n audio_codec VARCHAR(50),\n audio_channels VARCHAR(20),\n average_rating DECIMAL(3, 2),\n ratings_count INTEGER,\n content_rating VARCHAR(10),\n context VARCHAR(255),\n context_id VARCHAR(25),\n is_youtube BOOLEAN DEFAULT false,\n status_id VARCHAR(25),\n is_locked BOOLEAN DEFAULT false,\n locked_at TIMESTAMP,\n is_blocked BOOLEAN DEFAULT false,\n blocked_at TIMESTAMP,\n block_reason TEXT,\n is_public BOOLEAN DEFAULT true,\n language VARCHAR(10) DEFAULT 'en',\n created_at TIMESTAMP DEFAULT NOW(),\n updated_at TIMESTAMP DEFAULT NOW(),\n deleted_at TIMESTAMP,\n CONSTRAINT fk_videos_category FOREIGN KEY (category_id) REFERENCES categories(id) ON DELETE SET NULL,\n CONSTRAINT fk_videos_status FOREIGN KEY (status_id) REFERENCES statuses(id) ON DELETE SET NULL\n )\n `;\n\n await tx`\n CREATE TABLE IF NOT EXISTS videos_tags (\n video_id VARCHAR(25) NOT NULL,\n tag_id VARCHAR(25) NOT NULL,\n PRIMARY KEY (video_id, tag_id),\n CONSTRAINT fk_videos_tags_video FOREIGN KEY (video_id) REFERENCES videos(id) ON DELETE CASCADE,\n CONSTRAINT fk_videos_tags_tag FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE\n )\n `;\n\n await tx`CREATE INDEX IF NOT EXISTS idx_videos_title ON videos(title)`;\n await tx`CREATE INDEX IF NOT EXISTS idx_videos_category_id ON videos(category_id)`;\n await tx`CREATE INDEX IF NOT EXISTS idx_videos_status_id ON videos(status_id)`;\n await tx`CREATE INDEX IF NOT EXISTS idx_videos_resolution ON videos(resolution)`;\n await tx`CREATE INDEX IF NOT EXISTS idx_videos_quality ON videos(quality)`;\n await tx`CREATE INDEX IF NOT EXISTS idx_videos_format ON videos(format)`;\n await tx`CREATE INDEX IF NOT EXISTS idx_videos_is_youtube ON videos(is_youtube)`;\n await tx`CREATE INDEX IF NOT EXISTS idx_videos_context ON videos(context, context_id)`;\n await tx`CREATE INDEX IF NOT EXISTS idx_videos_created_at ON videos(created_at)`;\n await tx`CREATE INDEX IF NOT EXISTS idx_videos_deleted_at ON videos(deleted_at)`;\n await tx`CREATE INDEX IF NOT EXISTS idx_videos_tags_video_id ON videos_tags(video_id)`;\n await tx`CREATE INDEX IF NOT EXISTS idx_videos_tags_tag_id ON videos_tags(tag_id)`;\n }\n\n public async down(tx: TransactionSQL): Promise<void> {\n await tx`DROP TABLE IF EXISTS videos_tags CASCADE`;\n await tx`DROP TABLE IF EXISTS videos CASCADE`;\n await tx`DROP TYPE IF EXISTS video_codec CASCADE`;\n await tx`DROP TYPE IF EXISTS video_format CASCADE`;\n await tx`DROP TYPE IF EXISTS video_quality CASCADE`;\n await tx`DROP TYPE IF EXISTS video_resolution CASCADE`;\n }\n\n public getVersion(): string {\n return \"20251225184023570\";\n }\n\n public getDependencies(): MigrationClassType[] {\n return [];\n }\n}\n",
|
|
6
|
+
"import { decorator, type IMigration, type MigrationClassType } from \"@ooneex/migrations\";\nimport type { TransactionSQL } from \"bun\";\nimport { Migration20251225184023570 } from \"./Migration20251225184023570\";\n\n@decorator.migration()\nexport class Migration20251225184023573 implements IMigration {\n public async up(tx: TransactionSQL): Promise<void> {\n await tx`\n CREATE TABLE IF NOT EXISTS video_playlists (\n id VARCHAR(25) PRIMARY KEY,\n name VARCHAR(255) NOT NULL,\n description TEXT,\n status_id VARCHAR(25),\n is_locked BOOLEAN DEFAULT false,\n locked_at TIMESTAMP,\n is_blocked BOOLEAN DEFAULT false,\n blocked_at TIMESTAMP,\n block_reason TEXT,\n is_public BOOLEAN DEFAULT true,\n language VARCHAR(10) DEFAULT 'en',\n created_at TIMESTAMP DEFAULT NOW(),\n updated_at TIMESTAMP DEFAULT NOW(),\n deleted_at TIMESTAMP,\n CONSTRAINT fk_video_playlists_status FOREIGN KEY (status_id) REFERENCES statuses(id) ON DELETE SET NULL\n )\n `;\n\n await tx`\n CREATE TABLE IF NOT EXISTS playlists_videos (\n playlist_id VARCHAR(25) NOT NULL,\n video_id VARCHAR(25) NOT NULL,\n PRIMARY KEY (playlist_id, video_id),\n CONSTRAINT fk_playlists_videos_playlist FOREIGN KEY (playlist_id) REFERENCES video_playlists(id) ON DELETE CASCADE,\n CONSTRAINT fk_playlists_videos_video FOREIGN KEY (video_id) REFERENCES videos(id) ON DELETE CASCADE\n )\n `;\n\n await tx`\n CREATE TABLE IF NOT EXISTS playlists_tags (\n playlist_id VARCHAR(25) NOT NULL,\n tag_id VARCHAR(25) NOT NULL,\n PRIMARY KEY (playlist_id, tag_id),\n CONSTRAINT fk_playlists_tags_playlist FOREIGN KEY (playlist_id) REFERENCES video_playlists(id) ON DELETE CASCADE,\n CONSTRAINT fk_playlists_tags_tag FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE\n )\n `;\n\n await tx`CREATE INDEX IF NOT EXISTS idx_video_playlists_name ON video_playlists(name)`;\n await tx`CREATE INDEX IF NOT EXISTS idx_video_playlists_status_id ON video_playlists(status_id)`;\n await tx`CREATE INDEX IF NOT EXISTS idx_video_playlists_created_at ON video_playlists(created_at)`;\n await tx`CREATE INDEX IF NOT EXISTS idx_video_playlists_deleted_at ON video_playlists(deleted_at)`;\n await tx`CREATE INDEX IF NOT EXISTS idx_playlists_videos_playlist_id ON playlists_videos(playlist_id)`;\n await tx`CREATE INDEX IF NOT EXISTS idx_playlists_videos_video_id ON playlists_videos(video_id)`;\n await tx`CREATE INDEX IF NOT EXISTS idx_playlists_tags_playlist_id ON playlists_tags(playlist_id)`;\n await tx`CREATE INDEX IF NOT EXISTS idx_playlists_tags_tag_id ON playlists_tags(tag_id)`;\n }\n\n public async down(tx: TransactionSQL): Promise<void> {\n await tx`DROP TABLE IF EXISTS playlists_tags CASCADE`;\n await tx`DROP TABLE IF EXISTS playlists_videos CASCADE`;\n await tx`DROP TABLE IF EXISTS video_playlists CASCADE`;\n }\n\n public getVersion(): string {\n return \"20251225184023573\";\n }\n\n public getDependencies(): MigrationClassType[] {\n return [Migration20251225184023570];\n }\n}\n",
|
|
7
|
+
"import { decorator, type IMigration, type MigrationClassType } from \"@ooneex/migrations\";\nimport type { TransactionSQL } from \"bun\";\nimport { Migration20251225184023570 } from \"./Migration20251225184023570\";\n\n@decorator.migration()\nexport class Migration20251225184023575 implements IMigration {\n public async up(tx: TransactionSQL): Promise<void> {\n await tx`\n CREATE TABLE IF NOT EXISTS video_progress (\n id VARCHAR(25) PRIMARY KEY,\n video_id VARCHAR(25),\n user_id VARCHAR(15) NOT NULL,\n current_time INTEGER NOT NULL,\n duration INTEGER,\n completed BOOLEAN DEFAULT false,\n last_watched TIMESTAMP,\n is_locked BOOLEAN DEFAULT false,\n locked_at TIMESTAMP,\n is_blocked BOOLEAN DEFAULT false,\n blocked_at TIMESTAMP,\n block_reason TEXT,\n is_public BOOLEAN DEFAULT true,\n language VARCHAR(10) DEFAULT 'en',\n created_at TIMESTAMP DEFAULT NOW(),\n updated_at TIMESTAMP DEFAULT NOW(),\n deleted_at TIMESTAMP,\n CONSTRAINT fk_video_progress_video FOREIGN KEY (video_id) REFERENCES videos(id) ON DELETE CASCADE\n )\n `;\n\n await tx`CREATE INDEX IF NOT EXISTS idx_video_progress_video_id ON video_progress(video_id)`;\n await tx`CREATE INDEX IF NOT EXISTS idx_video_progress_user_id ON video_progress(user_id)`;\n await tx`CREATE INDEX IF NOT EXISTS idx_video_progress_completed ON video_progress(completed)`;\n await tx`CREATE INDEX IF NOT EXISTS idx_video_progress_user_video ON video_progress(user_id, video_id)`;\n await tx`CREATE INDEX IF NOT EXISTS idx_video_progress_created_at ON video_progress(created_at)`;\n await tx`CREATE INDEX IF NOT EXISTS idx_video_progress_deleted_at ON video_progress(deleted_at)`;\n }\n\n public async down(tx: TransactionSQL): Promise<void> {\n await tx`DROP TABLE IF EXISTS video_progress CASCADE`;\n }\n\n public getVersion(): string {\n return \"20251225184023575\";\n }\n\n public getDependencies(): MigrationClassType[] {\n return [Migration20251225184023570];\n }\n}\n",
|
|
8
|
+
"import { decorator, type IMigration, type MigrationClassType } from \"@ooneex/migrations\";\nimport type { TransactionSQL } from \"bun\";\nimport { Migration20251225184023570 } from \"./Migration20251225184023570\";\n\n@decorator.migration()\nexport class Migration20251225184023577 implements IMigration {\n public async up(tx: TransactionSQL): Promise<void> {\n await tx`\n CREATE TABLE IF NOT EXISTS videos_stats (\n id VARCHAR(25) PRIMARY KEY,\n video_id VARCHAR(25),\n likes_count INTEGER DEFAULT 0,\n dislikes_count INTEGER DEFAULT 0,\n comments_count INTEGER DEFAULT 0,\n shares_count INTEGER DEFAULT 0,\n saves_count INTEGER DEFAULT 0,\n downloads_count INTEGER DEFAULT 0,\n views_count INTEGER DEFAULT 0,\n reports_count INTEGER DEFAULT 0,\n is_locked BOOLEAN DEFAULT false,\n locked_at TIMESTAMP,\n is_blocked BOOLEAN DEFAULT false,\n blocked_at TIMESTAMP,\n block_reason TEXT,\n is_public BOOLEAN DEFAULT true,\n language VARCHAR(10) DEFAULT 'en',\n created_at TIMESTAMP DEFAULT NOW(),\n updated_at TIMESTAMP DEFAULT NOW(),\n deleted_at TIMESTAMP,\n CONSTRAINT fk_videos_stats_video FOREIGN KEY (video_id) REFERENCES videos(id) ON DELETE CASCADE\n )\n `;\n\n await tx`CREATE INDEX IF NOT EXISTS idx_videos_stats_video_id ON videos_stats(video_id)`;\n await tx`CREATE INDEX IF NOT EXISTS idx_videos_stats_likes_count ON videos_stats(likes_count)`;\n await tx`CREATE INDEX IF NOT EXISTS idx_videos_stats_views_count ON videos_stats(views_count)`;\n await tx`CREATE INDEX IF NOT EXISTS idx_videos_stats_created_at ON videos_stats(created_at)`;\n await tx`CREATE INDEX IF NOT EXISTS idx_videos_stats_deleted_at ON videos_stats(deleted_at)`;\n }\n\n public async down(tx: TransactionSQL): Promise<void> {\n await tx`DROP TABLE IF EXISTS videos_stats CASCADE`;\n }\n\n public getVersion(): string {\n return \"20251225184023577\";\n }\n\n public getDependencies(): MigrationClassType[] {\n return [Migration20251225184023570];\n }\n}\n",
|
|
9
|
+
"import { decorator, type IMigration, type MigrationClassType } from \"@ooneex/migrations\";\nimport type { TransactionSQL } from \"bun\";\nimport { Migration20251225184023570 } from \"./Migration20251225184023570\";\n\n@decorator.migration()\nexport class Migration20251225184023579 implements IMigration {\n public async up(tx: TransactionSQL): Promise<void> {\n await tx`\n CREATE TABLE IF NOT EXISTS videos_comments (\n id VARCHAR(25) PRIMARY KEY,\n video_id VARCHAR(25),\n comment TEXT NOT NULL,\n commented_by VARCHAR(255),\n commented_by_id VARCHAR(25),\n parent_comment_id VARCHAR(25),\n is_locked BOOLEAN DEFAULT false,\n locked_at TIMESTAMP,\n is_blocked BOOLEAN DEFAULT false,\n blocked_at TIMESTAMP,\n block_reason TEXT,\n is_public BOOLEAN DEFAULT true,\n language VARCHAR(10) DEFAULT 'en',\n created_at TIMESTAMP DEFAULT NOW(),\n updated_at TIMESTAMP DEFAULT NOW(),\n deleted_at TIMESTAMP,\n CONSTRAINT fk_videos_comments_video FOREIGN KEY (video_id) REFERENCES videos(id) ON DELETE CASCADE,\n CONSTRAINT fk_videos_comments_parent FOREIGN KEY (parent_comment_id) REFERENCES videos_comments(id) ON DELETE CASCADE\n )\n `;\n\n await tx`CREATE INDEX IF NOT EXISTS idx_videos_comments_video_id ON videos_comments(video_id)`;\n await tx`CREATE INDEX IF NOT EXISTS idx_videos_comments_commented_by_id ON videos_comments(commented_by_id)`;\n await tx`CREATE INDEX IF NOT EXISTS idx_videos_comments_parent_comment_id ON videos_comments(parent_comment_id)`;\n await tx`CREATE INDEX IF NOT EXISTS idx_videos_comments_created_at ON videos_comments(created_at)`;\n await tx`CREATE INDEX IF NOT EXISTS idx_videos_comments_deleted_at ON videos_comments(deleted_at)`;\n }\n\n public async down(tx: TransactionSQL): Promise<void> {\n await tx`DROP TABLE IF EXISTS videos_comments CASCADE`;\n }\n\n public getVersion(): string {\n return \"20251225184023579\";\n }\n\n public getDependencies(): MigrationClassType[] {\n return [Migration20251225184023570];\n }\n}\n",
|
|
10
|
+
"import { decorator, type IMigration, type MigrationClassType } from \"@ooneex/migrations\";\nimport type { TransactionSQL } from \"bun\";\nimport { Migration20251225184023570 } from \"./Migration20251225184023570\";\n\n@decorator.migration()\nexport class Migration20251225184023582 implements IMigration {\n public async up(tx: TransactionSQL): Promise<void> {\n await tx`\n CREATE TABLE IF NOT EXISTS videos_liked (\n id VARCHAR(25) PRIMARY KEY,\n video_id VARCHAR(25),\n liked_by VARCHAR(255),\n liked_by_id VARCHAR(25),\n is_locked BOOLEAN DEFAULT false,\n locked_at TIMESTAMP,\n is_blocked BOOLEAN DEFAULT false,\n blocked_at TIMESTAMP,\n block_reason TEXT,\n is_public BOOLEAN DEFAULT true,\n language VARCHAR(10) DEFAULT 'en',\n created_at TIMESTAMP DEFAULT NOW(),\n updated_at TIMESTAMP DEFAULT NOW(),\n deleted_at TIMESTAMP,\n CONSTRAINT fk_videos_liked_video FOREIGN KEY (video_id) REFERENCES videos(id) ON DELETE CASCADE,\n CONSTRAINT uk_videos_liked_video_user UNIQUE (video_id, liked_by_id)\n )\n `;\n\n await tx`CREATE INDEX IF NOT EXISTS idx_videos_liked_video_id ON videos_liked(video_id)`;\n await tx`CREATE INDEX IF NOT EXISTS idx_videos_liked_liked_by_id ON videos_liked(liked_by_id)`;\n await tx`CREATE INDEX IF NOT EXISTS idx_videos_liked_created_at ON videos_liked(created_at)`;\n await tx`CREATE INDEX IF NOT EXISTS idx_videos_liked_deleted_at ON videos_liked(deleted_at)`;\n }\n\n public async down(tx: TransactionSQL): Promise<void> {\n await tx`DROP TABLE IF EXISTS videos_liked CASCADE`;\n }\n\n public getVersion(): string {\n return \"20251225184023582\";\n }\n\n public getDependencies(): MigrationClassType[] {\n return [Migration20251225184023570];\n }\n}\n",
|
|
11
|
+
"import { decorator, type IMigration, type MigrationClassType } from \"@ooneex/migrations\";\nimport type { TransactionSQL } from \"bun\";\nimport { Migration20251225184023570 } from \"./Migration20251225184023570\";\n\n@decorator.migration()\nexport class Migration20251225184023584 implements IMigration {\n public async up(tx: TransactionSQL): Promise<void> {\n await tx`\n CREATE TABLE IF NOT EXISTS videos_disliked (\n id VARCHAR(25) PRIMARY KEY,\n video_id VARCHAR(25),\n disliked_by VARCHAR(255),\n disliked_by_id VARCHAR(25),\n is_locked BOOLEAN DEFAULT false,\n locked_at TIMESTAMP,\n is_blocked BOOLEAN DEFAULT false,\n blocked_at TIMESTAMP,\n block_reason TEXT,\n is_public BOOLEAN DEFAULT true,\n language VARCHAR(10) DEFAULT 'en',\n created_at TIMESTAMP DEFAULT NOW(),\n updated_at TIMESTAMP DEFAULT NOW(),\n deleted_at TIMESTAMP,\n CONSTRAINT fk_videos_disliked_video FOREIGN KEY (video_id) REFERENCES videos(id) ON DELETE CASCADE,\n CONSTRAINT uk_videos_disliked_video_user UNIQUE (video_id, disliked_by_id)\n )\n `;\n\n await tx`CREATE INDEX IF NOT EXISTS idx_videos_disliked_video_id ON videos_disliked(video_id)`;\n await tx`CREATE INDEX IF NOT EXISTS idx_videos_disliked_disliked_by_id ON videos_disliked(disliked_by_id)`;\n await tx`CREATE INDEX IF NOT EXISTS idx_videos_disliked_created_at ON videos_disliked(created_at)`;\n await tx`CREATE INDEX IF NOT EXISTS idx_videos_disliked_deleted_at ON videos_disliked(deleted_at)`;\n }\n\n public async down(tx: TransactionSQL): Promise<void> {\n await tx`DROP TABLE IF EXISTS videos_disliked CASCADE`;\n }\n\n public getVersion(): string {\n return \"20251225184023584\";\n }\n\n public getDependencies(): MigrationClassType[] {\n return [Migration20251225184023570];\n }\n}\n",
|
|
12
|
+
"import { decorator, type IMigration, type MigrationClassType } from \"@ooneex/migrations\";\nimport type { TransactionSQL } from \"bun\";\nimport { Migration20251225184023570 } from \"./Migration20251225184023570\";\n\n@decorator.migration()\nexport class Migration20251225184023586 implements IMigration {\n public async up(tx: TransactionSQL): Promise<void> {\n await tx`\n CREATE TABLE IF NOT EXISTS videos_viewed (\n id VARCHAR(25) PRIMARY KEY,\n video_id VARCHAR(25),\n viewed_by VARCHAR(255),\n viewed_by_id VARCHAR(25),\n is_locked BOOLEAN DEFAULT false,\n locked_at TIMESTAMP,\n is_blocked BOOLEAN DEFAULT false,\n blocked_at TIMESTAMP,\n block_reason TEXT,\n is_public BOOLEAN DEFAULT true,\n language VARCHAR(10) DEFAULT 'en',\n created_at TIMESTAMP DEFAULT NOW(),\n updated_at TIMESTAMP DEFAULT NOW(),\n deleted_at TIMESTAMP,\n CONSTRAINT fk_videos_viewed_video FOREIGN KEY (video_id) REFERENCES videos(id) ON DELETE CASCADE\n )\n `;\n\n await tx`CREATE INDEX IF NOT EXISTS idx_videos_viewed_video_id ON videos_viewed(video_id)`;\n await tx`CREATE INDEX IF NOT EXISTS idx_videos_viewed_viewed_by_id ON videos_viewed(viewed_by_id)`;\n await tx`CREATE INDEX IF NOT EXISTS idx_videos_viewed_created_at ON videos_viewed(created_at)`;\n await tx`CREATE INDEX IF NOT EXISTS idx_videos_viewed_deleted_at ON videos_viewed(deleted_at)`;\n await tx`CREATE INDEX IF NOT EXISTS idx_videos_viewed_video_user ON videos_viewed(video_id, viewed_by_id, created_at)`;\n }\n\n public async down(tx: TransactionSQL): Promise<void> {\n await tx`DROP TABLE IF EXISTS videos_viewed CASCADE`;\n }\n\n public getVersion(): string {\n return \"20251225184023586\";\n }\n\n public getDependencies(): MigrationClassType[] {\n return [Migration20251225184023570];\n }\n}\n",
|
|
13
|
+
"import { decorator, type IMigration, type MigrationClassType } from \"@ooneex/migrations\";\nimport type { TransactionSQL } from \"bun\";\nimport { Migration20251225184023570 } from \"./Migration20251225184023570\";\n\n@decorator.migration()\nexport class Migration20251225184023588 implements IMigration {\n public async up(tx: TransactionSQL): Promise<void> {\n await tx`\n CREATE TABLE IF NOT EXISTS videos_downloaded (\n id VARCHAR(25) PRIMARY KEY,\n video_id VARCHAR(25),\n downloaded_by VARCHAR(255),\n downloaded_by_id VARCHAR(25),\n is_locked BOOLEAN DEFAULT false,\n locked_at TIMESTAMP,\n is_blocked BOOLEAN DEFAULT false,\n blocked_at TIMESTAMP,\n block_reason TEXT,\n is_public BOOLEAN DEFAULT true,\n language VARCHAR(10) DEFAULT 'en',\n created_at TIMESTAMP DEFAULT NOW(),\n updated_at TIMESTAMP DEFAULT NOW(),\n deleted_at TIMESTAMP,\n CONSTRAINT fk_videos_downloaded_video FOREIGN KEY (video_id) REFERENCES videos(id) ON DELETE CASCADE\n )\n `;\n\n await tx`CREATE INDEX IF NOT EXISTS idx_videos_downloaded_video_id ON videos_downloaded(video_id)`;\n await tx`CREATE INDEX IF NOT EXISTS idx_videos_downloaded_downloaded_by_id ON videos_downloaded(downloaded_by_id)`;\n await tx`CREATE INDEX IF NOT EXISTS idx_videos_downloaded_created_at ON videos_downloaded(created_at)`;\n await tx`CREATE INDEX IF NOT EXISTS idx_videos_downloaded_deleted_at ON videos_downloaded(deleted_at)`;\n }\n\n public async down(tx: TransactionSQL): Promise<void> {\n await tx`DROP TABLE IF EXISTS videos_downloaded CASCADE`;\n }\n\n public getVersion(): string {\n return \"20251225184023588\";\n }\n\n public getDependencies(): MigrationClassType[] {\n return [Migration20251225184023570];\n }\n}\n",
|
|
14
|
+
"import { decorator, type IMigration, type MigrationClassType } from \"@ooneex/migrations\";\nimport type { TransactionSQL } from \"bun\";\nimport { Migration20251225184023570 } from \"./Migration20251225184023570\";\n\n@decorator.migration()\nexport class Migration20251225184023590 implements IMigration {\n public async up(tx: TransactionSQL): Promise<void> {\n await tx`\n CREATE TABLE IF NOT EXISTS videos_saved (\n id VARCHAR(25) PRIMARY KEY,\n video_id VARCHAR(25),\n saved_by VARCHAR(255),\n saved_by_id VARCHAR(25),\n is_locked BOOLEAN DEFAULT false,\n locked_at TIMESTAMP,\n is_blocked BOOLEAN DEFAULT false,\n blocked_at TIMESTAMP,\n block_reason TEXT,\n is_public BOOLEAN DEFAULT true,\n language VARCHAR(10) DEFAULT 'en',\n created_at TIMESTAMP DEFAULT NOW(),\n updated_at TIMESTAMP DEFAULT NOW(),\n deleted_at TIMESTAMP,\n CONSTRAINT fk_videos_saved_video FOREIGN KEY (video_id) REFERENCES videos(id) ON DELETE CASCADE,\n CONSTRAINT uk_videos_saved_video_user UNIQUE (video_id, saved_by_id)\n )\n `;\n\n await tx`CREATE INDEX IF NOT EXISTS idx_videos_saved_video_id ON videos_saved(video_id)`;\n await tx`CREATE INDEX IF NOT EXISTS idx_videos_saved_saved_by_id ON videos_saved(saved_by_id)`;\n await tx`CREATE INDEX IF NOT EXISTS idx_videos_saved_created_at ON videos_saved(created_at)`;\n await tx`CREATE INDEX IF NOT EXISTS idx_videos_saved_deleted_at ON videos_saved(deleted_at)`;\n }\n\n public async down(tx: TransactionSQL): Promise<void> {\n await tx`DROP TABLE IF EXISTS videos_saved CASCADE`;\n }\n\n public getVersion(): string {\n return \"20251225184023590\";\n }\n\n public getDependencies(): MigrationClassType[] {\n return [Migration20251225184023570];\n }\n}\n",
|
|
15
|
+
"import { decorator, type IMigration, type MigrationClassType } from \"@ooneex/migrations\";\nimport type { TransactionSQL } from \"bun\";\nimport { Migration20251225184023570 } from \"./Migration20251225184023570\";\n\n@decorator.migration()\nexport class Migration20251225184023593 implements IMigration {\n public async up(tx: TransactionSQL): Promise<void> {\n await tx`\n CREATE TABLE IF NOT EXISTS videos_shared (\n id VARCHAR(25) PRIMARY KEY,\n video_id VARCHAR(25),\n shared_with VARCHAR(255),\n shared_by_id VARCHAR(25),\n permission VARCHAR(50),\n expires_at TIMESTAMP,\n is_locked BOOLEAN DEFAULT false,\n locked_at TIMESTAMP,\n is_blocked BOOLEAN DEFAULT false,\n blocked_at TIMESTAMP,\n block_reason TEXT,\n is_public BOOLEAN DEFAULT true,\n language VARCHAR(10) DEFAULT 'en',\n created_at TIMESTAMP DEFAULT NOW(),\n updated_at TIMESTAMP DEFAULT NOW(),\n deleted_at TIMESTAMP,\n CONSTRAINT fk_videos_shared_video FOREIGN KEY (video_id) REFERENCES videos(id) ON DELETE CASCADE\n )\n `;\n\n await tx`CREATE INDEX IF NOT EXISTS idx_videos_shared_video_id ON videos_shared(video_id)`;\n await tx`CREATE INDEX IF NOT EXISTS idx_videos_shared_shared_by_id ON videos_shared(shared_by_id)`;\n await tx`CREATE INDEX IF NOT EXISTS idx_videos_shared_permission ON videos_shared(permission)`;\n await tx`CREATE INDEX IF NOT EXISTS idx_videos_shared_expires_at ON videos_shared(expires_at)`;\n await tx`CREATE INDEX IF NOT EXISTS idx_videos_shared_created_at ON videos_shared(created_at)`;\n await tx`CREATE INDEX IF NOT EXISTS idx_videos_shared_deleted_at ON videos_shared(deleted_at)`;\n }\n\n public async down(tx: TransactionSQL): Promise<void> {\n await tx`DROP TABLE IF EXISTS videos_shared CASCADE`;\n }\n\n public getVersion(): string {\n return \"20251225184023593\";\n }\n\n public getDependencies(): MigrationClassType[] {\n return [Migration20251225184023570];\n }\n}\n",
|
|
16
|
+
"import { decorator, type IMigration, type MigrationClassType } from \"@ooneex/migrations\";\nimport type { TransactionSQL } from \"bun\";\nimport { Migration20251225184023570 } from \"./Migration20251225184023570\";\n\n@decorator.migration()\nexport class Migration20251225184023595 implements IMigration {\n public async up(tx: TransactionSQL): Promise<void> {\n await tx`\n CREATE TABLE IF NOT EXISTS videos_reports (\n id VARCHAR(25) PRIMARY KEY,\n video_id VARCHAR(25),\n reason VARCHAR(255) NOT NULL,\n description TEXT,\n reported_by VARCHAR(255),\n reported_by_id VARCHAR(25),\n status_id VARCHAR(25),\n is_locked BOOLEAN DEFAULT false,\n locked_at TIMESTAMP,\n is_blocked BOOLEAN DEFAULT false,\n blocked_at TIMESTAMP,\n block_reason TEXT,\n is_public BOOLEAN DEFAULT true,\n language VARCHAR(10) DEFAULT 'en',\n created_at TIMESTAMP DEFAULT NOW(),\n updated_at TIMESTAMP DEFAULT NOW(),\n deleted_at TIMESTAMP,\n CONSTRAINT fk_videos_reports_video FOREIGN KEY (video_id) REFERENCES videos(id) ON DELETE CASCADE,\n CONSTRAINT fk_videos_reports_status FOREIGN KEY (status_id) REFERENCES statuses(id) ON DELETE SET NULL\n )\n `;\n\n await tx`CREATE INDEX IF NOT EXISTS idx_videos_reports_video_id ON videos_reports(video_id)`;\n await tx`CREATE INDEX IF NOT EXISTS idx_videos_reports_reported_by_id ON videos_reports(reported_by_id)`;\n await tx`CREATE INDEX IF NOT EXISTS idx_videos_reports_status_id ON videos_reports(status_id)`;\n await tx`CREATE INDEX IF NOT EXISTS idx_videos_reports_reason ON videos_reports(reason)`;\n await tx`CREATE INDEX IF NOT EXISTS idx_videos_reports_created_at ON videos_reports(created_at)`;\n await tx`CREATE INDEX IF NOT EXISTS idx_videos_reports_deleted_at ON videos_reports(deleted_at)`;\n }\n\n public async down(tx: TransactionSQL): Promise<void> {\n await tx`DROP TABLE IF EXISTS videos_reports CASCADE`;\n }\n\n public getVersion(): string {\n return \"20251225184023595\";\n }\n\n public getDependencies(): MigrationClassType[] {\n return [Migration20251225184023570];\n }\n}\n"
|
|
17
|
+
],
|
|
18
|
+
"mappings": "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",
|
|
19
|
+
"debugId": "AB00C240B7370AD764756E2164756E21",
|
|
20
|
+
"names": []
|
|
21
|
+
}
|