create-nextjs-cms 0.8.7 → 0.8.8

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 (189) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +71 -71
  3. package/dist/helpers/utils.js +16 -16
  4. package/dist/lib/section-creators.js +166 -166
  5. package/package.json +3 -3
  6. package/templates/default/.eslintrc.json +5 -5
  7. package/templates/default/.prettierignore +7 -7
  8. package/templates/default/.prettierrc.json +27 -27
  9. package/templates/default/CHANGELOG.md +140 -140
  10. package/templates/default/_gitignore +57 -57
  11. package/templates/default/app/(auth)/auth/login/LoginPage.tsx +192 -192
  12. package/templates/default/app/(auth)/auth/login/page.tsx +11 -11
  13. package/templates/default/app/(auth)/auth-locale-provider.tsx +34 -34
  14. package/templates/default/app/(auth)/layout.tsx +81 -81
  15. package/templates/default/app/(rootLayout)/(plugins)/[...slug]/page.tsx +40 -40
  16. package/templates/default/app/(rootLayout)/(plugins)/[...slug]/plugin-server-registry.ts +16 -16
  17. package/templates/default/app/(rootLayout)/admins/page.tsx +10 -10
  18. package/templates/default/app/(rootLayout)/browse/[section]/[page]/page.tsx +22 -22
  19. package/templates/default/app/(rootLayout)/categorized/[section]/page.tsx +15 -15
  20. package/templates/default/app/(rootLayout)/dashboard/page.tsx +63 -63
  21. package/templates/default/app/(rootLayout)/dashboard-new/page.tsx +7 -7
  22. package/templates/default/app/(rootLayout)/edit/[section]/[itemId]/page.tsx +17 -17
  23. package/templates/default/app/(rootLayout)/layout.tsx +81 -81
  24. package/templates/default/app/(rootLayout)/loading.tsx +10 -10
  25. package/templates/default/app/(rootLayout)/log/page.tsx +7 -7
  26. package/templates/default/app/(rootLayout)/new/[section]/page.tsx +15 -15
  27. package/templates/default/app/(rootLayout)/section/[section]/page.tsx +16 -16
  28. package/templates/default/app/(rootLayout)/settings/page.tsx +13 -13
  29. package/templates/default/app/_trpc/client.ts +3 -3
  30. package/templates/default/app/api/auth/csrf/route.ts +25 -25
  31. package/templates/default/app/api/auth/refresh/route.ts +10 -10
  32. package/templates/default/app/api/auth/route.ts +49 -49
  33. package/templates/default/app/api/auth/session/route.ts +20 -20
  34. package/templates/default/app/api/document/route.ts +165 -165
  35. package/templates/default/app/api/editor/photo/route.ts +49 -49
  36. package/templates/default/app/api/photo/route.ts +27 -27
  37. package/templates/default/app/api/submit/section/item/[slug]/route.ts +66 -66
  38. package/templates/default/app/api/submit/section/item/route.ts +56 -56
  39. package/templates/default/app/api/submit/section/simple/route.ts +57 -57
  40. package/templates/default/app/api/trpc/[trpc]/route.ts +33 -33
  41. package/templates/default/app/api/video/route.ts +174 -174
  42. package/templates/default/app/globals.css +219 -219
  43. package/templates/default/app/providers.tsx +152 -152
  44. package/templates/default/cms.config.ts +57 -60
  45. package/templates/default/components/AdminCard.tsx +166 -166
  46. package/templates/default/components/AdminEditPage.tsx +124 -124
  47. package/templates/default/components/AdminPrivilegeCard.tsx +185 -185
  48. package/templates/default/components/AdminsPage.tsx +43 -43
  49. package/templates/default/components/AnalyticsPage.tsx +128 -128
  50. package/templates/default/components/BarChartBox.tsx +42 -42
  51. package/templates/default/components/BrowsePage.tsx +106 -106
  52. package/templates/default/components/CategorizedSectionPage.tsx +31 -31
  53. package/templates/default/components/CategoryDeleteConfirmPage.tsx +130 -130
  54. package/templates/default/components/CategorySectionSelectInput.tsx +140 -140
  55. package/templates/default/components/ConditionalFields.tsx +49 -49
  56. package/templates/default/components/ContainerBox.tsx +24 -24
  57. package/templates/default/components/DashboardNewPage.tsx +253 -253
  58. package/templates/default/components/DashboardPage.tsx +188 -188
  59. package/templates/default/components/DashboardPageAlt.tsx +45 -45
  60. package/templates/default/components/DefaultNavItems.tsx +3 -3
  61. package/templates/default/components/Dropzone.tsx +154 -154
  62. package/templates/default/components/EmailCard.tsx +138 -138
  63. package/templates/default/components/EmailPasswordForm.tsx +85 -85
  64. package/templates/default/components/EmailQuotaForm.tsx +73 -73
  65. package/templates/default/components/EmailsPage.tsx +49 -49
  66. package/templates/default/components/ErrorComponent.tsx +16 -16
  67. package/templates/default/components/GalleryPhoto.tsx +93 -93
  68. package/templates/default/components/InfoCard.tsx +93 -93
  69. package/templates/default/components/ItemEditPage.tsx +214 -214
  70. package/templates/default/components/Layout.tsx +84 -84
  71. package/templates/default/components/LoadingSpinners.tsx +67 -67
  72. package/templates/default/components/LogPage.tsx +107 -107
  73. package/templates/default/components/Modal.tsx +166 -166
  74. package/templates/default/components/Navbar.tsx +258 -258
  75. package/templates/default/components/NewAdminForm.tsx +173 -173
  76. package/templates/default/components/NewEmailForm.tsx +132 -132
  77. package/templates/default/components/NewPage.tsx +205 -205
  78. package/templates/default/components/NewVariantComponent.tsx +229 -229
  79. package/templates/default/components/PhotoGallery.tsx +35 -35
  80. package/templates/default/components/PieChartBox.tsx +101 -101
  81. package/templates/default/components/ProgressBar.tsx +48 -48
  82. package/templates/default/components/ProtectedDocument.tsx +44 -44
  83. package/templates/default/components/ProtectedImage.tsx +143 -143
  84. package/templates/default/components/ProtectedVideo.tsx +76 -76
  85. package/templates/default/components/SectionIcon.tsx +8 -8
  86. package/templates/default/components/SectionItemCard.tsx +144 -144
  87. package/templates/default/components/SectionItemStatusBadge.tsx +17 -17
  88. package/templates/default/components/SectionPage.tsx +125 -125
  89. package/templates/default/components/SelectBox.tsx +98 -98
  90. package/templates/default/components/SelectInputButtons.tsx +125 -125
  91. package/templates/default/components/SettingsPage.tsx +232 -232
  92. package/templates/default/components/Sidebar.tsx +204 -204
  93. package/templates/default/components/SidebarDropdownItem.tsx +83 -83
  94. package/templates/default/components/SidebarItem.tsx +24 -24
  95. package/templates/default/components/ThemeProvider.tsx +8 -8
  96. package/templates/default/components/TooltipComponent.tsx +27 -27
  97. package/templates/default/components/VariantCard.tsx +124 -124
  98. package/templates/default/components/VariantEditPage.tsx +230 -230
  99. package/templates/default/components/analytics/BounceRate.tsx +70 -70
  100. package/templates/default/components/analytics/LivePageViews.tsx +55 -55
  101. package/templates/default/components/analytics/LiveUsersCount.tsx +33 -33
  102. package/templates/default/components/analytics/MonthlyPageViews.tsx +42 -42
  103. package/templates/default/components/analytics/TopCountries.tsx +52 -52
  104. package/templates/default/components/analytics/TopDevices.tsx +46 -46
  105. package/templates/default/components/analytics/TopMediums.tsx +58 -58
  106. package/templates/default/components/analytics/TopSources.tsx +45 -45
  107. package/templates/default/components/analytics/TotalPageViews.tsx +41 -41
  108. package/templates/default/components/analytics/TotalSessions.tsx +41 -41
  109. package/templates/default/components/analytics/TotalUniqueUsers.tsx +41 -41
  110. package/templates/default/components/custom/RightHomeRoomVariantCard.tsx +138 -138
  111. package/templates/default/components/dndKit/Draggable.tsx +21 -21
  112. package/templates/default/components/dndKit/Droppable.tsx +20 -20
  113. package/templates/default/components/dndKit/SortableItem.tsx +18 -18
  114. package/templates/default/components/form/DateRangeFormInput.tsx +57 -57
  115. package/templates/default/components/form/Form.tsx +317 -317
  116. package/templates/default/components/form/FormInputElement.tsx +70 -70
  117. package/templates/default/components/form/FormInputs.tsx +118 -118
  118. package/templates/default/components/form/helpers/_section-hot-reload.js +1 -1
  119. package/templates/default/components/form/helpers/util.ts +17 -17
  120. package/templates/default/components/form/inputs/CheckboxFormInput.tsx +46 -46
  121. package/templates/default/components/form/inputs/ColorFormInput.tsx +44 -44
  122. package/templates/default/components/form/inputs/DateFormInput.tsx +156 -156
  123. package/templates/default/components/form/inputs/DocumentFormInput.tsx +222 -222
  124. package/templates/default/components/form/inputs/MapFormInput.tsx +140 -140
  125. package/templates/default/components/form/inputs/MultipleSelectFormInput.tsx +85 -85
  126. package/templates/default/components/form/inputs/NumberFormInput.tsx +42 -42
  127. package/templates/default/components/form/inputs/PasswordFormInput.tsx +47 -47
  128. package/templates/default/components/form/inputs/PhotoFormInput.tsx +219 -219
  129. package/templates/default/components/form/inputs/RichTextFormInput.tsx +135 -135
  130. package/templates/default/components/form/inputs/SelectFormInput.tsx +175 -175
  131. package/templates/default/components/form/inputs/SlugFormInput.tsx +131 -131
  132. package/templates/default/components/form/inputs/TagsFormInput.tsx +260 -260
  133. package/templates/default/components/form/inputs/TextFormInput.tsx +48 -48
  134. package/templates/default/components/form/inputs/TextareaFormInput.tsx +47 -47
  135. package/templates/default/components/form/inputs/VideoFormInput.tsx +118 -118
  136. package/templates/default/components/locale-dropdown.tsx +74 -74
  137. package/templates/default/components/locale-picker.tsx +85 -85
  138. package/templates/default/components/login-locale-dropdown.tsx +46 -46
  139. package/templates/default/components/multi-select.tsx +1146 -1146
  140. package/templates/default/components/pagination/Pagination.tsx +36 -36
  141. package/templates/default/components/pagination/PaginationButtons.tsx +147 -147
  142. package/templates/default/components/theme-toggle.tsx +39 -39
  143. package/templates/default/components/ui/accordion.tsx +53 -53
  144. package/templates/default/components/ui/alert-dialog.tsx +157 -157
  145. package/templates/default/components/ui/alert.tsx +46 -46
  146. package/templates/default/components/ui/badge.tsx +38 -38
  147. package/templates/default/components/ui/button.tsx +62 -62
  148. package/templates/default/components/ui/calendar.tsx +166 -166
  149. package/templates/default/components/ui/card.tsx +43 -43
  150. package/templates/default/components/ui/checkbox.tsx +29 -29
  151. package/templates/default/components/ui/command.tsx +137 -137
  152. package/templates/default/components/ui/custom-alert-dialog.tsx +113 -113
  153. package/templates/default/components/ui/custom-dialog.tsx +123 -123
  154. package/templates/default/components/ui/dialog.tsx +123 -123
  155. package/templates/default/components/ui/direction.tsx +22 -22
  156. package/templates/default/components/ui/dropdown-menu.tsx +182 -182
  157. package/templates/default/components/ui/input-group.tsx +54 -54
  158. package/templates/default/components/ui/input.tsx +22 -22
  159. package/templates/default/components/ui/label.tsx +19 -19
  160. package/templates/default/components/ui/popover.tsx +42 -42
  161. package/templates/default/components/ui/progress.tsx +31 -31
  162. package/templates/default/components/ui/scroll-area.tsx +42 -42
  163. package/templates/default/components/ui/select.tsx +165 -165
  164. package/templates/default/components/ui/separator.tsx +28 -28
  165. package/templates/default/components/ui/sheet.tsx +103 -103
  166. package/templates/default/components/ui/spinner.tsx +16 -16
  167. package/templates/default/components/ui/switch.tsx +29 -29
  168. package/templates/default/components/ui/table.tsx +83 -83
  169. package/templates/default/components/ui/tabs.tsx +55 -55
  170. package/templates/default/components/ui/toast.tsx +113 -113
  171. package/templates/default/components/ui/toaster.tsx +35 -35
  172. package/templates/default/components/ui/tooltip.tsx +30 -30
  173. package/templates/default/components/ui/use-toast.ts +188 -188
  174. package/templates/default/components.json +21 -21
  175. package/templates/default/context/ModalProvider.tsx +53 -53
  176. package/templates/default/drizzle.config.ts +4 -4
  177. package/templates/default/dynamic-schemas/schema.ts +383 -383
  178. package/templates/default/env/env.js +130 -130
  179. package/templates/default/envConfig.ts +4 -4
  180. package/templates/default/hooks/useModal.ts +8 -8
  181. package/templates/default/lib/apiHelpers.ts +92 -92
  182. package/templates/default/lib/postinstall.js +14 -14
  183. package/templates/default/lib/utils.ts +6 -6
  184. package/templates/default/next-env.d.ts +6 -6
  185. package/templates/default/next.config.ts +23 -23
  186. package/templates/default/package.json +1 -1
  187. package/templates/default/postcss.config.mjs +6 -6
  188. package/templates/default/proxy.ts +32 -32
  189. package/templates/default/tsconfig.json +48 -48
@@ -1,383 +1,383 @@
1
- import {mysqlTable,int,longtext,mysqlEnum,varchar,boolean,double,timestamp} from 'drizzle-orm/mysql-core'
2
-
3
- export const AppInfoTable = mysqlTable('app_info', {
4
- id: int('id').autoincrement().notNull().primaryKey(),
5
- aboutEn: longtext('about_en').notNull(),
6
- aboutAr: longtext('about_ar').notNull(),
7
- aboutTr: longtext('about_tr').notNull(),
8
- privacyEn: longtext('privacy_en').notNull(),
9
- privacyAr: longtext('privacy_ar').notNull(),
10
- privacyTr: longtext('privacy_tr').notNull()
11
- });
12
-
13
-
14
- export const UserReportsTable = mysqlTable('user_reports', {
15
- id: int('id').autoincrement().notNull().primaryKey(),
16
- contentType: mysqlEnum('content_type', ['ad', 'user']).notNull(),
17
- reportType: mysqlEnum('report_type', ['explicit_content', 'wrong_information', 'no_longer_available', 'user_not_responsive', 'other']).notNull(),
18
- contentId: int('content_id').notNull(),
19
- catId: int('cat_id').notNull(),
20
- userId: int('user_id'),
21
- appId: varchar('app_id', { length: 36 }).notNull(),
22
- title: varchar('title', { length: 255 }).notNull(),
23
- slug: varchar('slug', { length: 255 }).notNull()
24
- });
25
-
26
-
27
- export const FeaturedSliderTable = mysqlTable('featured_slider', {
28
- id: int('id').autoincrement().notNull().primaryKey(),
29
- image: varchar('image', { length: 255 }).notNull(),
30
- titleEn: varchar('title_en', { length: 255 }).notNull(),
31
- titleAr: varchar('title_ar', { length: 255 }).notNull(),
32
- titleTr: varchar('title_tr', { length: 255 }).notNull(),
33
- descEn: longtext('desc_en').notNull(),
34
- descAr: longtext('desc_ar').notNull(),
35
- descTr: longtext('desc_tr').notNull()
36
- });
37
-
38
-
39
- export const MenuSettingsTable = mysqlTable('menu_settings', {
40
- id: int('id').autoincrement().notNull().primaryKey(),
41
- taxRate: varchar('tax_rate', { length: 255 }),
42
- hideSlider: boolean('hide_slider')
43
- });
44
-
45
-
46
- export const ServicesTable = mysqlTable('services', {
47
- id: int('id').autoincrement().notNull().primaryKey(),
48
- title: varchar('title', { length: 255 }).notNull(),
49
- catId: int('cat_id').notNull(),
50
- coverphoto: varchar('coverphoto', { length: 255 }).notNull(),
51
- price: int('price'),
52
- currency: mysqlEnum('currency', ['USD', 'TRY', 'SYP']),
53
- coverphotoPlaceholder: varchar('coverphoto_placeholder', { length: 255 }),
54
- desc: longtext('desc'),
55
- latitude: double('latitude'),
56
- longitude: double('longitude'),
57
- viewCount: int('view_count'),
58
- status: mysqlEnum('status', ['pending_creation', 'active', 'pending_review', 'rejected', 'expired']),
59
- govId: int('gov_id').notNull(),
60
- districtId: int('district_id').notNull(),
61
- subDistrictId: int('sub_district_id'),
62
- townId: int('town_id')
63
- });
64
-
65
-
66
- export const RealestateTable = mysqlTable('realestate', {
67
- id: int('id').autoincrement().notNull().primaryKey(),
68
- catId: int('cat_id').notNull(),
69
- title: varchar('title', { length: 255 }).notNull(),
70
- price: int('price').notNull(),
71
- currency: mysqlEnum('currency', ['USD', 'TRY', 'SYP']).notNull(),
72
- spaceGross: int('space_gross').notNull(),
73
- spaceNet: int('space_net').notNull(),
74
- latitude: double('latitude').notNull(),
75
- longitude: double('longitude').notNull(),
76
- roomCount: varchar('room_count', { length: 255 }),
77
- buildingAge: varchar('building_age', { length: 255 }),
78
- floorCount: varchar('floor_count', { length: 255 }),
79
- bathroomCount: varchar('bathroom_count', { length: 255 }),
80
- floorLocation: varchar('floor_location', { length: 255 }),
81
- heatingType: varchar('heating_type', { length: 255 }),
82
- kitchenType: varchar('kitchen_type', { length: 255 }),
83
- balcony: boolean('balcony'),
84
- lift: boolean('lift'),
85
- parkingType: varchar('parking_type', { length: 255 }),
86
- furnished: boolean('furnished'),
87
- belongsToSite: boolean('belongs_to_site'),
88
- siteName: varchar('site_name', { length: 255 }),
89
- installments: boolean('installments'),
90
- exchangeable: boolean('exchangeable'),
91
- fromWhom: varchar('from_whom', { length: 255 }),
92
- buildingMembershipFees: int('building_membership_fees'),
93
- deposit: int('deposit'),
94
- coverphoto: varchar('coverphoto', { length: 255 }).notNull(),
95
- coverphotoPlaceholder: varchar('coverphoto_placeholder', { length: 255 }),
96
- desc: longtext('desc'),
97
- viewCount: int('view_count'),
98
- status: mysqlEnum('status', ['pending_creation', 'active', 'pending_review', 'rejected', 'expired']),
99
- govId: int('gov_id').notNull(),
100
- districtId: int('district_id').notNull(),
101
- subDistrictId: int('sub_district_id'),
102
- townId: int('town_id')
103
- });
104
-
105
-
106
- export const HomepageSliderTable = mysqlTable('homepage_slider', {
107
- id: int('id').autoincrement().notNull().primaryKey(),
108
- titleEn: varchar('title_en', { length: 255 }).notNull(),
109
- titleAr: varchar('title_ar', { length: 255 }).notNull(),
110
- titleTr: varchar('title_tr', { length: 255 }).notNull(),
111
- subtitleEn: varchar('subtitle_en', { length: 255 }).notNull(),
112
- subtitleAr: varchar('subtitle_ar', { length: 255 }).notNull(),
113
- subtitleTr: varchar('subtitle_tr', { length: 255 }).notNull(),
114
- photo: varchar('photo', { length: 255 }).notNull(),
115
- buttonUrl: varchar('button_url', { length: 255 }),
116
- buttonTextEn: varchar('button_text_en', { length: 255 }),
117
- buttonTextAr: varchar('button_text_ar', { length: 255 }),
118
- buttonTextTr: varchar('button_text_tr', { length: 255 }),
119
- buttonUrlTarget: mysqlEnum('button_url_target', ['_blank', '_self'])
120
- });
121
-
122
-
123
- export const ContestSubscribersTable = mysqlTable('contest_subscribers', {
124
- id: int('id').autoincrement().notNull().primaryKey(),
125
- userId: int('user_id').notNull(),
126
- contestId: varchar('contest_id', { length: 255 }).notNull()
127
- });
128
-
129
-
130
- export const ContestsTable = mysqlTable('contests', {
131
- id: int('id').autoincrement().notNull().primaryKey(),
132
- date: timestamp('date').notNull(),
133
- prize: varchar('prize', { length: 255 }).notNull(),
134
- winnerId: int('winner_id'),
135
- tags: varchar('tags', { length: 255 })
136
- });
137
-
138
-
139
- export const NotificationsTable = mysqlTable('notifications', {
140
- id: int('id').autoincrement().notNull().primaryKey(),
141
- type: mysqlEnum('type', ['ad_price_updated', 'ad_updated', 'ad_activated', 'ad_pending_review', 'ad_expired', 'ad_rejected', 'ad_viewed', 'ad_favorited', 'ad_shared', 'ad_reported', 'ad_deleted', 'ad_created', 'contest_winner', 'contest_reminder', 'contest_created', 'custom']).notNull(),
142
- contentId: int('content_id'),
143
- contentCatId: int('content_cat_id'),
144
- userId: int('user_id'),
145
- message: varchar('message', { length: 255 })
146
- });
147
-
148
-
149
- export const ModerationTable = mysqlTable('moderation', {
150
- id: int('id').autoincrement().notNull().primaryKey(),
151
- contentType: mysqlEnum('content_type', ['ad', 'user']).notNull(),
152
- contentId: int('content_id').notNull(),
153
- catId: int('cat_id'),
154
- userId: int('user_id').notNull(),
155
- flagged: int('flagged').notNull(),
156
- result: varchar('result', { length: 255 }).notNull()
157
- });
158
-
159
-
160
- export const JobsTable = mysqlTable('jobs', {
161
- id: int('id').autoincrement().notNull().primaryKey(),
162
- title: varchar('title', { length: 255 }).notNull(),
163
- catId: int('cat_id').notNull(),
164
- salary: int('salary'),
165
- currency: mysqlEnum('currency', ['USD', 'TRY', 'SYP']).notNull(),
166
- workMethod: varchar('work_method', { length: 255 }).notNull(),
167
- minimumEducation: varchar('minimum_education', { length: 255 }).notNull(),
168
- experienceLevel: varchar('experience_level', { length: 255 }).notNull(),
169
- remote: boolean('remote'),
170
- coverphoto: varchar('coverphoto', { length: 255 }).notNull(),
171
- coverphotoPlaceholder: varchar('coverphoto_placeholder', { length: 255 }),
172
- desc: longtext('desc'),
173
- latitude: double('latitude'),
174
- longitude: double('longitude'),
175
- viewCount: int('view_count'),
176
- status: mysqlEnum('status', ['pending_creation', 'active', 'pending_review', 'rejected', 'expired']),
177
- govId: int('gov_id').notNull(),
178
- districtId: int('district_id').notNull(),
179
- subDistrictId: int('sub_district_id'),
180
- townId: int('town_id')
181
- });
182
-
183
-
184
- export const FurnitureTable = mysqlTable('furniture', {
185
- id: int('id').autoincrement().notNull().primaryKey(),
186
- title: varchar('title', { length: 255 }).notNull(),
187
- catId: int('cat_id').notNull(),
188
- condition: varchar('condition', { length: 255 }).notNull(),
189
- price: int('price').notNull(),
190
- currency: mysqlEnum('currency', ['USD', 'TRY', 'SYP']).notNull(),
191
- exchangeable: boolean('exchangeable'),
192
- fromWhom: varchar('from_whom', { length: 255 }).notNull(),
193
- coverphoto: varchar('coverphoto', { length: 255 }).notNull(),
194
- coverphotoPlaceholder: varchar('coverphoto_placeholder', { length: 255 }),
195
- desc: longtext('desc'),
196
- latitude: double('latitude'),
197
- longitude: double('longitude'),
198
- viewCount: int('view_count'),
199
- status: mysqlEnum('status', ['pending_creation', 'active', 'pending_review', 'rejected', 'expired']),
200
- govId: int('gov_id').notNull(),
201
- districtId: int('district_id').notNull(),
202
- subDistrictId: int('sub_district_id'),
203
- townId: int('town_id')
204
- });
205
-
206
-
207
- export const FiltersTable = mysqlTable('filters', {
208
- id: int('id').autoincrement().notNull().primaryKey(),
209
- title: varchar('title', { length: 255 }).notNull(),
210
- Key: varchar('_key', { length: 255 }).notNull(),
211
- fieldName: varchar('field_name', { length: 255 }).notNull(),
212
- type: mysqlEnum('type', ['checkbox', 'select', 'text', 'finance', 'number', 'point']).notNull(),
213
- tableName: varchar('table_name', { length: 255 }),
214
- isMandatory: boolean('is_mandatory')
215
- });
216
-
217
-
218
- export const FaqTable = mysqlTable('faq', {
219
- id: int('id').autoincrement().notNull().primaryKey(),
220
- qEn: varchar('q_en', { length: 255 }).notNull(),
221
- qAr: varchar('q_ar', { length: 255 }).notNull(),
222
- qTr: varchar('q_tr', { length: 255 }),
223
- aEn: longtext('a_en').notNull(),
224
- aAr: longtext('a_ar'),
225
- aTr: longtext('a_tr')
226
- });
227
-
228
-
229
- export const ErrorsTable = mysqlTable('errors', {
230
- id: int('id').autoincrement().notNull().primaryKey(),
231
- title: varchar('title', { length: 255 }).notNull(),
232
- caseId: varchar('case_id', { length: 255 }).notNull(),
233
- userId: int('user_id'),
234
- itemSlug: varchar('item_slug', { length: 255 }),
235
- desc: longtext('desc'),
236
- isResolved: boolean('is_resolved')
237
- });
238
-
239
-
240
- export const ElectronicsTable = mysqlTable('electronics', {
241
- id: int('id').autoincrement().notNull().primaryKey(),
242
- title: varchar('title', { length: 255 }).notNull(),
243
- catId: int('cat_id').notNull(),
244
- condition: varchar('condition', { length: 255 }).notNull(),
245
- price: int('price').notNull(),
246
- currency: mysqlEnum('currency', ['USD', 'TRY', 'SYP']).notNull(),
247
- exchangeable: boolean('exchangeable'),
248
- installments: boolean('installments'),
249
- fromWhom: varchar('from_whom', { length: 255 }).notNull(),
250
- coverphoto: varchar('coverphoto', { length: 255 }).notNull(),
251
- coverphotoPlaceholder: varchar('coverphoto_placeholder', { length: 255 }),
252
- desc: longtext('desc'),
253
- latitude: double('latitude'),
254
- longitude: double('longitude'),
255
- viewCount: int('view_count'),
256
- status: mysqlEnum('status', ['pending_creation', 'active', 'pending_review', 'rejected', 'expired']),
257
- govId: int('gov_id').notNull(),
258
- districtId: int('district_id').notNull(),
259
- subDistrictId: int('sub_district_id'),
260
- townId: int('town_id')
261
- });
262
-
263
-
264
- export const ClothesTable = mysqlTable('clothes', {
265
- id: int('id').autoincrement().notNull().primaryKey(),
266
- title: varchar('title', { length: 255 }).notNull(),
267
- catId: int('cat_id').notNull(),
268
- condition: varchar('condition', { length: 255 }).notNull(),
269
- price: int('price').notNull(),
270
- currency: mysqlEnum('currency', ['USD', 'TRY', 'SYP']).notNull(),
271
- exchangeable: boolean('exchangeable'),
272
- fromWhom: varchar('from_whom', { length: 255 }).notNull(),
273
- coverphoto: varchar('coverphoto', { length: 255 }).notNull(),
274
- coverphotoPlaceholder: varchar('coverphoto_placeholder', { length: 255 }),
275
- desc: longtext('desc'),
276
- latitude: double('latitude'),
277
- longitude: double('longitude'),
278
- viewCount: int('view_count'),
279
- status: mysqlEnum('status', ['pending_creation', 'active', 'pending_review', 'rejected', 'expired']),
280
- govId: int('gov_id').notNull(),
281
- districtId: int('district_id').notNull(),
282
- subDistrictId: int('sub_district_id'),
283
- townId: int('town_id')
284
- });
285
-
286
-
287
- export const CatsTable = mysqlTable('cats', {
288
- id: int('id').autoincrement().notNull().primaryKey(),
289
- catOrder: int('cat_order').notNull(),
290
- slug: varchar('slug', { length: 255 }).notNull(),
291
- titleEn: varchar('title_en', { length: 255 }).notNull(),
292
- titleAr: varchar('title_ar', { length: 255 }).notNull(),
293
- titleTr: varchar('title_tr', { length: 255 }).notNull(),
294
- fullTitleEn: varchar('full_title_en', { length: 255 }),
295
- fullTitleAr: varchar('full_title_ar', { length: 255 }),
296
- fullTitleTr: varchar('full_title_tr', { length: 255 }),
297
- image: varchar('image', { length: 255 }),
298
- metaDescEn: varchar('meta_desc_en', { length: 255 }),
299
- metaDescAr: varchar('meta_desc_ar', { length: 255 }),
300
- metaDescTr: varchar('meta_desc_tr', { length: 255 }),
301
- filters: varchar('filters', { length: 255 }),
302
- tableName: varchar('table_name', { length: 255 }).notNull(),
303
- adCount: int('ad_count'),
304
- parentId: int('parent_id'),
305
- level: int('level')
306
- });
307
-
308
-
309
- export const CarsTable = mysqlTable('cars', {
310
- id: int('id').autoincrement().notNull().primaryKey(),
311
- modelYear: int('model_year').notNull(),
312
- model: varchar('model', { length: 255 }).notNull(),
313
- title: varchar('title', { length: 255 }).notNull(),
314
- catId: int('cat_id').notNull(),
315
- govId: int('gov_id').notNull(),
316
- districtId: int('district_id').notNull(),
317
- subDistrictId: int('sub_district_id'),
318
- townId: int('town_id'),
319
- price: int('price').notNull(),
320
- currency: mysqlEnum('currency', ['USD', 'TRY', 'SYP']).notNull(),
321
- condition: varchar('condition', { length: 255 }).notNull(),
322
- fromWhom: varchar('from_whom', { length: 255 }).notNull(),
323
- engineCapacity: varchar('engine_capacity', { length: 255 }).notNull(),
324
- enginePower: varchar('engine_power', { length: 255 }).notNull(),
325
- tractionType: varchar('traction_type', { length: 255 }).notNull(),
326
- bodyType: varchar('body_type', { length: 255 }).notNull(),
327
- gearType: varchar('gear_type', { length: 255 }).notNull(),
328
- fuelType: varchar('fuel_type', { length: 255 }).notNull(),
329
- exchangeable: boolean('exchangeable'),
330
- installments: boolean('installments'),
331
- coverphoto: varchar('coverphoto', { length: 255 }).notNull(),
332
- coverphotoPlaceholder: varchar('coverphoto_placeholder', { length: 255 }),
333
- desc: longtext('desc'),
334
- latitude: double('latitude'),
335
- longitude: double('longitude'),
336
- viewCount: int('view_count'),
337
- status: mysqlEnum('status', ['pending_creation', 'active', 'pending_review', 'rejected', 'expired'])
338
- });
339
-
340
-
341
- export const CarsDbTable = mysqlTable('cars_db', {
342
- id: int('id').autoincrement().notNull().primaryKey(),
343
- name: varchar('name', { length: 255 }).notNull(),
344
- parentId: int('parent_id'),
345
- level: int('level')
346
- });
347
-
348
-
349
- export const BooksTable = mysqlTable('books', {
350
- id: int('id').autoincrement().notNull().primaryKey(),
351
- title: varchar('title', { length: 255 }).notNull(),
352
- catId: int('cat_id').notNull(),
353
- condition: varchar('condition', { length: 255 }).notNull(),
354
- price: int('price').notNull(),
355
- currency: mysqlEnum('currency', ['USD', 'TRY', 'SYP']).notNull(),
356
- exchangeable: boolean('exchangeable'),
357
- fromWhom: varchar('from_whom', { length: 255 }).notNull(),
358
- coverphoto: varchar('coverphoto', { length: 255 }).notNull(),
359
- coverphotoPlaceholder: varchar('coverphoto_placeholder', { length: 255 }),
360
- desc: longtext('desc'),
361
- latitude: double('latitude'),
362
- longitude: double('longitude'),
363
- viewCount: int('view_count'),
364
- status: mysqlEnum('status', ['pending_creation', 'active', 'pending_review', 'rejected', 'expired']),
365
- govId: int('gov_id').notNull(),
366
- districtId: int('district_id').notNull(),
367
- subDistrictId: int('sub_district_id'),
368
- townId: int('town_id')
369
- });
370
-
371
-
372
- export const AddressTable = mysqlTable('address', {
373
- id: int('id').autoincrement().notNull().primaryKey(),
374
- catOrder: int('cat_order').notNull(),
375
- titleEn: varchar('title_en', { length: 255 }).notNull(),
376
- titleAr: varchar('title_ar', { length: 255 }).notNull(),
377
- titleTr: varchar('title_tr', { length: 255 }).notNull(),
378
- image: varchar('image', { length: 255 }),
379
- path: varchar('path', { length: 255 }),
380
- parentId: int('parent_id'),
381
- level: int('level')
382
- });
383
-
1
+ import {mysqlTable,int,longtext,mysqlEnum,varchar,boolean,double,timestamp} from 'drizzle-orm/mysql-core'
2
+
3
+ export const AppInfoTable = mysqlTable('app_info', {
4
+ id: int('id').autoincrement().notNull().primaryKey(),
5
+ aboutEn: longtext('about_en').notNull(),
6
+ aboutAr: longtext('about_ar').notNull(),
7
+ aboutTr: longtext('about_tr').notNull(),
8
+ privacyEn: longtext('privacy_en').notNull(),
9
+ privacyAr: longtext('privacy_ar').notNull(),
10
+ privacyTr: longtext('privacy_tr').notNull()
11
+ });
12
+
13
+
14
+ export const UserReportsTable = mysqlTable('user_reports', {
15
+ id: int('id').autoincrement().notNull().primaryKey(),
16
+ contentType: mysqlEnum('content_type', ['ad', 'user']).notNull(),
17
+ reportType: mysqlEnum('report_type', ['explicit_content', 'wrong_information', 'no_longer_available', 'user_not_responsive', 'other']).notNull(),
18
+ contentId: int('content_id').notNull(),
19
+ catId: int('cat_id').notNull(),
20
+ userId: int('user_id'),
21
+ appId: varchar('app_id', { length: 36 }).notNull(),
22
+ title: varchar('title', { length: 255 }).notNull(),
23
+ slug: varchar('slug', { length: 255 }).notNull()
24
+ });
25
+
26
+
27
+ export const FeaturedSliderTable = mysqlTable('featured_slider', {
28
+ id: int('id').autoincrement().notNull().primaryKey(),
29
+ image: varchar('image', { length: 255 }).notNull(),
30
+ titleEn: varchar('title_en', { length: 255 }).notNull(),
31
+ titleAr: varchar('title_ar', { length: 255 }).notNull(),
32
+ titleTr: varchar('title_tr', { length: 255 }).notNull(),
33
+ descEn: longtext('desc_en').notNull(),
34
+ descAr: longtext('desc_ar').notNull(),
35
+ descTr: longtext('desc_tr').notNull()
36
+ });
37
+
38
+
39
+ export const MenuSettingsTable = mysqlTable('menu_settings', {
40
+ id: int('id').autoincrement().notNull().primaryKey(),
41
+ taxRate: varchar('tax_rate', { length: 255 }),
42
+ hideSlider: boolean('hide_slider')
43
+ });
44
+
45
+
46
+ export const ServicesTable = mysqlTable('services', {
47
+ id: int('id').autoincrement().notNull().primaryKey(),
48
+ title: varchar('title', { length: 255 }).notNull(),
49
+ catId: int('cat_id').notNull(),
50
+ coverphoto: varchar('coverphoto', { length: 255 }).notNull(),
51
+ price: int('price'),
52
+ currency: mysqlEnum('currency', ['USD', 'TRY', 'SYP']),
53
+ coverphotoPlaceholder: varchar('coverphoto_placeholder', { length: 255 }),
54
+ desc: longtext('desc'),
55
+ latitude: double('latitude'),
56
+ longitude: double('longitude'),
57
+ viewCount: int('view_count'),
58
+ status: mysqlEnum('status', ['pending_creation', 'active', 'pending_review', 'rejected', 'expired']),
59
+ govId: int('gov_id').notNull(),
60
+ districtId: int('district_id').notNull(),
61
+ subDistrictId: int('sub_district_id'),
62
+ townId: int('town_id')
63
+ });
64
+
65
+
66
+ export const RealestateTable = mysqlTable('realestate', {
67
+ id: int('id').autoincrement().notNull().primaryKey(),
68
+ catId: int('cat_id').notNull(),
69
+ title: varchar('title', { length: 255 }).notNull(),
70
+ price: int('price').notNull(),
71
+ currency: mysqlEnum('currency', ['USD', 'TRY', 'SYP']).notNull(),
72
+ spaceGross: int('space_gross').notNull(),
73
+ spaceNet: int('space_net').notNull(),
74
+ latitude: double('latitude').notNull(),
75
+ longitude: double('longitude').notNull(),
76
+ roomCount: varchar('room_count', { length: 255 }),
77
+ buildingAge: varchar('building_age', { length: 255 }),
78
+ floorCount: varchar('floor_count', { length: 255 }),
79
+ bathroomCount: varchar('bathroom_count', { length: 255 }),
80
+ floorLocation: varchar('floor_location', { length: 255 }),
81
+ heatingType: varchar('heating_type', { length: 255 }),
82
+ kitchenType: varchar('kitchen_type', { length: 255 }),
83
+ balcony: boolean('balcony'),
84
+ lift: boolean('lift'),
85
+ parkingType: varchar('parking_type', { length: 255 }),
86
+ furnished: boolean('furnished'),
87
+ belongsToSite: boolean('belongs_to_site'),
88
+ siteName: varchar('site_name', { length: 255 }),
89
+ installments: boolean('installments'),
90
+ exchangeable: boolean('exchangeable'),
91
+ fromWhom: varchar('from_whom', { length: 255 }),
92
+ buildingMembershipFees: int('building_membership_fees'),
93
+ deposit: int('deposit'),
94
+ coverphoto: varchar('coverphoto', { length: 255 }).notNull(),
95
+ coverphotoPlaceholder: varchar('coverphoto_placeholder', { length: 255 }),
96
+ desc: longtext('desc'),
97
+ viewCount: int('view_count'),
98
+ status: mysqlEnum('status', ['pending_creation', 'active', 'pending_review', 'rejected', 'expired']),
99
+ govId: int('gov_id').notNull(),
100
+ districtId: int('district_id').notNull(),
101
+ subDistrictId: int('sub_district_id'),
102
+ townId: int('town_id')
103
+ });
104
+
105
+
106
+ export const HomepageSliderTable = mysqlTable('homepage_slider', {
107
+ id: int('id').autoincrement().notNull().primaryKey(),
108
+ titleEn: varchar('title_en', { length: 255 }).notNull(),
109
+ titleAr: varchar('title_ar', { length: 255 }).notNull(),
110
+ titleTr: varchar('title_tr', { length: 255 }).notNull(),
111
+ subtitleEn: varchar('subtitle_en', { length: 255 }).notNull(),
112
+ subtitleAr: varchar('subtitle_ar', { length: 255 }).notNull(),
113
+ subtitleTr: varchar('subtitle_tr', { length: 255 }).notNull(),
114
+ photo: varchar('photo', { length: 255 }).notNull(),
115
+ buttonUrl: varchar('button_url', { length: 255 }),
116
+ buttonTextEn: varchar('button_text_en', { length: 255 }),
117
+ buttonTextAr: varchar('button_text_ar', { length: 255 }),
118
+ buttonTextTr: varchar('button_text_tr', { length: 255 }),
119
+ buttonUrlTarget: mysqlEnum('button_url_target', ['_blank', '_self'])
120
+ });
121
+
122
+
123
+ export const ContestSubscribersTable = mysqlTable('contest_subscribers', {
124
+ id: int('id').autoincrement().notNull().primaryKey(),
125
+ userId: int('user_id').notNull(),
126
+ contestId: varchar('contest_id', { length: 255 }).notNull()
127
+ });
128
+
129
+
130
+ export const ContestsTable = mysqlTable('contests', {
131
+ id: int('id').autoincrement().notNull().primaryKey(),
132
+ date: timestamp('date').notNull(),
133
+ prize: varchar('prize', { length: 255 }).notNull(),
134
+ winnerId: int('winner_id'),
135
+ tags: varchar('tags', { length: 255 })
136
+ });
137
+
138
+
139
+ export const NotificationsTable = mysqlTable('notifications', {
140
+ id: int('id').autoincrement().notNull().primaryKey(),
141
+ type: mysqlEnum('type', ['ad_price_updated', 'ad_updated', 'ad_activated', 'ad_pending_review', 'ad_expired', 'ad_rejected', 'ad_viewed', 'ad_favorited', 'ad_shared', 'ad_reported', 'ad_deleted', 'ad_created', 'contest_winner', 'contest_reminder', 'contest_created', 'custom']).notNull(),
142
+ contentId: int('content_id'),
143
+ contentCatId: int('content_cat_id'),
144
+ userId: int('user_id'),
145
+ message: varchar('message', { length: 255 })
146
+ });
147
+
148
+
149
+ export const ModerationTable = mysqlTable('moderation', {
150
+ id: int('id').autoincrement().notNull().primaryKey(),
151
+ contentType: mysqlEnum('content_type', ['ad', 'user']).notNull(),
152
+ contentId: int('content_id').notNull(),
153
+ catId: int('cat_id'),
154
+ userId: int('user_id').notNull(),
155
+ flagged: int('flagged').notNull(),
156
+ result: varchar('result', { length: 255 }).notNull()
157
+ });
158
+
159
+
160
+ export const JobsTable = mysqlTable('jobs', {
161
+ id: int('id').autoincrement().notNull().primaryKey(),
162
+ title: varchar('title', { length: 255 }).notNull(),
163
+ catId: int('cat_id').notNull(),
164
+ salary: int('salary'),
165
+ currency: mysqlEnum('currency', ['USD', 'TRY', 'SYP']).notNull(),
166
+ workMethod: varchar('work_method', { length: 255 }).notNull(),
167
+ minimumEducation: varchar('minimum_education', { length: 255 }).notNull(),
168
+ experienceLevel: varchar('experience_level', { length: 255 }).notNull(),
169
+ remote: boolean('remote'),
170
+ coverphoto: varchar('coverphoto', { length: 255 }).notNull(),
171
+ coverphotoPlaceholder: varchar('coverphoto_placeholder', { length: 255 }),
172
+ desc: longtext('desc'),
173
+ latitude: double('latitude'),
174
+ longitude: double('longitude'),
175
+ viewCount: int('view_count'),
176
+ status: mysqlEnum('status', ['pending_creation', 'active', 'pending_review', 'rejected', 'expired']),
177
+ govId: int('gov_id').notNull(),
178
+ districtId: int('district_id').notNull(),
179
+ subDistrictId: int('sub_district_id'),
180
+ townId: int('town_id')
181
+ });
182
+
183
+
184
+ export const FurnitureTable = mysqlTable('furniture', {
185
+ id: int('id').autoincrement().notNull().primaryKey(),
186
+ title: varchar('title', { length: 255 }).notNull(),
187
+ catId: int('cat_id').notNull(),
188
+ condition: varchar('condition', { length: 255 }).notNull(),
189
+ price: int('price').notNull(),
190
+ currency: mysqlEnum('currency', ['USD', 'TRY', 'SYP']).notNull(),
191
+ exchangeable: boolean('exchangeable'),
192
+ fromWhom: varchar('from_whom', { length: 255 }).notNull(),
193
+ coverphoto: varchar('coverphoto', { length: 255 }).notNull(),
194
+ coverphotoPlaceholder: varchar('coverphoto_placeholder', { length: 255 }),
195
+ desc: longtext('desc'),
196
+ latitude: double('latitude'),
197
+ longitude: double('longitude'),
198
+ viewCount: int('view_count'),
199
+ status: mysqlEnum('status', ['pending_creation', 'active', 'pending_review', 'rejected', 'expired']),
200
+ govId: int('gov_id').notNull(),
201
+ districtId: int('district_id').notNull(),
202
+ subDistrictId: int('sub_district_id'),
203
+ townId: int('town_id')
204
+ });
205
+
206
+
207
+ export const FiltersTable = mysqlTable('filters', {
208
+ id: int('id').autoincrement().notNull().primaryKey(),
209
+ title: varchar('title', { length: 255 }).notNull(),
210
+ Key: varchar('_key', { length: 255 }).notNull(),
211
+ fieldName: varchar('field_name', { length: 255 }).notNull(),
212
+ type: mysqlEnum('type', ['checkbox', 'select', 'text', 'finance', 'number', 'point']).notNull(),
213
+ tableName: varchar('table_name', { length: 255 }),
214
+ isMandatory: boolean('is_mandatory')
215
+ });
216
+
217
+
218
+ export const FaqTable = mysqlTable('faq', {
219
+ id: int('id').autoincrement().notNull().primaryKey(),
220
+ qEn: varchar('q_en', { length: 255 }).notNull(),
221
+ qAr: varchar('q_ar', { length: 255 }).notNull(),
222
+ qTr: varchar('q_tr', { length: 255 }),
223
+ aEn: longtext('a_en').notNull(),
224
+ aAr: longtext('a_ar'),
225
+ aTr: longtext('a_tr')
226
+ });
227
+
228
+
229
+ export const ErrorsTable = mysqlTable('errors', {
230
+ id: int('id').autoincrement().notNull().primaryKey(),
231
+ title: varchar('title', { length: 255 }).notNull(),
232
+ caseId: varchar('case_id', { length: 255 }).notNull(),
233
+ userId: int('user_id'),
234
+ itemSlug: varchar('item_slug', { length: 255 }),
235
+ desc: longtext('desc'),
236
+ isResolved: boolean('is_resolved')
237
+ });
238
+
239
+
240
+ export const ElectronicsTable = mysqlTable('electronics', {
241
+ id: int('id').autoincrement().notNull().primaryKey(),
242
+ title: varchar('title', { length: 255 }).notNull(),
243
+ catId: int('cat_id').notNull(),
244
+ condition: varchar('condition', { length: 255 }).notNull(),
245
+ price: int('price').notNull(),
246
+ currency: mysqlEnum('currency', ['USD', 'TRY', 'SYP']).notNull(),
247
+ exchangeable: boolean('exchangeable'),
248
+ installments: boolean('installments'),
249
+ fromWhom: varchar('from_whom', { length: 255 }).notNull(),
250
+ coverphoto: varchar('coverphoto', { length: 255 }).notNull(),
251
+ coverphotoPlaceholder: varchar('coverphoto_placeholder', { length: 255 }),
252
+ desc: longtext('desc'),
253
+ latitude: double('latitude'),
254
+ longitude: double('longitude'),
255
+ viewCount: int('view_count'),
256
+ status: mysqlEnum('status', ['pending_creation', 'active', 'pending_review', 'rejected', 'expired']),
257
+ govId: int('gov_id').notNull(),
258
+ districtId: int('district_id').notNull(),
259
+ subDistrictId: int('sub_district_id'),
260
+ townId: int('town_id')
261
+ });
262
+
263
+
264
+ export const ClothesTable = mysqlTable('clothes', {
265
+ id: int('id').autoincrement().notNull().primaryKey(),
266
+ title: varchar('title', { length: 255 }).notNull(),
267
+ catId: int('cat_id').notNull(),
268
+ condition: varchar('condition', { length: 255 }).notNull(),
269
+ price: int('price').notNull(),
270
+ currency: mysqlEnum('currency', ['USD', 'TRY', 'SYP']).notNull(),
271
+ exchangeable: boolean('exchangeable'),
272
+ fromWhom: varchar('from_whom', { length: 255 }).notNull(),
273
+ coverphoto: varchar('coverphoto', { length: 255 }).notNull(),
274
+ coverphotoPlaceholder: varchar('coverphoto_placeholder', { length: 255 }),
275
+ desc: longtext('desc'),
276
+ latitude: double('latitude'),
277
+ longitude: double('longitude'),
278
+ viewCount: int('view_count'),
279
+ status: mysqlEnum('status', ['pending_creation', 'active', 'pending_review', 'rejected', 'expired']),
280
+ govId: int('gov_id').notNull(),
281
+ districtId: int('district_id').notNull(),
282
+ subDistrictId: int('sub_district_id'),
283
+ townId: int('town_id')
284
+ });
285
+
286
+
287
+ export const CatsTable = mysqlTable('cats', {
288
+ id: int('id').autoincrement().notNull().primaryKey(),
289
+ catOrder: int('cat_order').notNull(),
290
+ slug: varchar('slug', { length: 255 }).notNull(),
291
+ titleEn: varchar('title_en', { length: 255 }).notNull(),
292
+ titleAr: varchar('title_ar', { length: 255 }).notNull(),
293
+ titleTr: varchar('title_tr', { length: 255 }).notNull(),
294
+ fullTitleEn: varchar('full_title_en', { length: 255 }),
295
+ fullTitleAr: varchar('full_title_ar', { length: 255 }),
296
+ fullTitleTr: varchar('full_title_tr', { length: 255 }),
297
+ image: varchar('image', { length: 255 }),
298
+ metaDescEn: varchar('meta_desc_en', { length: 255 }),
299
+ metaDescAr: varchar('meta_desc_ar', { length: 255 }),
300
+ metaDescTr: varchar('meta_desc_tr', { length: 255 }),
301
+ filters: varchar('filters', { length: 255 }),
302
+ tableName: varchar('table_name', { length: 255 }).notNull(),
303
+ adCount: int('ad_count'),
304
+ parentId: int('parent_id'),
305
+ level: int('level')
306
+ });
307
+
308
+
309
+ export const CarsTable = mysqlTable('cars', {
310
+ id: int('id').autoincrement().notNull().primaryKey(),
311
+ modelYear: int('model_year').notNull(),
312
+ model: varchar('model', { length: 255 }).notNull(),
313
+ title: varchar('title', { length: 255 }).notNull(),
314
+ catId: int('cat_id').notNull(),
315
+ govId: int('gov_id').notNull(),
316
+ districtId: int('district_id').notNull(),
317
+ subDistrictId: int('sub_district_id'),
318
+ townId: int('town_id'),
319
+ price: int('price').notNull(),
320
+ currency: mysqlEnum('currency', ['USD', 'TRY', 'SYP']).notNull(),
321
+ condition: varchar('condition', { length: 255 }).notNull(),
322
+ fromWhom: varchar('from_whom', { length: 255 }).notNull(),
323
+ engineCapacity: varchar('engine_capacity', { length: 255 }).notNull(),
324
+ enginePower: varchar('engine_power', { length: 255 }).notNull(),
325
+ tractionType: varchar('traction_type', { length: 255 }).notNull(),
326
+ bodyType: varchar('body_type', { length: 255 }).notNull(),
327
+ gearType: varchar('gear_type', { length: 255 }).notNull(),
328
+ fuelType: varchar('fuel_type', { length: 255 }).notNull(),
329
+ exchangeable: boolean('exchangeable'),
330
+ installments: boolean('installments'),
331
+ coverphoto: varchar('coverphoto', { length: 255 }).notNull(),
332
+ coverphotoPlaceholder: varchar('coverphoto_placeholder', { length: 255 }),
333
+ desc: longtext('desc'),
334
+ latitude: double('latitude'),
335
+ longitude: double('longitude'),
336
+ viewCount: int('view_count'),
337
+ status: mysqlEnum('status', ['pending_creation', 'active', 'pending_review', 'rejected', 'expired'])
338
+ });
339
+
340
+
341
+ export const CarsDbTable = mysqlTable('cars_db', {
342
+ id: int('id').autoincrement().notNull().primaryKey(),
343
+ name: varchar('name', { length: 255 }).notNull(),
344
+ parentId: int('parent_id'),
345
+ level: int('level')
346
+ });
347
+
348
+
349
+ export const BooksTable = mysqlTable('books', {
350
+ id: int('id').autoincrement().notNull().primaryKey(),
351
+ title: varchar('title', { length: 255 }).notNull(),
352
+ catId: int('cat_id').notNull(),
353
+ condition: varchar('condition', { length: 255 }).notNull(),
354
+ price: int('price').notNull(),
355
+ currency: mysqlEnum('currency', ['USD', 'TRY', 'SYP']).notNull(),
356
+ exchangeable: boolean('exchangeable'),
357
+ fromWhom: varchar('from_whom', { length: 255 }).notNull(),
358
+ coverphoto: varchar('coverphoto', { length: 255 }).notNull(),
359
+ coverphotoPlaceholder: varchar('coverphoto_placeholder', { length: 255 }),
360
+ desc: longtext('desc'),
361
+ latitude: double('latitude'),
362
+ longitude: double('longitude'),
363
+ viewCount: int('view_count'),
364
+ status: mysqlEnum('status', ['pending_creation', 'active', 'pending_review', 'rejected', 'expired']),
365
+ govId: int('gov_id').notNull(),
366
+ districtId: int('district_id').notNull(),
367
+ subDistrictId: int('sub_district_id'),
368
+ townId: int('town_id')
369
+ });
370
+
371
+
372
+ export const AddressTable = mysqlTable('address', {
373
+ id: int('id').autoincrement().notNull().primaryKey(),
374
+ catOrder: int('cat_order').notNull(),
375
+ titleEn: varchar('title_en', { length: 255 }).notNull(),
376
+ titleAr: varchar('title_ar', { length: 255 }).notNull(),
377
+ titleTr: varchar('title_tr', { length: 255 }).notNull(),
378
+ image: varchar('image', { length: 255 }),
379
+ path: varchar('path', { length: 255 }),
380
+ parentId: int('parent_id'),
381
+ level: int('level')
382
+ });
383
+