@ooneex/typeorm 0.0.1 → 0.3.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.
Files changed (178) hide show
  1. package/dist/shared/chunk-1ez1q8rj.js +5 -0
  2. package/dist/shared/chunk-1ez1q8rj.js.map +10 -0
  3. package/dist/shared/chunk-23739ja5.js +5 -0
  4. package/dist/shared/{chunk-pwhygf44.js.map → chunk-23739ja5.js.map} +2 -2
  5. package/dist/shared/chunk-3s989zjv.js +5 -0
  6. package/dist/shared/{chunk-eh420jqn.js.map → chunk-3s989zjv.js.map} +2 -2
  7. package/dist/shared/chunk-4ysz6b7v.js +5 -0
  8. package/dist/shared/chunk-4ysz6b7v.js.map +10 -0
  9. package/dist/shared/chunk-635xd7h1.js +5 -0
  10. package/dist/shared/{chunk-wmftwzcs.js.map → chunk-635xd7h1.js.map} +2 -2
  11. package/dist/shared/chunk-63wp98dt.js +101 -0
  12. package/dist/shared/chunk-63wp98dt.js.map +11 -0
  13. package/dist/shared/chunk-6gzanxfz.js +5 -0
  14. package/dist/shared/chunk-6gzanxfz.js.map +18 -0
  15. package/dist/shared/chunk-81xh5hbk.js +5 -0
  16. package/dist/shared/chunk-81xh5hbk.js.map +21 -0
  17. package/dist/shared/chunk-8q6vs955.js +5 -0
  18. package/dist/shared/chunk-8q6vs955.js.map +10 -0
  19. package/dist/shared/chunk-bdyby4d8.js +5 -0
  20. package/dist/shared/chunk-bdyby4d8.js.map +10 -0
  21. package/dist/shared/chunk-fjtw26pp.js +5 -0
  22. package/dist/shared/{chunk-j7nprmyh.js.map → chunk-fjtw26pp.js.map} +2 -2
  23. package/dist/shared/chunk-gcch857j.js +5 -0
  24. package/dist/shared/chunk-gcch857j.js.map +11 -0
  25. package/dist/shared/chunk-h5mdrgqp.js +5 -0
  26. package/dist/shared/chunk-h5mdrgqp.js.map +21 -0
  27. package/dist/shared/chunk-mwb9mvew.js +42 -0
  28. package/dist/shared/chunk-mwb9mvew.js.map +10 -0
  29. package/dist/shared/chunk-n5dqa3qy.js +36 -0
  30. package/dist/shared/chunk-n5dqa3qy.js.map +10 -0
  31. package/dist/shared/chunk-qqvx08b4.js +5 -0
  32. package/dist/shared/{chunk-2e7zbxcq.js.map → chunk-qqvx08b4.js.map} +2 -2
  33. package/dist/shared/chunk-r7q1mkar.js +82 -0
  34. package/dist/shared/chunk-r7q1mkar.js.map +10 -0
  35. package/dist/shared/chunk-s1yxjjz5.js +5 -0
  36. package/dist/shared/chunk-s1yxjjz5.js.map +21 -0
  37. package/dist/shared/chunk-sm3brprk.js +51 -0
  38. package/dist/shared/chunk-sm3brprk.js.map +10 -0
  39. package/dist/shared/chunk-wp8mt34q.js +5 -0
  40. package/dist/shared/chunk-wp8mt34q.js.map +12 -0
  41. package/dist/shared/chunk-x9h6vngs.js +5 -0
  42. package/dist/shared/chunk-x9h6vngs.js.map +9 -0
  43. package/dist/shared/chunk-xyq6sfz0.js +5 -0
  44. package/dist/shared/{chunk-zmzz7hqq.js.map → chunk-xyq6sfz0.js.map} +2 -2
  45. package/dist/shared/chunk-yq9g4gac.js +5 -0
  46. package/dist/shared/{chunk-wawk30n1.js.map → chunk-yq9g4gac.js.map} +9 -4
  47. package/dist/src/entities/book/index.d.ts +80 -3
  48. package/dist/src/entities/book/index.js +2 -2
  49. package/dist/src/entities/book/index.js.map +1 -1
  50. package/dist/src/entities/common/index.d.ts +21 -28
  51. package/dist/src/entities/common/index.js +2 -2
  52. package/dist/src/entities/common/index.js.map +1 -1
  53. package/dist/src/entities/country/index.d.ts +21 -0
  54. package/dist/src/entities/country/index.js +4 -0
  55. package/dist/src/entities/country/index.js.map +9 -0
  56. package/dist/src/entities/currency/index.d.ts +23 -0
  57. package/dist/src/entities/currency/index.js +4 -0
  58. package/dist/src/entities/currency/index.js.map +9 -0
  59. package/dist/src/entities/folder/index.d.ts +104 -0
  60. package/dist/src/entities/folder/index.js +4 -0
  61. package/dist/src/entities/folder/index.js.map +19 -0
  62. package/dist/src/entities/gamification/flashcard/index.js +2 -2
  63. package/dist/src/entities/gamification/flashcard/index.js.map +1 -1
  64. package/dist/src/entities/gamification/index.js +2 -2
  65. package/dist/src/entities/gamification/index.js.map +1 -1
  66. package/dist/src/entities/gamification/mcq/index.d.ts +76 -7
  67. package/dist/src/entities/gamification/mcq/index.js +2 -2
  68. package/dist/src/entities/gamification/mcq/index.js.map +1 -1
  69. package/dist/src/entities/image/index.d.ts +83 -6
  70. package/dist/src/entities/image/index.js +2 -2
  71. package/dist/src/entities/image/index.js.map +1 -1
  72. package/dist/src/entities/medecine/index.d.ts +36 -0
  73. package/dist/src/entities/medecine/index.js +4 -0
  74. package/dist/src/entities/medecine/index.js.map +9 -0
  75. package/dist/src/entities/payment/index.js +2 -2
  76. package/dist/src/entities/payment/index.js.map +1 -1
  77. package/dist/src/entities/user/index.d.ts +48 -7
  78. package/dist/src/entities/user/index.js +2 -2
  79. package/dist/src/entities/user/index.js.map +1 -1
  80. package/dist/src/entities/video/index.d.ts +88 -10
  81. package/dist/src/entities/video/index.js +2 -2
  82. package/dist/src/entities/video/index.js.map +1 -1
  83. package/dist/src/migrations/book/index.d.ts +97 -0
  84. package/dist/src/migrations/book/index.js +516 -0
  85. package/dist/src/migrations/book/index.js.map +21 -0
  86. package/dist/src/migrations/common/index.d.ts +41 -0
  87. package/dist/src/migrations/common/index.js +57 -0
  88. package/dist/src/migrations/common/index.js.map +10 -0
  89. package/dist/src/migrations/country/index.d.ts +9 -0
  90. package/dist/src/migrations/country/index.js +40 -0
  91. package/dist/src/migrations/country/index.js.map +10 -0
  92. package/dist/src/migrations/currency/index.d.ts +9 -0
  93. package/dist/src/migrations/currency/index.js +44 -0
  94. package/dist/src/migrations/currency/index.js.map +10 -0
  95. package/dist/src/migrations/folder/index.d.ts +81 -0
  96. package/dist/src/migrations/folder/index.js +387 -0
  97. package/dist/src/migrations/folder/index.js.map +19 -0
  98. package/dist/src/migrations/gamification/flashcard/index.d.ts +57 -0
  99. package/dist/src/migrations/gamification/flashcard/index.js +420 -0
  100. package/dist/src/migrations/gamification/flashcard/index.js.map +16 -0
  101. package/dist/src/migrations/gamification/index.d.ts +9 -0
  102. package/dist/src/migrations/gamification/index.js +4 -0
  103. package/dist/src/migrations/gamification/index.js.map +9 -0
  104. package/dist/src/migrations/gamification/mcq/index.d.ts +97 -0
  105. package/dist/src/migrations/gamification/mcq/index.js +526 -0
  106. package/dist/src/migrations/gamification/mcq/index.js.map +21 -0
  107. package/dist/src/migrations/image/index.d.ts +81 -0
  108. package/dist/src/migrations/image/index.js +328 -0
  109. package/dist/src/migrations/image/index.js.map +18 -0
  110. package/dist/src/migrations/medecine/index.d.ts +25 -0
  111. package/dist/src/migrations/medecine/index.js +119 -0
  112. package/dist/src/migrations/medecine/index.js.map +12 -0
  113. package/dist/src/migrations/payment/index.d.ts +49 -0
  114. package/dist/src/migrations/payment/index.js +352 -0
  115. package/dist/src/migrations/payment/index.js.map +15 -0
  116. package/dist/src/migrations/user/index.d.ts +81 -0
  117. package/dist/src/migrations/user/index.js +309 -0
  118. package/dist/src/migrations/user/index.js.map +19 -0
  119. package/dist/src/migrations/video/index.d.ts +97 -0
  120. package/dist/src/migrations/video/index.js +289 -0
  121. package/dist/src/migrations/video/index.js.map +21 -0
  122. package/dist/src/repositories/book/index.d.ts +310 -35
  123. package/dist/src/repositories/book/index.js +2 -2
  124. package/dist/src/repositories/book/index.js.map +15 -6
  125. package/dist/src/repositories/common/index.d.ts +65 -94
  126. package/dist/src/repositories/common/index.js +2 -2
  127. package/dist/src/repositories/common/index.js.map +8 -9
  128. package/dist/src/repositories/country/index.d.ts +42 -0
  129. package/dist/src/repositories/country/index.js +4 -0
  130. package/dist/src/repositories/country/index.js.map +10 -0
  131. package/dist/src/repositories/currency/index.d.ts +44 -0
  132. package/dist/src/repositories/currency/index.js +4 -0
  133. package/dist/src/repositories/currency/index.js.map +10 -0
  134. package/dist/src/repositories/gamification/flashcard/index.d.ts +14 -14
  135. package/dist/src/repositories/gamification/flashcard/index.js +2 -2
  136. package/dist/src/repositories/gamification/flashcard/index.js.map +9 -9
  137. package/dist/src/repositories/gamification/index.d.ts +328 -83
  138. package/dist/src/repositories/gamification/index.js +2 -2
  139. package/dist/src/repositories/gamification/index.js.map +3 -3
  140. package/dist/src/repositories/gamification/mcq/index.d.ts +299 -54
  141. package/dist/src/repositories/gamification/mcq/index.js +2 -2
  142. package/dist/src/repositories/gamification/mcq/index.js.map +15 -7
  143. package/dist/src/repositories/image/index.d.ts +295 -20
  144. package/dist/src/repositories/image/index.js +2 -2
  145. package/dist/src/repositories/image/index.js.map +13 -4
  146. package/dist/src/repositories/medecine/index.d.ts +99 -0
  147. package/dist/src/repositories/medecine/index.js +4 -0
  148. package/dist/src/repositories/medecine/index.js.map +12 -0
  149. package/dist/src/repositories/payment/index.d.ts +12 -12
  150. package/dist/src/repositories/payment/index.js +2 -2
  151. package/dist/src/repositories/payment/index.js.map +8 -8
  152. package/dist/src/repositories/user/index.d.ts +210 -59
  153. package/dist/src/repositories/user/index.js +2 -2
  154. package/dist/src/repositories/user/index.js.map +13 -8
  155. package/dist/src/repositories/video/index.d.ts +330 -54
  156. package/dist/src/repositories/video/index.js +2 -2
  157. package/dist/src/repositories/video/index.js.map +15 -6
  158. package/package.json +188 -58
  159. package/dist/ooneex-typeorm-0.0.1.tgz +0 -0
  160. package/dist/shared/chunk-2e7zbxcq.js +0 -5
  161. package/dist/shared/chunk-764bzjhz.js +0 -5
  162. package/dist/shared/chunk-764bzjhz.js.map +0 -12
  163. package/dist/shared/chunk-eh420jqn.js +0 -5
  164. package/dist/shared/chunk-gjsgnzaq.js +0 -5
  165. package/dist/shared/chunk-gjsgnzaq.js.map +0 -10
  166. package/dist/shared/chunk-hw4vdg6q.js +0 -5
  167. package/dist/shared/chunk-hw4vdg6q.js.map +0 -10
  168. package/dist/shared/chunk-j7nprmyh.js +0 -5
  169. package/dist/shared/chunk-kgxsdeye.js +0 -5
  170. package/dist/shared/chunk-kgxsdeye.js.map +0 -13
  171. package/dist/shared/chunk-ntrrrvwt.js +0 -5
  172. package/dist/shared/chunk-ntrrrvwt.js.map +0 -12
  173. package/dist/shared/chunk-pwhygf44.js +0 -5
  174. package/dist/shared/chunk-sd6mmec6.js +0 -5
  175. package/dist/shared/chunk-sd6mmec6.js.map +0 -12
  176. package/dist/shared/chunk-wawk30n1.js +0 -5
  177. package/dist/shared/chunk-wmftwzcs.js +0 -5
  178. package/dist/shared/chunk-zmzz7hqq.js +0 -5
@@ -0,0 +1,516 @@
1
+ // @bun
2
+ import{b as p}from"../../../shared/chunk-sm3brprk.js";import{c as O}from"../../../shared/chunk-mwb9mvew.js";import{e as l}from"../../../shared/chunk-63wp98dt.js";import{_a as T}from"../../../shared/chunk-x9h6vngs.js";import{decorator as L}from"@ooneex/migrations";class _{async up(E){await E`
3
+ CREATE TABLE IF NOT EXISTS book_authors (
4
+ id VARCHAR(25) PRIMARY KEY,
5
+ first_name VARCHAR(100) NOT NULL,
6
+ last_name VARCHAR(100) NOT NULL,
7
+ full_name VARCHAR(200),
8
+ bio TEXT,
9
+ birth_date DATE,
10
+ death_date DATE,
11
+ nationality VARCHAR(100),
12
+ is_locked BOOLEAN DEFAULT false,
13
+ locked_at TIMESTAMPTZ,
14
+ is_blocked BOOLEAN DEFAULT false,
15
+ blocked_at TIMESTAMPTZ,
16
+ block_reason TEXT,
17
+ is_public BOOLEAN DEFAULT true,
18
+ language VARCHAR(10),
19
+ created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
20
+ updated_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
21
+ deleted_at TIMESTAMPTZ
22
+ )
23
+ `,await E`
24
+ CREATE INDEX IF NOT EXISTS idx_book_authors_first_name ON book_authors(first_name)
25
+ `,await E`
26
+ CREATE INDEX IF NOT EXISTS idx_book_authors_last_name ON book_authors(last_name)
27
+ `,await E`
28
+ CREATE INDEX IF NOT EXISTS idx_book_authors_full_name ON book_authors(full_name)
29
+ `,await E`
30
+ CREATE INDEX IF NOT EXISTS idx_book_authors_nationality ON book_authors(nationality)
31
+ `,await E`
32
+ CREATE INDEX IF NOT EXISTS idx_book_authors_language ON book_authors(language)
33
+ `,await E`
34
+ CREATE INDEX IF NOT EXISTS idx_book_authors_deleted_at ON book_authors(deleted_at)
35
+ `,await E`
36
+ CREATE INDEX IF NOT EXISTS idx_book_authors_is_public ON book_authors(is_public) WHERE deleted_at IS NULL
37
+ `,await E`
38
+ CREATE INDEX IF NOT EXISTS idx_book_authors_full_name_lower ON book_authors(LOWER(full_name)) WHERE deleted_at IS NULL
39
+ `,await E`
40
+ CREATE INDEX IF NOT EXISTS idx_book_authors_created_at ON book_authors(created_at DESC)
41
+ `,await E`
42
+ CREATE INDEX IF NOT EXISTS idx_book_authors_active ON book_authors(is_blocked, is_locked) WHERE deleted_at IS NULL AND is_blocked = false
43
+ `}async down(E){await E`DROP TABLE IF EXISTS book_authors CASCADE`}getVersion(){return"20251225173353646"}getDependencies(){return[]}}_=T([L.migration()],_);import{decorator as C}from"@ooneex/migrations";class s{async up(E){await E`
44
+ CREATE TABLE IF NOT EXISTS book_publishers (
45
+ id VARCHAR(25) PRIMARY KEY,
46
+ name VARCHAR(200) NOT NULL,
47
+ address TEXT,
48
+ website VARCHAR(255),
49
+ founded_year INT,
50
+ is_locked BOOLEAN DEFAULT false,
51
+ locked_at TIMESTAMPTZ,
52
+ is_blocked BOOLEAN DEFAULT false,
53
+ blocked_at TIMESTAMPTZ,
54
+ block_reason TEXT,
55
+ is_public BOOLEAN DEFAULT true,
56
+ language VARCHAR(10),
57
+ created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
58
+ updated_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
59
+ deleted_at TIMESTAMPTZ
60
+ )
61
+ `,await E`
62
+ CREATE INDEX IF NOT EXISTS idx_book_publishers_name ON book_publishers(name)
63
+ `,await E`
64
+ CREATE INDEX IF NOT EXISTS idx_book_publishers_founded_year ON book_publishers(founded_year)
65
+ `,await E`
66
+ CREATE INDEX IF NOT EXISTS idx_book_publishers_language ON book_publishers(language)
67
+ `,await E`
68
+ CREATE INDEX IF NOT EXISTS idx_book_publishers_deleted_at ON book_publishers(deleted_at)
69
+ `,await E`
70
+ CREATE INDEX IF NOT EXISTS idx_book_publishers_is_public ON book_publishers(is_public) WHERE deleted_at IS NULL
71
+ `,await E`
72
+ CREATE INDEX IF NOT EXISTS idx_book_publishers_name_lower ON book_publishers(LOWER(name)) WHERE deleted_at IS NULL
73
+ `,await E`
74
+ CREATE INDEX IF NOT EXISTS idx_book_publishers_created_at ON book_publishers(created_at DESC)
75
+ `,await E`
76
+ CREATE INDEX IF NOT EXISTS idx_book_publishers_active ON book_publishers(is_blocked, is_locked) WHERE deleted_at IS NULL AND is_blocked = false
77
+ `}async down(E){await E`DROP TABLE IF EXISTS book_publishers CASCADE`}getVersion(){return"20251225173354646"}getDependencies(){return[]}}s=T([C.migration()],s);import{decorator as X}from"@ooneex/migrations";class e{async up(E){await E`
78
+ CREATE TABLE IF NOT EXISTS books (
79
+ id VARCHAR(25) PRIMARY KEY,
80
+ title VARCHAR(500) NOT NULL,
81
+ subtitle VARCHAR(500),
82
+ isbn VARCHAR(13),
83
+ isbn13 VARCHAR(17),
84
+ publisher_id VARCHAR(25),
85
+ published_date DATE,
86
+ description TEXT,
87
+ page_count INT,
88
+ category_id VARCHAR(25),
89
+ genres JSON,
90
+ size BIGINT,
91
+ url TEXT,
92
+ cover_image TEXT,
93
+ context VARCHAR(255),
94
+ context_id VARCHAR(25),
95
+ average_rating DECIMAL(3, 2),
96
+ ratings_count INT,
97
+ edition VARCHAR(100),
98
+ series VARCHAR(200),
99
+ series_volume INT,
100
+ status_id VARCHAR(25),
101
+ is_locked BOOLEAN DEFAULT false,
102
+ locked_at TIMESTAMPTZ,
103
+ is_blocked BOOLEAN DEFAULT false,
104
+ blocked_at TIMESTAMPTZ,
105
+ block_reason TEXT,
106
+ is_public BOOLEAN DEFAULT true,
107
+ language VARCHAR(10),
108
+ created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
109
+ updated_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
110
+ deleted_at TIMESTAMPTZ,
111
+ CONSTRAINT fk_books_publisher FOREIGN KEY (publisher_id) REFERENCES book_publishers(id) ON DELETE SET NULL,
112
+ CONSTRAINT fk_books_category FOREIGN KEY (category_id) REFERENCES categories(id) ON DELETE SET NULL,
113
+ CONSTRAINT fk_books_status FOREIGN KEY (status_id) REFERENCES statuses(id) ON DELETE SET NULL
114
+ )
115
+ `,await E`
116
+ CREATE TABLE IF NOT EXISTS books_authors (
117
+ book_id VARCHAR(25) NOT NULL,
118
+ author_id VARCHAR(25) NOT NULL,
119
+ PRIMARY KEY (book_id, author_id),
120
+ CONSTRAINT fk_books_authors_book FOREIGN KEY (book_id) REFERENCES books(id) ON DELETE CASCADE,
121
+ CONSTRAINT fk_books_authors_author FOREIGN KEY (author_id) REFERENCES book_authors(id) ON DELETE CASCADE
122
+ )
123
+ `,await E`
124
+ CREATE TABLE IF NOT EXISTS books_tags (
125
+ book_id VARCHAR(25) NOT NULL,
126
+ tag_id VARCHAR(25) NOT NULL,
127
+ PRIMARY KEY (book_id, tag_id),
128
+ CONSTRAINT fk_books_tags_book FOREIGN KEY (book_id) REFERENCES books(id) ON DELETE CASCADE,
129
+ CONSTRAINT fk_books_tags_tag FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE
130
+ )
131
+ `,await E`
132
+ CREATE INDEX IF NOT EXISTS idx_books_title ON books(title)
133
+ `,await E`
134
+ CREATE INDEX IF NOT EXISTS idx_books_isbn ON books(isbn)
135
+ `,await E`
136
+ CREATE INDEX IF NOT EXISTS idx_books_isbn13 ON books(isbn13)
137
+ `,await E`
138
+ CREATE INDEX IF NOT EXISTS idx_books_publisher_id ON books(publisher_id)
139
+ `,await E`
140
+ CREATE INDEX IF NOT EXISTS idx_books_category_id ON books(category_id)
141
+ `,await E`
142
+ CREATE INDEX IF NOT EXISTS idx_books_status_id ON books(status_id)
143
+ `,await E`
144
+ CREATE INDEX IF NOT EXISTS idx_books_language ON books(language)
145
+ `,await E`
146
+ CREATE INDEX IF NOT EXISTS idx_books_deleted_at ON books(deleted_at)
147
+ `,await E`
148
+ CREATE INDEX IF NOT EXISTS idx_books_context ON books(context, context_id)
149
+ `,await E`
150
+ CREATE INDEX IF NOT EXISTS idx_books_series ON books(series, series_volume)
151
+ `,await E`
152
+ CREATE INDEX IF NOT EXISTS idx_books_published_date ON books(published_date DESC)
153
+ `,await E`
154
+ CREATE INDEX IF NOT EXISTS idx_books_average_rating ON books(average_rating DESC)
155
+ `,await E`
156
+ CREATE INDEX IF NOT EXISTS idx_books_ratings_count ON books(ratings_count DESC)
157
+ `,await E`
158
+ CREATE INDEX IF NOT EXISTS idx_books_is_public ON books(is_public) WHERE deleted_at IS NULL
159
+ `,await E`
160
+ CREATE INDEX IF NOT EXISTS idx_books_title_lower ON books(LOWER(title)) WHERE deleted_at IS NULL
161
+ `,await E`
162
+ CREATE INDEX IF NOT EXISTS idx_books_created_at ON books(created_at DESC)
163
+ `,await E`
164
+ CREATE INDEX IF NOT EXISTS idx_books_updated_at ON books(updated_at DESC)
165
+ `,await E`
166
+ CREATE INDEX IF NOT EXISTS idx_books_popular ON books(is_public, average_rating DESC, ratings_count DESC) WHERE deleted_at IS NULL
167
+ `,await E`
168
+ CREATE INDEX IF NOT EXISTS idx_books_active ON books(is_blocked, is_locked) WHERE deleted_at IS NULL AND is_blocked = false
169
+ `,await E`
170
+ CREATE INDEX IF NOT EXISTS idx_books_authors_book_id ON books_authors(book_id)
171
+ `,await E`
172
+ CREATE INDEX IF NOT EXISTS idx_books_authors_author_id ON books_authors(author_id)
173
+ `,await E`
174
+ CREATE INDEX IF NOT EXISTS idx_books_tags_book_id ON books_tags(book_id)
175
+ `,await E`
176
+ CREATE INDEX IF NOT EXISTS idx_books_tags_tag_id ON books_tags(tag_id)
177
+ `}async down(E){await E`DROP TABLE IF EXISTS books_tags CASCADE`,await E`DROP TABLE IF EXISTS books_authors CASCADE`,await E`DROP TABLE IF EXISTS books CASCADE`}getVersion(){return"20251225173355647"}getDependencies(){return[_,s,l,O,p]}}e=T([X.migration()],e);import{decorator as c}from"@ooneex/migrations";class I{async up(E){await E`
178
+ CREATE TABLE IF NOT EXISTS books_stats (
179
+ id VARCHAR(25) PRIMARY KEY,
180
+ book_id VARCHAR(25),
181
+ likes_count INT DEFAULT 0,
182
+ dislikes_count INT DEFAULT 0,
183
+ comments_count INT DEFAULT 0,
184
+ shares_count INT DEFAULT 0,
185
+ saves_count INT DEFAULT 0,
186
+ downloads_count INT DEFAULT 0,
187
+ views_count INT DEFAULT 0,
188
+ reports_count INT DEFAULT 0,
189
+ is_locked BOOLEAN DEFAULT false,
190
+ locked_at TIMESTAMPTZ,
191
+ is_blocked BOOLEAN DEFAULT false,
192
+ blocked_at TIMESTAMPTZ,
193
+ block_reason TEXT,
194
+ is_public BOOLEAN DEFAULT true,
195
+ language VARCHAR(10),
196
+ created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
197
+ updated_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
198
+ deleted_at TIMESTAMPTZ,
199
+ CONSTRAINT fk_books_stats_book FOREIGN KEY (book_id) REFERENCES books(id) ON DELETE CASCADE
200
+ )
201
+ `,await E`
202
+ CREATE INDEX IF NOT EXISTS idx_books_stats_book_id ON books_stats(book_id)
203
+ `,await E`
204
+ CREATE INDEX IF NOT EXISTS idx_books_stats_likes_count ON books_stats(likes_count DESC)
205
+ `,await E`
206
+ CREATE INDEX IF NOT EXISTS idx_books_stats_views_count ON books_stats(views_count DESC)
207
+ `,await E`
208
+ CREATE INDEX IF NOT EXISTS idx_books_stats_downloads_count ON books_stats(downloads_count DESC)
209
+ `,await E`
210
+ CREATE INDEX IF NOT EXISTS idx_books_stats_language ON books_stats(language)
211
+ `,await E`
212
+ CREATE INDEX IF NOT EXISTS idx_books_stats_deleted_at ON books_stats(deleted_at)
213
+ `,await E`
214
+ CREATE INDEX IF NOT EXISTS idx_books_stats_is_public ON books_stats(is_public) WHERE deleted_at IS NULL
215
+ `,await E`
216
+ CREATE INDEX IF NOT EXISTS idx_books_stats_popular ON books_stats(is_public, likes_count DESC, views_count DESC) WHERE deleted_at IS NULL
217
+ `,await E`
218
+ CREATE INDEX IF NOT EXISTS idx_books_stats_created_at ON books_stats(created_at DESC)
219
+ `,await E`
220
+ CREATE INDEX IF NOT EXISTS idx_books_stats_active ON books_stats(is_blocked, is_locked) WHERE deleted_at IS NULL AND is_blocked = false
221
+ `}async down(E){await E`DROP TABLE IF EXISTS books_stats CASCADE`}getVersion(){return"20251225173356648"}getDependencies(){return[e]}}I=T([c.migration()],I);import{decorator as h}from"@ooneex/migrations";class a{async up(E){await E`
222
+ CREATE TABLE IF NOT EXISTS books_comments (
223
+ id VARCHAR(25) PRIMARY KEY,
224
+ book_id VARCHAR(25),
225
+ comment TEXT NOT NULL,
226
+ commented_by VARCHAR(255),
227
+ commented_by_id VARCHAR(25),
228
+ parent_comment_id VARCHAR(25),
229
+ is_locked BOOLEAN DEFAULT false,
230
+ locked_at TIMESTAMPTZ,
231
+ is_blocked BOOLEAN DEFAULT false,
232
+ blocked_at TIMESTAMPTZ,
233
+ block_reason TEXT,
234
+ is_public BOOLEAN DEFAULT true,
235
+ language VARCHAR(10),
236
+ created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
237
+ updated_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
238
+ deleted_at TIMESTAMPTZ,
239
+ CONSTRAINT fk_books_comments_book FOREIGN KEY (book_id) REFERENCES books(id) ON DELETE CASCADE,
240
+ CONSTRAINT fk_books_comments_parent FOREIGN KEY (parent_comment_id) REFERENCES books_comments(id) ON DELETE CASCADE
241
+ )
242
+ `,await E`
243
+ CREATE INDEX IF NOT EXISTS idx_books_comments_book_id ON books_comments(book_id)
244
+ `,await E`
245
+ CREATE INDEX IF NOT EXISTS idx_books_comments_commented_by_id ON books_comments(commented_by_id)
246
+ `,await E`
247
+ CREATE INDEX IF NOT EXISTS idx_books_comments_parent_comment_id ON books_comments(parent_comment_id)
248
+ `,await E`
249
+ CREATE INDEX IF NOT EXISTS idx_books_comments_language ON books_comments(language)
250
+ `,await E`
251
+ CREATE INDEX IF NOT EXISTS idx_books_comments_deleted_at ON books_comments(deleted_at)
252
+ `,await E`
253
+ CREATE INDEX IF NOT EXISTS idx_books_comments_is_public ON books_comments(is_public) WHERE deleted_at IS NULL
254
+ `,await E`
255
+ CREATE INDEX IF NOT EXISTS idx_books_comments_created_at ON books_comments(created_at DESC)
256
+ `,await E`
257
+ CREATE INDEX IF NOT EXISTS idx_books_comments_book_created ON books_comments(book_id, created_at DESC) WHERE deleted_at IS NULL
258
+ `,await E`
259
+ CREATE INDEX IF NOT EXISTS idx_books_comments_active ON books_comments(is_blocked, is_locked) WHERE deleted_at IS NULL AND is_blocked = false
260
+ `}async down(E){await E`DROP TABLE IF EXISTS books_comments CASCADE`}getVersion(){return"20251225173357649"}getDependencies(){return[e]}}a=T([h.migration()],a);import{decorator as D}from"@ooneex/migrations";class A{async up(E){await E`
261
+ CREATE TABLE IF NOT EXISTS books_liked (
262
+ id VARCHAR(25) PRIMARY KEY,
263
+ book_id VARCHAR(25),
264
+ liked_by VARCHAR(255),
265
+ liked_by_id VARCHAR(25),
266
+ is_locked BOOLEAN DEFAULT false,
267
+ locked_at TIMESTAMPTZ,
268
+ is_blocked BOOLEAN DEFAULT false,
269
+ blocked_at TIMESTAMPTZ,
270
+ block_reason TEXT,
271
+ is_public BOOLEAN DEFAULT true,
272
+ language VARCHAR(10),
273
+ created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
274
+ updated_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
275
+ deleted_at TIMESTAMPTZ,
276
+ CONSTRAINT fk_books_liked_book FOREIGN KEY (book_id) REFERENCES books(id) ON DELETE CASCADE
277
+ )
278
+ `,await E`
279
+ CREATE INDEX IF NOT EXISTS idx_books_liked_book_id ON books_liked(book_id)
280
+ `,await E`
281
+ CREATE INDEX IF NOT EXISTS idx_books_liked_liked_by_id ON books_liked(liked_by_id)
282
+ `,await E`
283
+ CREATE INDEX IF NOT EXISTS idx_books_liked_language ON books_liked(language)
284
+ `,await E`
285
+ CREATE INDEX IF NOT EXISTS idx_books_liked_deleted_at ON books_liked(deleted_at)
286
+ `,await E`
287
+ CREATE INDEX IF NOT EXISTS idx_books_liked_is_public ON books_liked(is_public) WHERE deleted_at IS NULL
288
+ `,await E`
289
+ CREATE INDEX IF NOT EXISTS idx_books_liked_created_at ON books_liked(created_at DESC)
290
+ `,await E`
291
+ CREATE INDEX IF NOT EXISTS idx_books_liked_book_user ON books_liked(book_id, liked_by_id) WHERE deleted_at IS NULL
292
+ `,await E`
293
+ CREATE INDEX IF NOT EXISTS idx_books_liked_active ON books_liked(is_blocked, is_locked) WHERE deleted_at IS NULL AND is_blocked = false
294
+ `}async down(E){await E`DROP TABLE IF EXISTS books_liked CASCADE`}getVersion(){return"20251225173358650"}getDependencies(){return[e]}}A=T([D.migration()],A);import{decorator as o}from"@ooneex/migrations";class N{async up(E){await E`
295
+ CREATE TABLE IF NOT EXISTS books_disliked (
296
+ id VARCHAR(25) PRIMARY KEY,
297
+ book_id VARCHAR(25),
298
+ disliked_by VARCHAR(255),
299
+ disliked_by_id VARCHAR(25),
300
+ is_locked BOOLEAN DEFAULT false,
301
+ locked_at TIMESTAMPTZ,
302
+ is_blocked BOOLEAN DEFAULT false,
303
+ blocked_at TIMESTAMPTZ,
304
+ block_reason TEXT,
305
+ is_public BOOLEAN DEFAULT true,
306
+ language VARCHAR(10),
307
+ created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
308
+ updated_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
309
+ deleted_at TIMESTAMPTZ,
310
+ CONSTRAINT fk_books_disliked_book FOREIGN KEY (book_id) REFERENCES books(id) ON DELETE CASCADE
311
+ )
312
+ `,await E`
313
+ CREATE INDEX IF NOT EXISTS idx_books_disliked_book_id ON books_disliked(book_id)
314
+ `,await E`
315
+ CREATE INDEX IF NOT EXISTS idx_books_disliked_disliked_by_id ON books_disliked(disliked_by_id)
316
+ `,await E`
317
+ CREATE INDEX IF NOT EXISTS idx_books_disliked_language ON books_disliked(language)
318
+ `,await E`
319
+ CREATE INDEX IF NOT EXISTS idx_books_disliked_deleted_at ON books_disliked(deleted_at)
320
+ `,await E`
321
+ CREATE INDEX IF NOT EXISTS idx_books_disliked_is_public ON books_disliked(is_public) WHERE deleted_at IS NULL
322
+ `,await E`
323
+ CREATE INDEX IF NOT EXISTS idx_books_disliked_created_at ON books_disliked(created_at DESC)
324
+ `,await E`
325
+ CREATE INDEX IF NOT EXISTS idx_books_disliked_book_user ON books_disliked(book_id, disliked_by_id) WHERE deleted_at IS NULL
326
+ `,await E`
327
+ CREATE INDEX IF NOT EXISTS idx_books_disliked_active ON books_disliked(is_blocked, is_locked) WHERE deleted_at IS NULL AND is_blocked = false
328
+ `}async down(E){await E`DROP TABLE IF EXISTS books_disliked CASCADE`}getVersion(){return"20251225173359651"}getDependencies(){return[e]}}N=T([o.migration()],N);import{decorator as m}from"@ooneex/migrations";class S{async up(E){await E`
329
+ CREATE TABLE IF NOT EXISTS books_viewed (
330
+ id VARCHAR(25) PRIMARY KEY,
331
+ book_id VARCHAR(25),
332
+ viewed_by VARCHAR(255),
333
+ viewed_by_id VARCHAR(25),
334
+ is_locked BOOLEAN DEFAULT false,
335
+ locked_at TIMESTAMPTZ,
336
+ is_blocked BOOLEAN DEFAULT false,
337
+ blocked_at TIMESTAMPTZ,
338
+ block_reason TEXT,
339
+ is_public BOOLEAN DEFAULT true,
340
+ language VARCHAR(10),
341
+ created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
342
+ updated_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
343
+ deleted_at TIMESTAMPTZ,
344
+ CONSTRAINT fk_books_viewed_book FOREIGN KEY (book_id) REFERENCES books(id) ON DELETE CASCADE
345
+ )
346
+ `,await E`
347
+ CREATE INDEX IF NOT EXISTS idx_books_viewed_book_id ON books_viewed(book_id)
348
+ `,await E`
349
+ CREATE INDEX IF NOT EXISTS idx_books_viewed_viewed_by_id ON books_viewed(viewed_by_id)
350
+ `,await E`
351
+ CREATE INDEX IF NOT EXISTS idx_books_viewed_language ON books_viewed(language)
352
+ `,await E`
353
+ CREATE INDEX IF NOT EXISTS idx_books_viewed_deleted_at ON books_viewed(deleted_at)
354
+ `,await E`
355
+ CREATE INDEX IF NOT EXISTS idx_books_viewed_is_public ON books_viewed(is_public) WHERE deleted_at IS NULL
356
+ `,await E`
357
+ CREATE INDEX IF NOT EXISTS idx_books_viewed_created_at ON books_viewed(created_at DESC)
358
+ `,await E`
359
+ CREATE INDEX IF NOT EXISTS idx_books_viewed_book_user ON books_viewed(book_id, viewed_by_id) WHERE deleted_at IS NULL
360
+ `,await E`
361
+ CREATE INDEX IF NOT EXISTS idx_books_viewed_active ON books_viewed(is_blocked, is_locked) WHERE deleted_at IS NULL AND is_blocked = false
362
+ `}async down(E){await E`DROP TABLE IF EXISTS books_viewed CASCADE`}getVersion(){return"20251225173400652"}getDependencies(){return[e]}}S=T([m.migration()],S);import{decorator as k}from"@ooneex/migrations";class d{async up(E){await E`
363
+ CREATE TABLE IF NOT EXISTS books_saved (
364
+ id VARCHAR(25) PRIMARY KEY,
365
+ book_id VARCHAR(25),
366
+ saved_by VARCHAR(255),
367
+ saved_by_id VARCHAR(25),
368
+ is_locked BOOLEAN DEFAULT false,
369
+ locked_at TIMESTAMPTZ,
370
+ is_blocked BOOLEAN DEFAULT false,
371
+ blocked_at TIMESTAMPTZ,
372
+ block_reason TEXT,
373
+ is_public BOOLEAN DEFAULT true,
374
+ language VARCHAR(10),
375
+ created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
376
+ updated_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
377
+ deleted_at TIMESTAMPTZ,
378
+ CONSTRAINT fk_books_saved_book FOREIGN KEY (book_id) REFERENCES books(id) ON DELETE CASCADE
379
+ )
380
+ `,await E`
381
+ CREATE INDEX IF NOT EXISTS idx_books_saved_book_id ON books_saved(book_id)
382
+ `,await E`
383
+ CREATE INDEX IF NOT EXISTS idx_books_saved_saved_by_id ON books_saved(saved_by_id)
384
+ `,await E`
385
+ CREATE INDEX IF NOT EXISTS idx_books_saved_language ON books_saved(language)
386
+ `,await E`
387
+ CREATE INDEX IF NOT EXISTS idx_books_saved_deleted_at ON books_saved(deleted_at)
388
+ `,await E`
389
+ CREATE INDEX IF NOT EXISTS idx_books_saved_is_public ON books_saved(is_public) WHERE deleted_at IS NULL
390
+ `,await E`
391
+ CREATE INDEX IF NOT EXISTS idx_books_saved_created_at ON books_saved(created_at DESC)
392
+ `,await E`
393
+ CREATE INDEX IF NOT EXISTS idx_books_saved_book_user ON books_saved(book_id, saved_by_id) WHERE deleted_at IS NULL
394
+ `,await E`
395
+ CREATE INDEX IF NOT EXISTS idx_books_saved_active ON books_saved(is_blocked, is_locked) WHERE deleted_at IS NULL AND is_blocked = false
396
+ `}async down(E){await E`DROP TABLE IF EXISTS books_saved CASCADE`}getVersion(){return"20251225173401654"}getDependencies(){return[e]}}d=T([k.migration()],d);import{decorator as F}from"@ooneex/migrations";class u{async up(E){await E`
397
+ CREATE TABLE IF NOT EXISTS books_downloaded (
398
+ id VARCHAR(25) PRIMARY KEY,
399
+ book_id VARCHAR(25),
400
+ downloaded_by VARCHAR(255),
401
+ downloaded_by_id VARCHAR(25),
402
+ is_locked BOOLEAN DEFAULT false,
403
+ locked_at TIMESTAMPTZ,
404
+ is_blocked BOOLEAN DEFAULT false,
405
+ blocked_at TIMESTAMPTZ,
406
+ block_reason TEXT,
407
+ is_public BOOLEAN DEFAULT true,
408
+ language VARCHAR(10),
409
+ created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
410
+ updated_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
411
+ deleted_at TIMESTAMPTZ,
412
+ CONSTRAINT fk_books_downloaded_book FOREIGN KEY (book_id) REFERENCES books(id) ON DELETE CASCADE
413
+ )
414
+ `,await E`
415
+ CREATE INDEX IF NOT EXISTS idx_books_downloaded_book_id ON books_downloaded(book_id)
416
+ `,await E`
417
+ CREATE INDEX IF NOT EXISTS idx_books_downloaded_downloaded_by_id ON books_downloaded(downloaded_by_id)
418
+ `,await E`
419
+ CREATE INDEX IF NOT EXISTS idx_books_downloaded_language ON books_downloaded(language)
420
+ `,await E`
421
+ CREATE INDEX IF NOT EXISTS idx_books_downloaded_deleted_at ON books_downloaded(deleted_at)
422
+ `,await E`
423
+ CREATE INDEX IF NOT EXISTS idx_books_downloaded_is_public ON books_downloaded(is_public) WHERE deleted_at IS NULL
424
+ `,await E`
425
+ CREATE INDEX IF NOT EXISTS idx_books_downloaded_created_at ON books_downloaded(created_at DESC)
426
+ `,await E`
427
+ CREATE INDEX IF NOT EXISTS idx_books_downloaded_book_user ON books_downloaded(book_id, downloaded_by_id) WHERE deleted_at IS NULL
428
+ `,await E`
429
+ CREATE INDEX IF NOT EXISTS idx_books_downloaded_active ON books_downloaded(is_blocked, is_locked) WHERE deleted_at IS NULL AND is_blocked = false
430
+ `}async down(E){await E`DROP TABLE IF EXISTS books_downloaded CASCADE`}getVersion(){return"20251225173402655"}getDependencies(){return[e]}}u=T([F.migration()],u);import{decorator as U}from"@ooneex/migrations";class R{async up(E){await E`
431
+ CREATE TABLE IF NOT EXISTS books_shared (
432
+ id VARCHAR(25) PRIMARY KEY,
433
+ book_id VARCHAR(25),
434
+ shared_with VARCHAR(255),
435
+ shared_by_id VARCHAR(25),
436
+ permission VARCHAR(50),
437
+ expires_at TIMESTAMPTZ,
438
+ is_locked BOOLEAN DEFAULT false,
439
+ locked_at TIMESTAMPTZ,
440
+ is_blocked BOOLEAN DEFAULT false,
441
+ blocked_at TIMESTAMPTZ,
442
+ block_reason TEXT,
443
+ is_public BOOLEAN DEFAULT true,
444
+ language VARCHAR(10),
445
+ created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
446
+ updated_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
447
+ deleted_at TIMESTAMPTZ,
448
+ CONSTRAINT fk_books_shared_book FOREIGN KEY (book_id) REFERENCES books(id) ON DELETE CASCADE
449
+ )
450
+ `,await E`
451
+ CREATE INDEX IF NOT EXISTS idx_books_shared_book_id ON books_shared(book_id)
452
+ `,await E`
453
+ CREATE INDEX IF NOT EXISTS idx_books_shared_shared_by_id ON books_shared(shared_by_id)
454
+ `,await E`
455
+ CREATE INDEX IF NOT EXISTS idx_books_shared_permission ON books_shared(permission)
456
+ `,await E`
457
+ CREATE INDEX IF NOT EXISTS idx_books_shared_expires_at ON books_shared(expires_at)
458
+ `,await E`
459
+ CREATE INDEX IF NOT EXISTS idx_books_shared_language ON books_shared(language)
460
+ `,await E`
461
+ CREATE INDEX IF NOT EXISTS idx_books_shared_deleted_at ON books_shared(deleted_at)
462
+ `,await E`
463
+ CREATE INDEX IF NOT EXISTS idx_books_shared_is_public ON books_shared(is_public) WHERE deleted_at IS NULL
464
+ `,await E`
465
+ CREATE INDEX IF NOT EXISTS idx_books_shared_created_at ON books_shared(created_at DESC)
466
+ `,await E`
467
+ CREATE INDEX IF NOT EXISTS idx_books_shared_book_user ON books_shared(book_id, shared_by_id) WHERE deleted_at IS NULL
468
+ `,await E`
469
+ CREATE INDEX IF NOT EXISTS idx_books_shared_active ON books_shared(is_blocked, is_locked) WHERE deleted_at IS NULL AND is_blocked = false
470
+ `,await E`
471
+ CREATE INDEX IF NOT EXISTS idx_books_shared_active_not_expired ON books_shared(expires_at) WHERE deleted_at IS NULL AND expires_at > NOW()
472
+ `}async down(E){await E`DROP TABLE IF EXISTS books_shared CASCADE`}getVersion(){return"20251225173403656"}getDependencies(){return[e]}}R=T([U.migration()],R);import{decorator as P}from"@ooneex/migrations";class b{async up(E){await E`
473
+ CREATE TABLE IF NOT EXISTS books_reports (
474
+ id VARCHAR(25) PRIMARY KEY,
475
+ book_id VARCHAR(25),
476
+ reason VARCHAR(255) NOT NULL,
477
+ description TEXT,
478
+ reported_by VARCHAR(255),
479
+ reported_by_id VARCHAR(25),
480
+ status_id VARCHAR(25),
481
+ is_locked BOOLEAN DEFAULT false,
482
+ locked_at TIMESTAMPTZ,
483
+ is_blocked BOOLEAN DEFAULT false,
484
+ blocked_at TIMESTAMPTZ,
485
+ block_reason TEXT,
486
+ is_public BOOLEAN DEFAULT true,
487
+ language VARCHAR(10),
488
+ created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
489
+ updated_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
490
+ deleted_at TIMESTAMPTZ,
491
+ CONSTRAINT fk_books_reports_book FOREIGN KEY (book_id) REFERENCES books(id) ON DELETE CASCADE,
492
+ CONSTRAINT fk_books_reports_status FOREIGN KEY (status_id) REFERENCES statuses(id) ON DELETE SET NULL
493
+ )
494
+ `,await E`
495
+ CREATE INDEX IF NOT EXISTS idx_books_reports_book_id ON books_reports(book_id)
496
+ `,await E`
497
+ CREATE INDEX IF NOT EXISTS idx_books_reports_reported_by_id ON books_reports(reported_by_id)
498
+ `,await E`
499
+ CREATE INDEX IF NOT EXISTS idx_books_reports_status_id ON books_reports(status_id)
500
+ `,await E`
501
+ CREATE INDEX IF NOT EXISTS idx_books_reports_reason ON books_reports(reason)
502
+ `,await E`
503
+ CREATE INDEX IF NOT EXISTS idx_books_reports_language ON books_reports(language)
504
+ `,await E`
505
+ CREATE INDEX IF NOT EXISTS idx_books_reports_deleted_at ON books_reports(deleted_at)
506
+ `,await E`
507
+ CREATE INDEX IF NOT EXISTS idx_books_reports_is_public ON books_reports(is_public) WHERE deleted_at IS NULL
508
+ `,await E`
509
+ CREATE INDEX IF NOT EXISTS idx_books_reports_created_at ON books_reports(created_at DESC)
510
+ `,await E`
511
+ CREATE INDEX IF NOT EXISTS idx_books_reports_book_status ON books_reports(book_id, status_id) WHERE deleted_at IS NULL
512
+ `,await E`
513
+ CREATE INDEX IF NOT EXISTS idx_books_reports_active ON books_reports(is_blocked, is_locked) WHERE deleted_at IS NULL AND is_blocked = false
514
+ `}async down(E){await E`DROP TABLE IF EXISTS books_reports CASCADE`}getVersion(){return"20251225173404658"}getDependencies(){return[e,l]}}b=T([P.migration()],b);export{b as Migration20251225173404658,R as Migration20251225173403656,u as Migration20251225173402655,d as Migration20251225173401654,S as Migration20251225173400652,N as Migration20251225173359651,A as Migration20251225173358650,a as Migration20251225173357649,I as Migration20251225173356648,e as Migration20251225173355647,s as Migration20251225173354646,_ as Migration20251225173353646};
515
+
516
+ //# debugId=F6961C2DC88D889D64756E2164756E21
@@ -0,0 +1,21 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["src/migrations/book/Migration20251225173353646.ts", "src/migrations/book/Migration20251225173354646.ts", "src/migrations/book/Migration20251225173355647.ts", "src/migrations/book/Migration20251225173356648.ts", "src/migrations/book/Migration20251225173357649.ts", "src/migrations/book/Migration20251225173358650.ts", "src/migrations/book/Migration20251225173359651.ts", "src/migrations/book/Migration20251225173400652.ts", "src/migrations/book/Migration20251225173401654.ts", "src/migrations/book/Migration20251225173402655.ts", "src/migrations/book/Migration20251225173403656.ts", "src/migrations/book/Migration20251225173404658.ts"],
4
+ "sourcesContent": [
5
+ "import { decorator, type IMigration, type MigrationClassType } from \"@ooneex/migrations\";\nimport type { TransactionSQL } from \"bun\";\n\n@decorator.migration()\nexport class Migration20251225173353646 implements IMigration {\n public async up(tx: TransactionSQL): Promise<void> {\n await tx`\n CREATE TABLE IF NOT EXISTS book_authors (\n id VARCHAR(25) PRIMARY KEY,\n first_name VARCHAR(100) NOT NULL,\n last_name VARCHAR(100) NOT NULL,\n full_name VARCHAR(200),\n bio TEXT,\n birth_date DATE,\n death_date DATE,\n nationality VARCHAR(100),\n is_locked BOOLEAN DEFAULT false,\n locked_at TIMESTAMPTZ,\n is_blocked BOOLEAN DEFAULT false,\n blocked_at TIMESTAMPTZ,\n block_reason TEXT,\n is_public BOOLEAN DEFAULT true,\n language VARCHAR(10),\n created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,\n updated_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,\n deleted_at TIMESTAMPTZ\n )\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_book_authors_first_name ON book_authors(first_name)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_book_authors_last_name ON book_authors(last_name)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_book_authors_full_name ON book_authors(full_name)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_book_authors_nationality ON book_authors(nationality)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_book_authors_language ON book_authors(language)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_book_authors_deleted_at ON book_authors(deleted_at)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_book_authors_is_public ON book_authors(is_public) WHERE deleted_at IS NULL\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_book_authors_full_name_lower ON book_authors(LOWER(full_name)) WHERE deleted_at IS NULL\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_book_authors_created_at ON book_authors(created_at DESC)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_book_authors_active ON book_authors(is_blocked, is_locked) WHERE deleted_at IS NULL AND is_blocked = false\n `;\n }\n\n public async down(tx: TransactionSQL): Promise<void> {\n await tx`DROP TABLE IF EXISTS book_authors CASCADE`;\n }\n\n public getVersion(): string {\n return \"20251225173353646\";\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\";\n\n@decorator.migration()\nexport class Migration20251225173354646 implements IMigration {\n public async up(tx: TransactionSQL): Promise<void> {\n await tx`\n CREATE TABLE IF NOT EXISTS book_publishers (\n id VARCHAR(25) PRIMARY KEY,\n name VARCHAR(200) NOT NULL,\n address TEXT,\n website VARCHAR(255),\n founded_year INT,\n is_locked BOOLEAN DEFAULT false,\n locked_at TIMESTAMPTZ,\n is_blocked BOOLEAN DEFAULT false,\n blocked_at TIMESTAMPTZ,\n block_reason TEXT,\n is_public BOOLEAN DEFAULT true,\n language VARCHAR(10),\n created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,\n updated_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,\n deleted_at TIMESTAMPTZ\n )\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_book_publishers_name ON book_publishers(name)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_book_publishers_founded_year ON book_publishers(founded_year)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_book_publishers_language ON book_publishers(language)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_book_publishers_deleted_at ON book_publishers(deleted_at)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_book_publishers_is_public ON book_publishers(is_public) WHERE deleted_at IS NULL\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_book_publishers_name_lower ON book_publishers(LOWER(name)) WHERE deleted_at IS NULL\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_book_publishers_created_at ON book_publishers(created_at DESC)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_book_publishers_active ON book_publishers(is_blocked, is_locked) WHERE deleted_at IS NULL AND is_blocked = false\n `;\n }\n\n public async down(tx: TransactionSQL): Promise<void> {\n await tx`DROP TABLE IF EXISTS book_publishers CASCADE`;\n }\n\n public getVersion(): string {\n return \"20251225173354646\";\n }\n\n public getDependencies(): MigrationClassType[] {\n return [];\n }\n}\n",
7
+ "import { decorator, type IMigration, type MigrationClassType } from \"@ooneex/migrations\";\nimport type { TransactionSQL } from \"bun\";\nimport { Migration20251225173350644 } from \"../common/Migration20251225173350644\";\nimport { Migration20251225173351645 } from \"../common/Migration20251225173351645\";\nimport { Migration20251225173352645 } from \"../common/Migration20251225173352645\";\nimport { Migration20251225173353646 } from \"./Migration20251225173353646\";\nimport { Migration20251225173354646 } from \"./Migration20251225173354646\";\n\n@decorator.migration()\nexport class Migration20251225173355647 implements IMigration {\n public async up(tx: TransactionSQL): Promise<void> {\n await tx`\n CREATE TABLE IF NOT EXISTS books (\n id VARCHAR(25) PRIMARY KEY,\n title VARCHAR(500) NOT NULL,\n subtitle VARCHAR(500),\n isbn VARCHAR(13),\n isbn13 VARCHAR(17),\n publisher_id VARCHAR(25),\n published_date DATE,\n description TEXT,\n page_count INT,\n category_id VARCHAR(25),\n genres JSON,\n size BIGINT,\n url TEXT,\n cover_image TEXT,\n context VARCHAR(255),\n context_id VARCHAR(25),\n average_rating DECIMAL(3, 2),\n ratings_count INT,\n edition VARCHAR(100),\n series VARCHAR(200),\n series_volume INT,\n status_id VARCHAR(25),\n is_locked BOOLEAN DEFAULT false,\n locked_at TIMESTAMPTZ,\n is_blocked BOOLEAN DEFAULT false,\n blocked_at TIMESTAMPTZ,\n block_reason TEXT,\n is_public BOOLEAN DEFAULT true,\n language VARCHAR(10),\n created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,\n updated_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,\n deleted_at TIMESTAMPTZ,\n CONSTRAINT fk_books_publisher FOREIGN KEY (publisher_id) REFERENCES book_publishers(id) ON DELETE SET NULL,\n CONSTRAINT fk_books_category FOREIGN KEY (category_id) REFERENCES categories(id) ON DELETE SET NULL,\n CONSTRAINT fk_books_status FOREIGN KEY (status_id) REFERENCES statuses(id) ON DELETE SET NULL\n )\n `;\n\n await tx`\n CREATE TABLE IF NOT EXISTS books_authors (\n book_id VARCHAR(25) NOT NULL,\n author_id VARCHAR(25) NOT NULL,\n PRIMARY KEY (book_id, author_id),\n CONSTRAINT fk_books_authors_book FOREIGN KEY (book_id) REFERENCES books(id) ON DELETE CASCADE,\n CONSTRAINT fk_books_authors_author FOREIGN KEY (author_id) REFERENCES book_authors(id) ON DELETE CASCADE\n )\n `;\n\n await tx`\n CREATE TABLE IF NOT EXISTS books_tags (\n book_id VARCHAR(25) NOT NULL,\n tag_id VARCHAR(25) NOT NULL,\n PRIMARY KEY (book_id, tag_id),\n CONSTRAINT fk_books_tags_book FOREIGN KEY (book_id) REFERENCES books(id) ON DELETE CASCADE,\n CONSTRAINT fk_books_tags_tag FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE\n )\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_title ON books(title)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_isbn ON books(isbn)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_isbn13 ON books(isbn13)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_publisher_id ON books(publisher_id)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_category_id ON books(category_id)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_status_id ON books(status_id)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_language ON books(language)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_deleted_at ON books(deleted_at)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_context ON books(context, context_id)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_series ON books(series, series_volume)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_published_date ON books(published_date DESC)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_average_rating ON books(average_rating DESC)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_ratings_count ON books(ratings_count DESC)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_is_public ON books(is_public) WHERE deleted_at IS NULL\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_title_lower ON books(LOWER(title)) WHERE deleted_at IS NULL\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_created_at ON books(created_at DESC)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_updated_at ON books(updated_at DESC)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_popular ON books(is_public, average_rating DESC, ratings_count DESC) WHERE deleted_at IS NULL\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_active ON books(is_blocked, is_locked) WHERE deleted_at IS NULL AND is_blocked = false\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_authors_book_id ON books_authors(book_id)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_authors_author_id ON books_authors(author_id)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_tags_book_id ON books_tags(book_id)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_tags_tag_id ON books_tags(tag_id)\n `;\n }\n\n public async down(tx: TransactionSQL): Promise<void> {\n await tx`DROP TABLE IF EXISTS books_tags CASCADE`;\n await tx`DROP TABLE IF EXISTS books_authors CASCADE`;\n await tx`DROP TABLE IF EXISTS books CASCADE`;\n }\n\n public getVersion(): string {\n return \"20251225173355647\";\n }\n\n public getDependencies(): MigrationClassType[] {\n return [\n Migration20251225173353646, // Book authors table (for books_authors junction table)\n Migration20251225173354646, // Book publishers table (for publisher_id foreign key)\n Migration20251225173350644, // Statuses table (for status_id foreign key)\n Migration20251225173351645, // Tags table (for books_tags junction table)\n Migration20251225173352645, // Categories table (for category_id foreign key)\n ];\n }\n}\n",
8
+ "import { decorator, type IMigration, type MigrationClassType } from \"@ooneex/migrations\";\nimport type { TransactionSQL } from \"bun\";\nimport { Migration20251225173355647 } from \"./Migration20251225173355647\";\n\n@decorator.migration()\nexport class Migration20251225173356648 implements IMigration {\n public async up(tx: TransactionSQL): Promise<void> {\n await tx`\n CREATE TABLE IF NOT EXISTS books_stats (\n id VARCHAR(25) PRIMARY KEY,\n book_id VARCHAR(25),\n likes_count INT DEFAULT 0,\n dislikes_count INT DEFAULT 0,\n comments_count INT DEFAULT 0,\n shares_count INT DEFAULT 0,\n saves_count INT DEFAULT 0,\n downloads_count INT DEFAULT 0,\n views_count INT DEFAULT 0,\n reports_count INT DEFAULT 0,\n is_locked BOOLEAN DEFAULT false,\n locked_at TIMESTAMPTZ,\n is_blocked BOOLEAN DEFAULT false,\n blocked_at TIMESTAMPTZ,\n block_reason TEXT,\n is_public BOOLEAN DEFAULT true,\n language VARCHAR(10),\n created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,\n updated_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,\n deleted_at TIMESTAMPTZ,\n CONSTRAINT fk_books_stats_book FOREIGN KEY (book_id) REFERENCES books(id) ON DELETE CASCADE\n )\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_stats_book_id ON books_stats(book_id)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_stats_likes_count ON books_stats(likes_count DESC)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_stats_views_count ON books_stats(views_count DESC)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_stats_downloads_count ON books_stats(downloads_count DESC)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_stats_language ON books_stats(language)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_stats_deleted_at ON books_stats(deleted_at)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_stats_is_public ON books_stats(is_public) WHERE deleted_at IS NULL\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_stats_popular ON books_stats(is_public, likes_count DESC, views_count DESC) WHERE deleted_at IS NULL\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_stats_created_at ON books_stats(created_at DESC)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_stats_active ON books_stats(is_blocked, is_locked) WHERE deleted_at IS NULL AND is_blocked = false\n `;\n }\n\n public async down(tx: TransactionSQL): Promise<void> {\n await tx`DROP TABLE IF EXISTS books_stats CASCADE`;\n }\n\n public getVersion(): string {\n return \"20251225173356648\";\n }\n\n public getDependencies(): MigrationClassType[] {\n return [\n Migration20251225173355647, // Books table (for book_id foreign key)\n ];\n }\n}\n",
9
+ "import { decorator, type IMigration, type MigrationClassType } from \"@ooneex/migrations\";\nimport type { TransactionSQL } from \"bun\";\nimport { Migration20251225173355647 } from \"./Migration20251225173355647\";\n\n@decorator.migration()\nexport class Migration20251225173357649 implements IMigration {\n public async up(tx: TransactionSQL): Promise<void> {\n await tx`\n CREATE TABLE IF NOT EXISTS books_comments (\n id VARCHAR(25) PRIMARY KEY,\n book_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 TIMESTAMPTZ,\n is_blocked BOOLEAN DEFAULT false,\n blocked_at TIMESTAMPTZ,\n block_reason TEXT,\n is_public BOOLEAN DEFAULT true,\n language VARCHAR(10),\n created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,\n updated_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,\n deleted_at TIMESTAMPTZ,\n CONSTRAINT fk_books_comments_book FOREIGN KEY (book_id) REFERENCES books(id) ON DELETE CASCADE,\n CONSTRAINT fk_books_comments_parent FOREIGN KEY (parent_comment_id) REFERENCES books_comments(id) ON DELETE CASCADE\n )\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_comments_book_id ON books_comments(book_id)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_comments_commented_by_id ON books_comments(commented_by_id)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_comments_parent_comment_id ON books_comments(parent_comment_id)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_comments_language ON books_comments(language)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_comments_deleted_at ON books_comments(deleted_at)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_comments_is_public ON books_comments(is_public) WHERE deleted_at IS NULL\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_comments_created_at ON books_comments(created_at DESC)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_comments_book_created ON books_comments(book_id, created_at DESC) WHERE deleted_at IS NULL\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_comments_active ON books_comments(is_blocked, is_locked) WHERE deleted_at IS NULL AND is_blocked = false\n `;\n }\n\n public async down(tx: TransactionSQL): Promise<void> {\n await tx`DROP TABLE IF EXISTS books_comments CASCADE`;\n }\n\n public getVersion(): string {\n return \"20251225173357649\";\n }\n\n public getDependencies(): MigrationClassType[] {\n return [\n Migration20251225173355647, // Books table (for book_id foreign key)\n ];\n }\n}\n",
10
+ "import { decorator, type IMigration, type MigrationClassType } from \"@ooneex/migrations\";\nimport type { TransactionSQL } from \"bun\";\nimport { Migration20251225173355647 } from \"./Migration20251225173355647\";\n\n@decorator.migration()\nexport class Migration20251225173358650 implements IMigration {\n public async up(tx: TransactionSQL): Promise<void> {\n await tx`\n CREATE TABLE IF NOT EXISTS books_liked (\n id VARCHAR(25) PRIMARY KEY,\n book_id VARCHAR(25),\n liked_by VARCHAR(255),\n liked_by_id VARCHAR(25),\n is_locked BOOLEAN DEFAULT false,\n locked_at TIMESTAMPTZ,\n is_blocked BOOLEAN DEFAULT false,\n blocked_at TIMESTAMPTZ,\n block_reason TEXT,\n is_public BOOLEAN DEFAULT true,\n language VARCHAR(10),\n created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,\n updated_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,\n deleted_at TIMESTAMPTZ,\n CONSTRAINT fk_books_liked_book FOREIGN KEY (book_id) REFERENCES books(id) ON DELETE CASCADE\n )\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_liked_book_id ON books_liked(book_id)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_liked_liked_by_id ON books_liked(liked_by_id)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_liked_language ON books_liked(language)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_liked_deleted_at ON books_liked(deleted_at)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_liked_is_public ON books_liked(is_public) WHERE deleted_at IS NULL\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_liked_created_at ON books_liked(created_at DESC)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_liked_book_user ON books_liked(book_id, liked_by_id) WHERE deleted_at IS NULL\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_liked_active ON books_liked(is_blocked, is_locked) WHERE deleted_at IS NULL AND is_blocked = false\n `;\n }\n\n public async down(tx: TransactionSQL): Promise<void> {\n await tx`DROP TABLE IF EXISTS books_liked CASCADE`;\n }\n\n public getVersion(): string {\n return \"20251225173358650\";\n }\n\n public getDependencies(): MigrationClassType[] {\n return [\n Migration20251225173355647, // Books table (for book_id foreign key)\n ];\n }\n}\n",
11
+ "import { decorator, type IMigration, type MigrationClassType } from \"@ooneex/migrations\";\nimport type { TransactionSQL } from \"bun\";\nimport { Migration20251225173355647 } from \"./Migration20251225173355647\";\n\n@decorator.migration()\nexport class Migration20251225173359651 implements IMigration {\n public async up(tx: TransactionSQL): Promise<void> {\n await tx`\n CREATE TABLE IF NOT EXISTS books_disliked (\n id VARCHAR(25) PRIMARY KEY,\n book_id VARCHAR(25),\n disliked_by VARCHAR(255),\n disliked_by_id VARCHAR(25),\n is_locked BOOLEAN DEFAULT false,\n locked_at TIMESTAMPTZ,\n is_blocked BOOLEAN DEFAULT false,\n blocked_at TIMESTAMPTZ,\n block_reason TEXT,\n is_public BOOLEAN DEFAULT true,\n language VARCHAR(10),\n created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,\n updated_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,\n deleted_at TIMESTAMPTZ,\n CONSTRAINT fk_books_disliked_book FOREIGN KEY (book_id) REFERENCES books(id) ON DELETE CASCADE\n )\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_disliked_book_id ON books_disliked(book_id)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_disliked_disliked_by_id ON books_disliked(disliked_by_id)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_disliked_language ON books_disliked(language)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_disliked_deleted_at ON books_disliked(deleted_at)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_disliked_is_public ON books_disliked(is_public) WHERE deleted_at IS NULL\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_disliked_created_at ON books_disliked(created_at DESC)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_disliked_book_user ON books_disliked(book_id, disliked_by_id) WHERE deleted_at IS NULL\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_disliked_active ON books_disliked(is_blocked, is_locked) WHERE deleted_at IS NULL AND is_blocked = false\n `;\n }\n\n public async down(tx: TransactionSQL): Promise<void> {\n await tx`DROP TABLE IF EXISTS books_disliked CASCADE`;\n }\n\n public getVersion(): string {\n return \"20251225173359651\";\n }\n\n public getDependencies(): MigrationClassType[] {\n return [\n Migration20251225173355647, // Books table (for book_id foreign key)\n ];\n }\n}\n",
12
+ "import { decorator, type IMigration, type MigrationClassType } from \"@ooneex/migrations\";\nimport type { TransactionSQL } from \"bun\";\nimport { Migration20251225173355647 } from \"./Migration20251225173355647\";\n\n@decorator.migration()\nexport class Migration20251225173400652 implements IMigration {\n public async up(tx: TransactionSQL): Promise<void> {\n await tx`\n CREATE TABLE IF NOT EXISTS books_viewed (\n id VARCHAR(25) PRIMARY KEY,\n book_id VARCHAR(25),\n viewed_by VARCHAR(255),\n viewed_by_id VARCHAR(25),\n is_locked BOOLEAN DEFAULT false,\n locked_at TIMESTAMPTZ,\n is_blocked BOOLEAN DEFAULT false,\n blocked_at TIMESTAMPTZ,\n block_reason TEXT,\n is_public BOOLEAN DEFAULT true,\n language VARCHAR(10),\n created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,\n updated_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,\n deleted_at TIMESTAMPTZ,\n CONSTRAINT fk_books_viewed_book FOREIGN KEY (book_id) REFERENCES books(id) ON DELETE CASCADE\n )\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_viewed_book_id ON books_viewed(book_id)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_viewed_viewed_by_id ON books_viewed(viewed_by_id)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_viewed_language ON books_viewed(language)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_viewed_deleted_at ON books_viewed(deleted_at)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_viewed_is_public ON books_viewed(is_public) WHERE deleted_at IS NULL\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_viewed_created_at ON books_viewed(created_at DESC)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_viewed_book_user ON books_viewed(book_id, viewed_by_id) WHERE deleted_at IS NULL\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_viewed_active ON books_viewed(is_blocked, is_locked) WHERE deleted_at IS NULL AND is_blocked = false\n `;\n }\n\n public async down(tx: TransactionSQL): Promise<void> {\n await tx`DROP TABLE IF EXISTS books_viewed CASCADE`;\n }\n\n public getVersion(): string {\n return \"20251225173400652\";\n }\n\n public getDependencies(): MigrationClassType[] {\n return [\n Migration20251225173355647, // Books table (for book_id foreign key)\n ];\n }\n}\n",
13
+ "import { decorator, type IMigration, type MigrationClassType } from \"@ooneex/migrations\";\nimport type { TransactionSQL } from \"bun\";\nimport { Migration20251225173355647 } from \"./Migration20251225173355647\";\n\n@decorator.migration()\nexport class Migration20251225173401654 implements IMigration {\n public async up(tx: TransactionSQL): Promise<void> {\n await tx`\n CREATE TABLE IF NOT EXISTS books_saved (\n id VARCHAR(25) PRIMARY KEY,\n book_id VARCHAR(25),\n saved_by VARCHAR(255),\n saved_by_id VARCHAR(25),\n is_locked BOOLEAN DEFAULT false,\n locked_at TIMESTAMPTZ,\n is_blocked BOOLEAN DEFAULT false,\n blocked_at TIMESTAMPTZ,\n block_reason TEXT,\n is_public BOOLEAN DEFAULT true,\n language VARCHAR(10),\n created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,\n updated_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,\n deleted_at TIMESTAMPTZ,\n CONSTRAINT fk_books_saved_book FOREIGN KEY (book_id) REFERENCES books(id) ON DELETE CASCADE\n )\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_saved_book_id ON books_saved(book_id)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_saved_saved_by_id ON books_saved(saved_by_id)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_saved_language ON books_saved(language)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_saved_deleted_at ON books_saved(deleted_at)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_saved_is_public ON books_saved(is_public) WHERE deleted_at IS NULL\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_saved_created_at ON books_saved(created_at DESC)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_saved_book_user ON books_saved(book_id, saved_by_id) WHERE deleted_at IS NULL\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_saved_active ON books_saved(is_blocked, is_locked) WHERE deleted_at IS NULL AND is_blocked = false\n `;\n }\n\n public async down(tx: TransactionSQL): Promise<void> {\n await tx`DROP TABLE IF EXISTS books_saved CASCADE`;\n }\n\n public getVersion(): string {\n return \"20251225173401654\";\n }\n\n public getDependencies(): MigrationClassType[] {\n return [\n Migration20251225173355647, // Books table (for book_id foreign key)\n ];\n }\n}\n",
14
+ "import { decorator, type IMigration, type MigrationClassType } from \"@ooneex/migrations\";\nimport type { TransactionSQL } from \"bun\";\nimport { Migration20251225173355647 } from \"./Migration20251225173355647\";\n\n@decorator.migration()\nexport class Migration20251225173402655 implements IMigration {\n public async up(tx: TransactionSQL): Promise<void> {\n await tx`\n CREATE TABLE IF NOT EXISTS books_downloaded (\n id VARCHAR(25) PRIMARY KEY,\n book_id VARCHAR(25),\n downloaded_by VARCHAR(255),\n downloaded_by_id VARCHAR(25),\n is_locked BOOLEAN DEFAULT false,\n locked_at TIMESTAMPTZ,\n is_blocked BOOLEAN DEFAULT false,\n blocked_at TIMESTAMPTZ,\n block_reason TEXT,\n is_public BOOLEAN DEFAULT true,\n language VARCHAR(10),\n created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,\n updated_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,\n deleted_at TIMESTAMPTZ,\n CONSTRAINT fk_books_downloaded_book FOREIGN KEY (book_id) REFERENCES books(id) ON DELETE CASCADE\n )\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_downloaded_book_id ON books_downloaded(book_id)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_downloaded_downloaded_by_id ON books_downloaded(downloaded_by_id)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_downloaded_language ON books_downloaded(language)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_downloaded_deleted_at ON books_downloaded(deleted_at)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_downloaded_is_public ON books_downloaded(is_public) WHERE deleted_at IS NULL\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_downloaded_created_at ON books_downloaded(created_at DESC)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_downloaded_book_user ON books_downloaded(book_id, downloaded_by_id) WHERE deleted_at IS NULL\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_downloaded_active ON books_downloaded(is_blocked, is_locked) WHERE deleted_at IS NULL AND is_blocked = false\n `;\n }\n\n public async down(tx: TransactionSQL): Promise<void> {\n await tx`DROP TABLE IF EXISTS books_downloaded CASCADE`;\n }\n\n public getVersion(): string {\n return \"20251225173402655\";\n }\n\n public getDependencies(): MigrationClassType[] {\n return [\n Migration20251225173355647, // Books table (for book_id foreign key)\n ];\n }\n}\n",
15
+ "import { decorator, type IMigration, type MigrationClassType } from \"@ooneex/migrations\";\nimport type { TransactionSQL } from \"bun\";\nimport { Migration20251225173355647 } from \"./Migration20251225173355647\";\n\n@decorator.migration()\nexport class Migration20251225173403656 implements IMigration {\n public async up(tx: TransactionSQL): Promise<void> {\n await tx`\n CREATE TABLE IF NOT EXISTS books_shared (\n id VARCHAR(25) PRIMARY KEY,\n book_id VARCHAR(25),\n shared_with VARCHAR(255),\n shared_by_id VARCHAR(25),\n permission VARCHAR(50),\n expires_at TIMESTAMPTZ,\n is_locked BOOLEAN DEFAULT false,\n locked_at TIMESTAMPTZ,\n is_blocked BOOLEAN DEFAULT false,\n blocked_at TIMESTAMPTZ,\n block_reason TEXT,\n is_public BOOLEAN DEFAULT true,\n language VARCHAR(10),\n created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,\n updated_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,\n deleted_at TIMESTAMPTZ,\n CONSTRAINT fk_books_shared_book FOREIGN KEY (book_id) REFERENCES books(id) ON DELETE CASCADE\n )\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_shared_book_id ON books_shared(book_id)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_shared_shared_by_id ON books_shared(shared_by_id)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_shared_permission ON books_shared(permission)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_shared_expires_at ON books_shared(expires_at)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_shared_language ON books_shared(language)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_shared_deleted_at ON books_shared(deleted_at)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_shared_is_public ON books_shared(is_public) WHERE deleted_at IS NULL\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_shared_created_at ON books_shared(created_at DESC)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_shared_book_user ON books_shared(book_id, shared_by_id) WHERE deleted_at IS NULL\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_shared_active ON books_shared(is_blocked, is_locked) WHERE deleted_at IS NULL AND is_blocked = false\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_shared_active_not_expired ON books_shared(expires_at) WHERE deleted_at IS NULL AND expires_at > NOW()\n `;\n }\n\n public async down(tx: TransactionSQL): Promise<void> {\n await tx`DROP TABLE IF EXISTS books_shared CASCADE`;\n }\n\n public getVersion(): string {\n return \"20251225173403656\";\n }\n\n public getDependencies(): MigrationClassType[] {\n return [\n Migration20251225173355647, // Books table (for book_id foreign key)\n ];\n }\n}\n",
16
+ "import { decorator, type IMigration, type MigrationClassType } from \"@ooneex/migrations\";\nimport type { TransactionSQL } from \"bun\";\nimport { Migration20251225173350644 } from \"../common/Migration20251225173350644\";\nimport { Migration20251225173355647 } from \"./Migration20251225173355647\";\n\n@decorator.migration()\nexport class Migration20251225173404658 implements IMigration {\n public async up(tx: TransactionSQL): Promise<void> {\n await tx`\n CREATE TABLE IF NOT EXISTS books_reports (\n id VARCHAR(25) PRIMARY KEY,\n book_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 TIMESTAMPTZ,\n is_blocked BOOLEAN DEFAULT false,\n blocked_at TIMESTAMPTZ,\n block_reason TEXT,\n is_public BOOLEAN DEFAULT true,\n language VARCHAR(10),\n created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,\n updated_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,\n deleted_at TIMESTAMPTZ,\n CONSTRAINT fk_books_reports_book FOREIGN KEY (book_id) REFERENCES books(id) ON DELETE CASCADE,\n CONSTRAINT fk_books_reports_status FOREIGN KEY (status_id) REFERENCES statuses(id) ON DELETE SET NULL\n )\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_reports_book_id ON books_reports(book_id)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_reports_reported_by_id ON books_reports(reported_by_id)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_reports_status_id ON books_reports(status_id)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_reports_reason ON books_reports(reason)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_reports_language ON books_reports(language)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_reports_deleted_at ON books_reports(deleted_at)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_reports_is_public ON books_reports(is_public) WHERE deleted_at IS NULL\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_reports_created_at ON books_reports(created_at DESC)\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_reports_book_status ON books_reports(book_id, status_id) WHERE deleted_at IS NULL\n `;\n\n await tx`\n CREATE INDEX IF NOT EXISTS idx_books_reports_active ON books_reports(is_blocked, is_locked) WHERE deleted_at IS NULL AND is_blocked = false\n `;\n }\n\n public async down(tx: TransactionSQL): Promise<void> {\n await tx`DROP TABLE IF EXISTS books_reports CASCADE`;\n }\n\n public getVersion(): string {\n return \"20251225173404658\";\n }\n\n public getDependencies(): MigrationClassType[] {\n return [\n Migration20251225173355647, // Books table (for book_id foreign key)\n Migration20251225173350644, // Statuses table (for status_id foreign key)\n ];\n }\n}\n"
17
+ ],
18
+ "mappings": "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",
19
+ "debugId": "F6961C2DC88D889D64756E2164756E21",
20
+ "names": []
21
+ }