@smarttj/core 1.1.1 → 1.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@smarttj/core",
3
- "version": "1.1.1",
3
+ "version": "1.1.3",
4
4
  "description": "Shared enums, constants and database schemas for SmartTJ ecosystem",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
7
7
  "files": [
8
8
  "dist",
9
- "prisma/schema.prisma"
9
+ "prisma"
10
10
  ],
11
11
  "exports": {
12
12
  ".": {
@@ -22,12 +22,16 @@
22
22
  "scripts": {
23
23
  "clean": "rimraf dist",
24
24
  "build": "npm run clean && tsc",
25
- "prepare": "npm run build"
25
+ "prepare": "npm run build",
26
+ "prisma:migrate": "npx prisma migrate dev --name init --create-only"
26
27
  },
27
28
  "publishConfig": {
28
29
  "access": "public"
29
30
  },
30
31
  "devDependencies": {
32
+ "@types/node": "^26.4.1",
33
+ "dotenv": "^17.4.2",
34
+ "prisma": "^7.10.0",
31
35
  "rimraf": "^6.1.3",
32
36
  "typescript": "^7.0.2"
33
37
  }
@@ -0,0 +1,833 @@
1
+ -- CreateEnum
2
+ CREATE TYPE "UserRole" AS ENUM ('SYSADMIN', 'USER', 'ADMIN', 'MODERATOR', 'PARTNER', 'PARTNER_EMPLOYEE');
3
+
4
+ -- CreateEnum
5
+ CREATE TYPE "SmsLogPurpose" AS ENUM ('REGISTER', 'LOGIN', 'RESET_PASSWORD');
6
+
7
+ -- CreateEnum
8
+ CREATE TYPE "SmsLogStatus" AS ENUM ('NEW', 'SENT', 'FAILED');
9
+
10
+ -- CreateEnum
11
+ CREATE TYPE "PartnerStatus" AS ENUM ('IN_MODERATE', 'ACTIVE', 'BLOCKED');
12
+
13
+ -- CreateEnum
14
+ CREATE TYPE "PartnerIdentification" AS ENUM ('MINIMUM', 'STANDART', 'MAXIMUM');
15
+
16
+ -- CreateEnum
17
+ CREATE TYPE "EmployeeStatus" AS ENUM ('ACTIVE', 'ON_VACATION');
18
+
19
+ -- CreateEnum
20
+ CREATE TYPE "VerificationStatus" AS ENUM ('ACTIVE', 'DELETED');
21
+
22
+ -- CreateEnum
23
+ CREATE TYPE "ProductStatus" AS ENUM ('DRAFT', 'AUTO_MODERATION', 'MANUAL_MODERATION', 'ACTIVE', 'INACTIVE', 'NOT_AVAILABLE', 'DELETED');
24
+
25
+ -- CreateEnum
26
+ CREATE TYPE "AttributeType" AS ENUM ('STRING', 'NUMBER', 'BOOLEAN', 'SELECT', 'MULTISELECT');
27
+
28
+ -- CreateEnum
29
+ CREATE TYPE "PaymentMethodType" AS ENUM ('CASH', 'CARD');
30
+
31
+ -- CreateEnum
32
+ CREATE TYPE "OrderPaymentStatus" AS ENUM ('UNPAID', 'PAID', 'FAILED', 'REFUNDED');
33
+
34
+ -- CreateEnum
35
+ CREATE TYPE "OrderDeliveryStatus" AS ENUM ('NEW', 'PARTIALLY_DELIVERED', 'DELIVERED', 'RECEIVED', 'RETURNED');
36
+
37
+ -- CreateEnum
38
+ CREATE TYPE "OrderUIStatus" AS ENUM ('SHOW', 'ARCHIVED', 'DELETED');
39
+
40
+ -- CreateEnum
41
+ CREATE TYPE "OrderType" AS ENUM ('PICKUP', 'DELIVERY');
42
+
43
+ -- CreateEnum
44
+ CREATE TYPE "OrderItemDeliveryStatus" AS ENUM ('NEW', 'PROCESSING', 'SHIPPED', 'AT_PICKUP_POINT', 'DELIVERED', 'RECEIVED', 'RETURN_PROCESS', 'RETURN_CANCEL', 'RETURNED');
45
+
46
+ -- CreateEnum
47
+ CREATE TYPE "NotificationType" AS ENUM ('DEFAULT', 'PRODUCT_MODERATION');
48
+
49
+ -- CreateEnum
50
+ CREATE TYPE "TransactionPaymentStatus" AS ENUM ('PENDING', 'SUCCESS', 'FAILED', 'CANCELED', 'REFUNDED');
51
+
52
+ -- CreateEnum
53
+ CREATE TYPE "SupportChatStatus" AS ENUM ('AI', 'HUMAN', 'CLOSED');
54
+
55
+ -- CreateEnum
56
+ CREATE TYPE "SupportChatPriority" AS ENUM ('LOW', 'NORMAL', 'HIGH', 'CRITICAL');
57
+
58
+ -- CreateEnum
59
+ CREATE TYPE "SupportMessageRole" AS ENUM ('USER', 'AI', 'OPERATOR', 'SYSTEM');
60
+
61
+ -- CreateEnum
62
+ CREATE TYPE "SupportAttachmentType" AS ENUM ('IMAGE', 'FILE');
63
+
64
+ -- CreateTable
65
+ CREATE TABLE "User" (
66
+ "id" TEXT NOT NULL,
67
+ "phone" TEXT NOT NULL,
68
+ "email" TEXT,
69
+ "password" TEXT,
70
+ "name" TEXT NOT NULL,
71
+ "role" "UserRole" NOT NULL DEFAULT 'USER',
72
+ "avatar" TEXT,
73
+ "avatarId" TEXT,
74
+ "regionId" TEXT,
75
+ "bonus" INTEGER NOT NULL DEFAULT 0,
76
+ "googleId" TEXT,
77
+ "telegramId" TEXT,
78
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
79
+ "updatedAt" TIMESTAMP(3) NOT NULL,
80
+
81
+ CONSTRAINT "User_pkey" PRIMARY KEY ("id")
82
+ );
83
+
84
+ -- CreateTable
85
+ CREATE TABLE "Session" (
86
+ "id" TEXT NOT NULL,
87
+ "userId" TEXT NOT NULL,
88
+ "fingerprint" TEXT NOT NULL,
89
+ "userAgent" TEXT,
90
+ "ip" TEXT,
91
+ "expiresAt" TIMESTAMP(3) NOT NULL,
92
+ "isActive" BOOLEAN NOT NULL DEFAULT true,
93
+ "expoPushToken" TEXT,
94
+ "lastActiveAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
95
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
96
+ "updatedAt" TIMESTAMP(3) NOT NULL,
97
+
98
+ CONSTRAINT "Session_pkey" PRIMARY KEY ("id")
99
+ );
100
+
101
+ -- CreateTable
102
+ CREATE TABLE "AuthOtp" (
103
+ "id" TEXT NOT NULL,
104
+ "phone" TEXT NOT NULL,
105
+ "code" TEXT NOT NULL,
106
+ "expiresAt" TIMESTAMP(3) NOT NULL,
107
+ "attempts" INTEGER NOT NULL DEFAULT 0,
108
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
109
+ "updatedAt" TIMESTAMP(3) NOT NULL,
110
+
111
+ CONSTRAINT "AuthOtp_pkey" PRIMARY KEY ("id")
112
+ );
113
+
114
+ -- CreateTable
115
+ CREATE TABLE "SmsLog" (
116
+ "id" TEXT NOT NULL,
117
+ "phone" TEXT NOT NULL,
118
+ "message" TEXT NOT NULL,
119
+ "purpose" "SmsLogPurpose" NOT NULL,
120
+ "provider" TEXT,
121
+ "status" "SmsLogStatus" NOT NULL,
122
+ "messageId" TEXT,
123
+ "error" TEXT,
124
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
125
+ "updatedAt" TIMESTAMP(3) NOT NULL,
126
+
127
+ CONSTRAINT "SmsLog_pkey" PRIMARY KEY ("id")
128
+ );
129
+
130
+ -- CreateTable
131
+ CREATE TABLE "Partner" (
132
+ "id" TEXT NOT NULL,
133
+ "userId" TEXT NOT NULL,
134
+ "bonus" INTEGER NOT NULL DEFAULT 0,
135
+ "status" "PartnerStatus" NOT NULL DEFAULT 'IN_MODERATE',
136
+ "identification" "PartnerIdentification" NOT NULL DEFAULT 'MINIMUM',
137
+ "title" TEXT NOT NULL,
138
+ "description" TEXT NOT NULL DEFAULT '',
139
+ "logo" TEXT,
140
+ "logoId" TEXT,
141
+ "email" TEXT,
142
+ "phone1" TEXT NOT NULL,
143
+ "phone2" TEXT,
144
+ "address1" TEXT,
145
+ "address2" TEXT,
146
+ "about" TEXT,
147
+ "inn" TEXT,
148
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
149
+ "updatedAt" TIMESTAMP(3) NOT NULL,
150
+
151
+ CONSTRAINT "Partner_pkey" PRIMARY KEY ("id")
152
+ );
153
+
154
+ -- CreateTable
155
+ CREATE TABLE "Employee" (
156
+ "id" TEXT NOT NULL,
157
+ "userId" TEXT NOT NULL,
158
+ "firstName" TEXT NOT NULL,
159
+ "lastName" TEXT NOT NULL,
160
+ "middleName" TEXT,
161
+ "birthDate" TIMESTAMP(3) NOT NULL,
162
+ "position" TEXT NOT NULL,
163
+ "salary" INTEGER NOT NULL,
164
+ "passportNumber" TEXT NOT NULL,
165
+ "hireDate" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
166
+ "status" "EmployeeStatus" NOT NULL DEFAULT 'ACTIVE',
167
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
168
+ "updatedAt" TIMESTAMP(3) NOT NULL,
169
+
170
+ CONSTRAINT "Employee_pkey" PRIMARY KEY ("id")
171
+ );
172
+
173
+ -- CreateTable
174
+ CREATE TABLE "Verification" (
175
+ "id" TEXT NOT NULL,
176
+ "phone" TEXT NOT NULL,
177
+ "code" TEXT NOT NULL,
178
+ "expiresAt" TIMESTAMP(3) NOT NULL,
179
+ "status" "VerificationStatus" NOT NULL DEFAULT 'ACTIVE',
180
+ "userId" TEXT,
181
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
182
+ "updatedAt" TIMESTAMP(3) NOT NULL,
183
+
184
+ CONSTRAINT "Verification_pkey" PRIMARY KEY ("id")
185
+ );
186
+
187
+ -- CreateTable
188
+ CREATE TABLE "Region" (
189
+ "id" TEXT NOT NULL,
190
+ "title" TEXT NOT NULL,
191
+ "order" INTEGER NOT NULL DEFAULT 1,
192
+ "slug" TEXT NOT NULL,
193
+ "parentId" TEXT,
194
+ "default" BOOLEAN NOT NULL DEFAULT false,
195
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
196
+ "updatedAt" TIMESTAMP(3) NOT NULL,
197
+
198
+ CONSTRAINT "Region_pkey" PRIMARY KEY ("id")
199
+ );
200
+
201
+ -- CreateTable
202
+ CREATE TABLE "Address" (
203
+ "id" TEXT NOT NULL,
204
+ "userId" TEXT NOT NULL,
205
+ "label" TEXT NOT NULL,
206
+ "full" TEXT NOT NULL,
207
+ "regionId" TEXT NOT NULL,
208
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
209
+
210
+ CONSTRAINT "Address_pkey" PRIMARY KEY ("id")
211
+ );
212
+
213
+ -- CreateTable
214
+ CREATE TABLE "Product" (
215
+ "id" TEXT NOT NULL,
216
+ "partnerId" TEXT NOT NULL,
217
+ "title" TEXT,
218
+ "slug" TEXT,
219
+ "description" TEXT,
220
+ "warranty" INTEGER,
221
+ "categoryId" TEXT,
222
+ "brandId" TEXT,
223
+ "modelId" TEXT,
224
+ "regionId" TEXT,
225
+ "publishedAt" TIMESTAMP(3),
226
+ "status" "ProductStatus" NOT NULL DEFAULT 'DRAFT',
227
+ "averageRating" DOUBLE PRECISION NOT NULL DEFAULT 0,
228
+ "reviewsCount" INTEGER NOT NULL DEFAULT 0,
229
+ "soldCount" INTEGER NOT NULL DEFAULT 0,
230
+ "viewsCount" INTEGER NOT NULL DEFAULT 0,
231
+ "deletedAt" TIMESTAMP(3),
232
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
233
+ "updatedAt" TIMESTAMP(3) NOT NULL,
234
+
235
+ CONSTRAINT "Product_pkey" PRIMARY KEY ("id")
236
+ );
237
+
238
+ -- CreateTable
239
+ CREATE TABLE "ProductVariant" (
240
+ "id" TEXT NOT NULL,
241
+ "price" INTEGER NOT NULL,
242
+ "discount" INTEGER,
243
+ "stock" INTEGER NOT NULL,
244
+ "productId" TEXT NOT NULL,
245
+ "code" SERIAL NOT NULL,
246
+ "variantId" TEXT,
247
+ "label" TEXT,
248
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
249
+ "updatedAt" TIMESTAMP(3) NOT NULL,
250
+
251
+ CONSTRAINT "ProductVariant_pkey" PRIMARY KEY ("id")
252
+ );
253
+
254
+ -- CreateTable
255
+ CREATE TABLE "ProductPriceHistory" (
256
+ "id" TEXT NOT NULL,
257
+ "variantId" TEXT NOT NULL,
258
+ "price" INTEGER NOT NULL,
259
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
260
+ "updatedAt" TIMESTAMP(3) NOT NULL,
261
+
262
+ CONSTRAINT "ProductPriceHistory_pkey" PRIMARY KEY ("id")
263
+ );
264
+
265
+ -- CreateTable
266
+ CREATE TABLE "Review" (
267
+ "id" TEXT NOT NULL,
268
+ "userId" TEXT NOT NULL,
269
+ "productId" TEXT NOT NULL,
270
+ "productVariantId" TEXT,
271
+ "rating" INTEGER NOT NULL,
272
+ "advantages" TEXT NOT NULL DEFAULT '',
273
+ "flaws" TEXT NOT NULL DEFAULT '',
274
+ "comment" TEXT NOT NULL,
275
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
276
+ "updatedAt" TIMESTAMP(3) NOT NULL,
277
+
278
+ CONSTRAINT "Review_pkey" PRIMARY KEY ("id")
279
+ );
280
+
281
+ -- CreateTable
282
+ CREATE TABLE "Category" (
283
+ "id" TEXT NOT NULL,
284
+ "name" TEXT NOT NULL,
285
+ "short_name" TEXT NOT NULL,
286
+ "slug" TEXT NOT NULL,
287
+ "order" INTEGER NOT NULL DEFAULT 1,
288
+ "icon" TEXT,
289
+ "iconId" TEXT,
290
+ "parentId" TEXT,
291
+ "parentKey" TEXT NOT NULL DEFAULT 'ROOT',
292
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
293
+ "updatedAt" TIMESTAMP(3) NOT NULL,
294
+
295
+ CONSTRAINT "Category_pkey" PRIMARY KEY ("id")
296
+ );
297
+
298
+ -- CreateTable
299
+ CREATE TABLE "Brand" (
300
+ "id" TEXT NOT NULL,
301
+ "name" TEXT NOT NULL,
302
+ "slug" TEXT NOT NULL,
303
+ "logo" TEXT,
304
+ "logoId" TEXT,
305
+ "order" INTEGER NOT NULL DEFAULT 1,
306
+ "popular" BOOLEAN NOT NULL,
307
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
308
+ "updatedAt" TIMESTAMP(3) NOT NULL,
309
+
310
+ CONSTRAINT "Brand_pkey" PRIMARY KEY ("id")
311
+ );
312
+
313
+ -- CreateTable
314
+ CREATE TABLE "Model" (
315
+ "id" TEXT NOT NULL,
316
+ "name" TEXT NOT NULL,
317
+ "slug" TEXT NOT NULL,
318
+ "description" TEXT,
319
+ "image" TEXT,
320
+ "imageId" TEXT,
321
+ "brandId" TEXT NOT NULL,
322
+ "order" INTEGER NOT NULL DEFAULT 1,
323
+ "popular" BOOLEAN NOT NULL,
324
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
325
+ "updatedAt" TIMESTAMP(3) NOT NULL,
326
+
327
+ CONSTRAINT "Model_pkey" PRIMARY KEY ("id")
328
+ );
329
+
330
+ -- CreateTable
331
+ CREATE TABLE "Image" (
332
+ "id" TEXT NOT NULL,
333
+ "productVariantId" TEXT NOT NULL,
334
+ "url" TEXT NOT NULL,
335
+ "urlId" TEXT NOT NULL,
336
+ "order" INTEGER NOT NULL DEFAULT 1,
337
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
338
+ "updatedAt" TIMESTAMP(3) NOT NULL,
339
+
340
+ CONSTRAINT "Image_pkey" PRIMARY KEY ("id")
341
+ );
342
+
343
+ -- CreateTable
344
+ CREATE TABLE "Attribute" (
345
+ "id" TEXT NOT NULL,
346
+ "categoryId" TEXT,
347
+ "name" TEXT NOT NULL,
348
+ "type" "AttributeType" NOT NULL,
349
+ "unit" TEXT,
350
+ "groupId" TEXT,
351
+ "required" BOOLEAN NOT NULL DEFAULT false,
352
+ "filterable" BOOLEAN NOT NULL DEFAULT false,
353
+ "order" INTEGER NOT NULL DEFAULT 1,
354
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
355
+ "updatedAt" TIMESTAMP(3) NOT NULL,
356
+
357
+ CONSTRAINT "Attribute_pkey" PRIMARY KEY ("id")
358
+ );
359
+
360
+ -- CreateTable
361
+ CREATE TABLE "AttributeValue" (
362
+ "id" TEXT NOT NULL,
363
+ "attributeId" TEXT NOT NULL,
364
+ "valueString" TEXT,
365
+ "valueNumber" DOUBLE PRECISION,
366
+ "valueBoolean" BOOLEAN,
367
+ "label" TEXT,
368
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
369
+ "updatedAt" TIMESTAMP(3) NOT NULL,
370
+
371
+ CONSTRAINT "AttributeValue_pkey" PRIMARY KEY ("id")
372
+ );
373
+
374
+ -- CreateTable
375
+ CREATE TABLE "AttributeGroup" (
376
+ "id" TEXT NOT NULL,
377
+ "name" TEXT NOT NULL,
378
+ "order" INTEGER NOT NULL DEFAULT 1,
379
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
380
+ "updatedAt" TIMESTAMP(3) NOT NULL,
381
+
382
+ CONSTRAINT "AttributeGroup_pkey" PRIMARY KEY ("id")
383
+ );
384
+
385
+ -- CreateTable
386
+ CREATE TABLE "ProductAttribute" (
387
+ "id" TEXT NOT NULL,
388
+ "attributeId" TEXT NOT NULL,
389
+ "attributeValueId" TEXT,
390
+ "productVariantId" TEXT NOT NULL,
391
+ "valueString" TEXT,
392
+ "valueNumber" DOUBLE PRECISION,
393
+ "valueBoolean" BOOLEAN,
394
+ "label" TEXT,
395
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
396
+ "updatedAt" TIMESTAMP(3) NOT NULL,
397
+
398
+ CONSTRAINT "ProductAttribute_pkey" PRIMARY KEY ("id")
399
+ );
400
+
401
+ -- CreateTable
402
+ CREATE TABLE "Cart" (
403
+ "id" TEXT NOT NULL,
404
+ "userId" TEXT NOT NULL,
405
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
406
+ "updatedAt" TIMESTAMP(3) NOT NULL,
407
+
408
+ CONSTRAINT "Cart_pkey" PRIMARY KEY ("id")
409
+ );
410
+
411
+ -- CreateTable
412
+ CREATE TABLE "CartItem" (
413
+ "id" TEXT NOT NULL,
414
+ "cartId" TEXT NOT NULL,
415
+ "productVariantId" TEXT NOT NULL,
416
+ "quantity" INTEGER NOT NULL DEFAULT 1,
417
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
418
+ "updatedAt" TIMESTAMP(3) NOT NULL,
419
+
420
+ CONSTRAINT "CartItem_pkey" PRIMARY KEY ("id")
421
+ );
422
+
423
+ -- CreateTable
424
+ CREATE TABLE "PaymentMethod" (
425
+ "id" TEXT NOT NULL,
426
+ "name" TEXT NOT NULL,
427
+ "type" "PaymentMethodType" NOT NULL,
428
+ "isActive" BOOLEAN NOT NULL DEFAULT true,
429
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
430
+ "updatedAt" TIMESTAMP(3) NOT NULL,
431
+
432
+ CONSTRAINT "PaymentMethod_pkey" PRIMARY KEY ("id")
433
+ );
434
+
435
+ -- CreateTable
436
+ CREATE TABLE "Order" (
437
+ "id" TEXT NOT NULL,
438
+ "userId" TEXT NOT NULL,
439
+ "paymentStatus" "OrderPaymentStatus" NOT NULL DEFAULT 'UNPAID',
440
+ "deliveryStatus" "OrderDeliveryStatus" NOT NULL DEFAULT 'NEW',
441
+ "uiStatus" "OrderUIStatus" NOT NULL DEFAULT 'SHOW',
442
+ "type" "OrderType" NOT NULL,
443
+ "paymentMethodId" TEXT NOT NULL,
444
+ "totalPrice" INTEGER NOT NULL,
445
+ "comment" TEXT,
446
+ "shopId" TEXT,
447
+ "addressId" TEXT,
448
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
449
+ "updatedAt" TIMESTAMP(3) NOT NULL,
450
+
451
+ CONSTRAINT "Order_pkey" PRIMARY KEY ("id")
452
+ );
453
+
454
+ -- CreateTable
455
+ CREATE TABLE "OrderItem" (
456
+ "id" TEXT NOT NULL,
457
+ "orderId" TEXT NOT NULL,
458
+ "productVariantId" TEXT,
459
+ "quantity" INTEGER NOT NULL DEFAULT 1,
460
+ "price" INTEGER NOT NULL,
461
+ "deliveryStatus" "OrderItemDeliveryStatus" NOT NULL DEFAULT 'NEW',
462
+ "warranty" INTEGER,
463
+ "receivedAt" TIMESTAMP(3),
464
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
465
+ "updatedAt" TIMESTAMP(3) NOT NULL,
466
+
467
+ CONSTRAINT "OrderItem_pkey" PRIMARY KEY ("id")
468
+ );
469
+
470
+ -- CreateTable
471
+ CREATE TABLE "Notification" (
472
+ "id" TEXT NOT NULL,
473
+ "userId" TEXT NOT NULL,
474
+ "type" "NotificationType" NOT NULL DEFAULT 'DEFAULT',
475
+ "title" TEXT NOT NULL,
476
+ "message" TEXT NOT NULL,
477
+ "isRead" BOOLEAN NOT NULL DEFAULT false,
478
+ "metadata" JSONB,
479
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
480
+ "updatedAt" TIMESTAMP(3) NOT NULL,
481
+
482
+ CONSTRAINT "Notification_pkey" PRIMARY KEY ("id")
483
+ );
484
+
485
+ -- CreateTable
486
+ CREATE TABLE "Transaction" (
487
+ "id" TEXT NOT NULL,
488
+ "userId" TEXT NOT NULL,
489
+ "orderId" TEXT NOT NULL,
490
+ "amount" INTEGER NOT NULL,
491
+ "status" "TransactionPaymentStatus" NOT NULL DEFAULT 'PENDING',
492
+ "providerId" TEXT,
493
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
494
+ "updatedAt" TIMESTAMP(3) NOT NULL,
495
+
496
+ CONSTRAINT "Transaction_pkey" PRIMARY KEY ("id")
497
+ );
498
+
499
+ -- CreateTable
500
+ CREATE TABLE "SupportChat" (
501
+ "id" TEXT NOT NULL,
502
+ "userId" TEXT,
503
+ "status" "SupportChatStatus" NOT NULL DEFAULT 'AI',
504
+ "priority" "SupportChatPriority" NOT NULL DEFAULT 'NORMAL',
505
+ "assignedToId" TEXT,
506
+ "closedAt" TIMESTAMP(3),
507
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
508
+ "updatedAt" TIMESTAMP(3) NOT NULL,
509
+
510
+ CONSTRAINT "SupportChat_pkey" PRIMARY KEY ("id")
511
+ );
512
+
513
+ -- CreateTable
514
+ CREATE TABLE "SupportMessage" (
515
+ "id" TEXT NOT NULL,
516
+ "chatId" TEXT NOT NULL,
517
+ "role" "SupportMessageRole" NOT NULL,
518
+ "content" TEXT NOT NULL,
519
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
520
+ "updatedAt" TIMESTAMP(3) NOT NULL,
521
+
522
+ CONSTRAINT "SupportMessage_pkey" PRIMARY KEY ("id")
523
+ );
524
+
525
+ -- CreateTable
526
+ CREATE TABLE "SupportAIContext" (
527
+ "id" TEXT NOT NULL,
528
+ "chatId" TEXT NOT NULL,
529
+ "lastPrompt" TEXT,
530
+ "confidence" DOUBLE PRECISION,
531
+ "model" TEXT,
532
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
533
+ "updatedAt" TIMESTAMP(3) NOT NULL,
534
+
535
+ CONSTRAINT "SupportAIContext_pkey" PRIMARY KEY ("id")
536
+ );
537
+
538
+ -- CreateTable
539
+ CREATE TABLE "SupportAttachment" (
540
+ "id" TEXT NOT NULL,
541
+ "messageId" TEXT NOT NULL,
542
+ "url" TEXT NOT NULL,
543
+ "urlId" TEXT NOT NULL,
544
+ "type" "SupportAttachmentType" NOT NULL,
545
+ "name" TEXT,
546
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
547
+ "updatedAt" TIMESTAMP(3) NOT NULL,
548
+
549
+ CONSTRAINT "SupportAttachment_pkey" PRIMARY KEY ("id")
550
+ );
551
+
552
+ -- CreateTable
553
+ CREATE TABLE "Report" (
554
+ "id" TEXT NOT NULL,
555
+ "year" INTEGER NOT NULL,
556
+ "month" INTEGER NOT NULL,
557
+ "ordersCount" INTEGER NOT NULL,
558
+ "revenue" INTEGER NOT NULL,
559
+ "avgOrderValue" INTEGER NOT NULL,
560
+ "paidOrdersCount" INTEGER NOT NULL,
561
+ "refundedAmount" INTEGER NOT NULL,
562
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
563
+ "updatedAt" TIMESTAMP(3) NOT NULL,
564
+
565
+ CONSTRAINT "Report_pkey" PRIMARY KEY ("id")
566
+ );
567
+
568
+ -- CreateIndex
569
+ CREATE UNIQUE INDEX "User_phone_role_key" ON "User"("phone", "role");
570
+
571
+ -- CreateIndex
572
+ CREATE UNIQUE INDEX "User_email_role_key" ON "User"("email", "role");
573
+
574
+ -- CreateIndex
575
+ CREATE UNIQUE INDEX "User_googleId_role_key" ON "User"("googleId", "role");
576
+
577
+ -- CreateIndex
578
+ CREATE UNIQUE INDEX "Session_expoPushToken_key" ON "Session"("expoPushToken");
579
+
580
+ -- CreateIndex
581
+ CREATE UNIQUE INDEX "Session_userId_fingerprint_key" ON "Session"("userId", "fingerprint");
582
+
583
+ -- CreateIndex
584
+ CREATE UNIQUE INDEX "Partner_userId_key" ON "Partner"("userId");
585
+
586
+ -- CreateIndex
587
+ CREATE INDEX "Verification_phone_idx" ON "Verification"("phone");
588
+
589
+ -- CreateIndex
590
+ CREATE INDEX "Address_userId_idx" ON "Address"("userId");
591
+
592
+ -- CreateIndex
593
+ CREATE UNIQUE INDEX "Product_slug_key" ON "Product"("slug");
594
+
595
+ -- CreateIndex
596
+ CREATE INDEX "Product_categoryId_idx" ON "Product"("categoryId");
597
+
598
+ -- CreateIndex
599
+ CREATE INDEX "Product_brandId_idx" ON "Product"("brandId");
600
+
601
+ -- CreateIndex
602
+ CREATE INDEX "Product_modelId_idx" ON "Product"("modelId");
603
+
604
+ -- CreateIndex
605
+ CREATE INDEX "Product_regionId_idx" ON "Product"("regionId");
606
+
607
+ -- CreateIndex
608
+ CREATE UNIQUE INDEX "ProductVariant_code_key" ON "ProductVariant"("code");
609
+
610
+ -- CreateIndex
611
+ CREATE INDEX "ProductVariant_code_idx" ON "ProductVariant"("code");
612
+
613
+ -- CreateIndex
614
+ CREATE INDEX "ProductVariant_productId_idx" ON "ProductVariant"("productId");
615
+
616
+ -- CreateIndex
617
+ CREATE INDEX "ProductPriceHistory_variantId_idx" ON "ProductPriceHistory"("variantId");
618
+
619
+ -- CreateIndex
620
+ CREATE INDEX "Review_productId_idx" ON "Review"("productId");
621
+
622
+ -- CreateIndex
623
+ CREATE INDEX "Category_parentId_idx" ON "Category"("parentId");
624
+
625
+ -- CreateIndex
626
+ CREATE UNIQUE INDEX "Category_parentKey_slug_key" ON "Category"("parentKey", "slug");
627
+
628
+ -- CreateIndex
629
+ CREATE UNIQUE INDEX "Brand_slug_key" ON "Brand"("slug");
630
+
631
+ -- CreateIndex
632
+ CREATE INDEX "Brand_slug_idx" ON "Brand"("slug");
633
+
634
+ -- CreateIndex
635
+ CREATE UNIQUE INDEX "Model_slug_key" ON "Model"("slug");
636
+
637
+ -- CreateIndex
638
+ CREATE INDEX "Model_slug_idx" ON "Model"("slug");
639
+
640
+ -- CreateIndex
641
+ CREATE INDEX "Model_brandId_idx" ON "Model"("brandId");
642
+
643
+ -- CreateIndex
644
+ CREATE UNIQUE INDEX "Model_name_brandId_key" ON "Model"("name", "brandId");
645
+
646
+ -- CreateIndex
647
+ CREATE INDEX "Image_productVariantId_idx" ON "Image"("productVariantId");
648
+
649
+ -- CreateIndex
650
+ CREATE INDEX "AttributeValue_attributeId_idx" ON "AttributeValue"("attributeId");
651
+
652
+ -- CreateIndex
653
+ CREATE UNIQUE INDEX "AttributeGroup_name_key" ON "AttributeGroup"("name");
654
+
655
+ -- CreateIndex
656
+ CREATE UNIQUE INDEX "Cart_userId_key" ON "Cart"("userId");
657
+
658
+ -- CreateIndex
659
+ CREATE INDEX "Cart_userId_idx" ON "Cart"("userId");
660
+
661
+ -- CreateIndex
662
+ CREATE UNIQUE INDEX "CartItem_cartId_productVariantId_key" ON "CartItem"("cartId", "productVariantId");
663
+
664
+ -- CreateIndex
665
+ CREATE INDEX "Order_userId_idx" ON "Order"("userId");
666
+
667
+ -- CreateIndex
668
+ CREATE INDEX "OrderItem_orderId_idx" ON "OrderItem"("orderId");
669
+
670
+ -- CreateIndex
671
+ CREATE INDEX "Notification_userId_idx" ON "Notification"("userId");
672
+
673
+ -- CreateIndex
674
+ CREATE UNIQUE INDEX "Transaction_orderId_key" ON "Transaction"("orderId");
675
+
676
+ -- CreateIndex
677
+ CREATE INDEX "SupportChat_userId_idx" ON "SupportChat"("userId");
678
+
679
+ -- CreateIndex
680
+ CREATE INDEX "SupportChat_status_idx" ON "SupportChat"("status");
681
+
682
+ -- CreateIndex
683
+ CREATE INDEX "SupportChat_assignedToId_idx" ON "SupportChat"("assignedToId");
684
+
685
+ -- CreateIndex
686
+ CREATE INDEX "SupportMessage_chatId_idx" ON "SupportMessage"("chatId");
687
+
688
+ -- CreateIndex
689
+ CREATE INDEX "SupportMessage_role_idx" ON "SupportMessage"("role");
690
+
691
+ -- CreateIndex
692
+ CREATE UNIQUE INDEX "SupportAIContext_chatId_key" ON "SupportAIContext"("chatId");
693
+
694
+ -- CreateIndex
695
+ CREATE INDEX "SupportAttachment_messageId_idx" ON "SupportAttachment"("messageId");
696
+
697
+ -- CreateIndex
698
+ CREATE INDEX "Report_year_idx" ON "Report"("year");
699
+
700
+ -- CreateIndex
701
+ CREATE UNIQUE INDEX "Report_year_month_key" ON "Report"("year", "month");
702
+
703
+ -- AddForeignKey
704
+ ALTER TABLE "User" ADD CONSTRAINT "User_regionId_fkey" FOREIGN KEY ("regionId") REFERENCES "Region"("id") ON DELETE SET NULL ON UPDATE CASCADE;
705
+
706
+ -- AddForeignKey
707
+ ALTER TABLE "Session" ADD CONSTRAINT "Session_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
708
+
709
+ -- AddForeignKey
710
+ ALTER TABLE "Partner" ADD CONSTRAINT "Partner_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
711
+
712
+ -- AddForeignKey
713
+ ALTER TABLE "Employee" ADD CONSTRAINT "Employee_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
714
+
715
+ -- AddForeignKey
716
+ ALTER TABLE "Verification" ADD CONSTRAINT "Verification_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE;
717
+
718
+ -- AddForeignKey
719
+ ALTER TABLE "Region" ADD CONSTRAINT "Region_parentId_fkey" FOREIGN KEY ("parentId") REFERENCES "Region"("id") ON DELETE CASCADE ON UPDATE CASCADE;
720
+
721
+ -- AddForeignKey
722
+ ALTER TABLE "Address" ADD CONSTRAINT "Address_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
723
+
724
+ -- AddForeignKey
725
+ ALTER TABLE "Address" ADD CONSTRAINT "Address_regionId_fkey" FOREIGN KEY ("regionId") REFERENCES "Region"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
726
+
727
+ -- AddForeignKey
728
+ ALTER TABLE "Product" ADD CONSTRAINT "Product_partnerId_fkey" FOREIGN KEY ("partnerId") REFERENCES "Partner"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
729
+
730
+ -- AddForeignKey
731
+ ALTER TABLE "Product" ADD CONSTRAINT "Product_categoryId_fkey" FOREIGN KEY ("categoryId") REFERENCES "Category"("id") ON DELETE SET NULL ON UPDATE CASCADE;
732
+
733
+ -- AddForeignKey
734
+ ALTER TABLE "Product" ADD CONSTRAINT "Product_brandId_fkey" FOREIGN KEY ("brandId") REFERENCES "Brand"("id") ON DELETE SET NULL ON UPDATE CASCADE;
735
+
736
+ -- AddForeignKey
737
+ ALTER TABLE "Product" ADD CONSTRAINT "Product_modelId_fkey" FOREIGN KEY ("modelId") REFERENCES "Model"("id") ON DELETE SET NULL ON UPDATE CASCADE;
738
+
739
+ -- AddForeignKey
740
+ ALTER TABLE "Product" ADD CONSTRAINT "Product_regionId_fkey" FOREIGN KEY ("regionId") REFERENCES "Region"("id") ON DELETE SET NULL ON UPDATE CASCADE;
741
+
742
+ -- AddForeignKey
743
+ ALTER TABLE "ProductVariant" ADD CONSTRAINT "ProductVariant_productId_fkey" FOREIGN KEY ("productId") REFERENCES "Product"("id") ON DELETE CASCADE ON UPDATE CASCADE;
744
+
745
+ -- AddForeignKey
746
+ ALTER TABLE "ProductVariant" ADD CONSTRAINT "ProductVariant_variantId_fkey" FOREIGN KEY ("variantId") REFERENCES "ProductVariant"("id") ON DELETE SET NULL ON UPDATE CASCADE;
747
+
748
+ -- AddForeignKey
749
+ ALTER TABLE "ProductPriceHistory" ADD CONSTRAINT "ProductPriceHistory_variantId_fkey" FOREIGN KEY ("variantId") REFERENCES "ProductVariant"("id") ON DELETE CASCADE ON UPDATE CASCADE;
750
+
751
+ -- AddForeignKey
752
+ ALTER TABLE "Review" ADD CONSTRAINT "Review_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
753
+
754
+ -- AddForeignKey
755
+ ALTER TABLE "Review" ADD CONSTRAINT "Review_productId_fkey" FOREIGN KEY ("productId") REFERENCES "Product"("id") ON DELETE CASCADE ON UPDATE CASCADE;
756
+
757
+ -- AddForeignKey
758
+ ALTER TABLE "Review" ADD CONSTRAINT "Review_productVariantId_fkey" FOREIGN KEY ("productVariantId") REFERENCES "ProductVariant"("id") ON DELETE SET NULL ON UPDATE CASCADE;
759
+
760
+ -- AddForeignKey
761
+ ALTER TABLE "Category" ADD CONSTRAINT "Category_parentId_fkey" FOREIGN KEY ("parentId") REFERENCES "Category"("id") ON DELETE CASCADE ON UPDATE CASCADE;
762
+
763
+ -- AddForeignKey
764
+ ALTER TABLE "Model" ADD CONSTRAINT "Model_brandId_fkey" FOREIGN KEY ("brandId") REFERENCES "Brand"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
765
+
766
+ -- AddForeignKey
767
+ ALTER TABLE "Image" ADD CONSTRAINT "Image_productVariantId_fkey" FOREIGN KEY ("productVariantId") REFERENCES "ProductVariant"("id") ON DELETE CASCADE ON UPDATE CASCADE;
768
+
769
+ -- AddForeignKey
770
+ ALTER TABLE "Attribute" ADD CONSTRAINT "Attribute_categoryId_fkey" FOREIGN KEY ("categoryId") REFERENCES "Category"("id") ON DELETE CASCADE ON UPDATE CASCADE;
771
+
772
+ -- AddForeignKey
773
+ ALTER TABLE "Attribute" ADD CONSTRAINT "Attribute_groupId_fkey" FOREIGN KEY ("groupId") REFERENCES "AttributeGroup"("id") ON DELETE SET NULL ON UPDATE CASCADE;
774
+
775
+ -- AddForeignKey
776
+ ALTER TABLE "AttributeValue" ADD CONSTRAINT "AttributeValue_attributeId_fkey" FOREIGN KEY ("attributeId") REFERENCES "Attribute"("id") ON DELETE CASCADE ON UPDATE CASCADE;
777
+
778
+ -- AddForeignKey
779
+ ALTER TABLE "ProductAttribute" ADD CONSTRAINT "ProductAttribute_attributeId_fkey" FOREIGN KEY ("attributeId") REFERENCES "Attribute"("id") ON DELETE CASCADE ON UPDATE CASCADE;
780
+
781
+ -- AddForeignKey
782
+ ALTER TABLE "ProductAttribute" ADD CONSTRAINT "ProductAttribute_attributeValueId_fkey" FOREIGN KEY ("attributeValueId") REFERENCES "AttributeValue"("id") ON DELETE CASCADE ON UPDATE CASCADE;
783
+
784
+ -- AddForeignKey
785
+ ALTER TABLE "ProductAttribute" ADD CONSTRAINT "ProductAttribute_productVariantId_fkey" FOREIGN KEY ("productVariantId") REFERENCES "ProductVariant"("id") ON DELETE CASCADE ON UPDATE CASCADE;
786
+
787
+ -- AddForeignKey
788
+ ALTER TABLE "Cart" ADD CONSTRAINT "Cart_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
789
+
790
+ -- AddForeignKey
791
+ ALTER TABLE "CartItem" ADD CONSTRAINT "CartItem_cartId_fkey" FOREIGN KEY ("cartId") REFERENCES "Cart"("id") ON DELETE CASCADE ON UPDATE CASCADE;
792
+
793
+ -- AddForeignKey
794
+ ALTER TABLE "CartItem" ADD CONSTRAINT "CartItem_productVariantId_fkey" FOREIGN KEY ("productVariantId") REFERENCES "ProductVariant"("id") ON DELETE CASCADE ON UPDATE CASCADE;
795
+
796
+ -- AddForeignKey
797
+ ALTER TABLE "Order" ADD CONSTRAINT "Order_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
798
+
799
+ -- AddForeignKey
800
+ ALTER TABLE "Order" ADD CONSTRAINT "Order_paymentMethodId_fkey" FOREIGN KEY ("paymentMethodId") REFERENCES "PaymentMethod"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
801
+
802
+ -- AddForeignKey
803
+ ALTER TABLE "Order" ADD CONSTRAINT "Order_addressId_fkey" FOREIGN KEY ("addressId") REFERENCES "Address"("id") ON DELETE SET NULL ON UPDATE CASCADE;
804
+
805
+ -- AddForeignKey
806
+ ALTER TABLE "OrderItem" ADD CONSTRAINT "OrderItem_orderId_fkey" FOREIGN KEY ("orderId") REFERENCES "Order"("id") ON DELETE CASCADE ON UPDATE CASCADE;
807
+
808
+ -- AddForeignKey
809
+ ALTER TABLE "OrderItem" ADD CONSTRAINT "OrderItem_productVariantId_fkey" FOREIGN KEY ("productVariantId") REFERENCES "ProductVariant"("id") ON DELETE SET NULL ON UPDATE CASCADE;
810
+
811
+ -- AddForeignKey
812
+ ALTER TABLE "Notification" ADD CONSTRAINT "Notification_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
813
+
814
+ -- AddForeignKey
815
+ ALTER TABLE "Transaction" ADD CONSTRAINT "Transaction_orderId_fkey" FOREIGN KEY ("orderId") REFERENCES "Order"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
816
+
817
+ -- AddForeignKey
818
+ ALTER TABLE "Transaction" ADD CONSTRAINT "Transaction_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
819
+
820
+ -- AddForeignKey
821
+ ALTER TABLE "SupportChat" ADD CONSTRAINT "SupportChat_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE;
822
+
823
+ -- AddForeignKey
824
+ ALTER TABLE "SupportChat" ADD CONSTRAINT "SupportChat_assignedToId_fkey" FOREIGN KEY ("assignedToId") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE;
825
+
826
+ -- AddForeignKey
827
+ ALTER TABLE "SupportMessage" ADD CONSTRAINT "SupportMessage_chatId_fkey" FOREIGN KEY ("chatId") REFERENCES "SupportChat"("id") ON DELETE CASCADE ON UPDATE CASCADE;
828
+
829
+ -- AddForeignKey
830
+ ALTER TABLE "SupportAIContext" ADD CONSTRAINT "SupportAIContext_chatId_fkey" FOREIGN KEY ("chatId") REFERENCES "SupportChat"("id") ON DELETE CASCADE ON UPDATE CASCADE;
831
+
832
+ -- AddForeignKey
833
+ ALTER TABLE "SupportAttachment" ADD CONSTRAINT "SupportAttachment_messageId_fkey" FOREIGN KEY ("messageId") REFERENCES "SupportMessage"("id") ON DELETE CASCADE ON UPDATE CASCADE;
@@ -0,0 +1,25 @@
1
+ /*
2
+ Warnings:
3
+
4
+ - You are about to drop the column `shopId` on the `Order` table. All the data in the column will be lost.
5
+ - The `status` column on the `Transaction` table would be dropped and recreated. This will lead to data loss if there is data in the column.
6
+
7
+ */
8
+ -- CreateEnum
9
+ CREATE TYPE "TransactionStatus" AS ENUM ('PENDING', 'SUCCESS', 'FAILED', 'CANCELED', 'REFUNDED');
10
+
11
+ -- DropForeignKey
12
+ ALTER TABLE "Order" DROP CONSTRAINT "Order_userId_fkey";
13
+
14
+ -- AlterTable
15
+ ALTER TABLE "Order" DROP COLUMN "shopId";
16
+
17
+ -- AlterTable
18
+ ALTER TABLE "Transaction" DROP COLUMN "status",
19
+ ADD COLUMN "status" "TransactionStatus" NOT NULL DEFAULT 'PENDING';
20
+
21
+ -- DropEnum
22
+ DROP TYPE "TransactionPaymentStatus";
23
+
24
+ -- AddForeignKey
25
+ ALTER TABLE "Order" ADD CONSTRAINT "Order_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
@@ -0,0 +1,2 @@
1
+ -- AlterTable
2
+ ALTER TABLE "User" ADD COLUMN "emailVerified" BOOLEAN NOT NULL DEFAULT false;
@@ -0,0 +1,25 @@
1
+ /*
2
+ Warnings:
3
+
4
+ - You are about to drop the column `full` on the `Address` table. All the data in the column will be lost.
5
+ - Added the required column `address` to the `Address` table without a default value. This is not possible if the table is not empty.
6
+ - Added the required column `fullname` to the `Address` table without a default value. This is not possible if the table is not empty.
7
+ - Added the required column `updatedAt` to the `Address` table without a default value. This is not possible if the table is not empty.
8
+
9
+ */
10
+ -- DropForeignKey
11
+ ALTER TABLE "Address" DROP CONSTRAINT "Address_regionId_fkey";
12
+
13
+ -- AlterTable
14
+ ALTER TABLE "Address" DROP COLUMN "full",
15
+ ADD COLUMN "address" TEXT NOT NULL,
16
+ ADD COLUMN "default" BOOLEAN NOT NULL DEFAULT false,
17
+ ADD COLUMN "fullname" TEXT NOT NULL,
18
+ ADD COLUMN "latitude" TEXT,
19
+ ADD COLUMN "longitude" TEXT,
20
+ ADD COLUMN "phone" TEXT,
21
+ ADD COLUMN "updatedAt" TIMESTAMP(3) NOT NULL,
22
+ ALTER COLUMN "regionId" DROP NOT NULL;
23
+
24
+ -- AddForeignKey
25
+ ALTER TABLE "Address" ADD CONSTRAINT "Address_regionId_fkey" FOREIGN KEY ("regionId") REFERENCES "Region"("id") ON DELETE SET NULL ON UPDATE CASCADE;
@@ -0,0 +1,47 @@
1
+ /*
2
+ Warnings:
3
+
4
+ - The values [PENDING,FAILED,CANCELED] on the enum `TransactionStatus` will be removed. If these variants are still used in the database, this will fail.
5
+
6
+ */
7
+ -- CreateEnum
8
+ CREATE TYPE "PaymentAttemptStatus" AS ENUM ('PENDING', 'FAILED', 'SUCCESS', 'CANCELED', 'REFUNDED');
9
+
10
+ -- AlterEnum
11
+ ALTER TYPE "PaymentMethodType" ADD VALUE 'WALLET';
12
+
13
+ -- AlterEnum
14
+ BEGIN;
15
+ CREATE TYPE "TransactionStatus_new" AS ENUM ('SUCCESS', 'REFUNDED');
16
+ ALTER TABLE "public"."Transaction" ALTER COLUMN "status" DROP DEFAULT;
17
+ ALTER TABLE "Transaction" ALTER COLUMN "status" TYPE "TransactionStatus_new" USING ("status"::text::"TransactionStatus_new");
18
+ ALTER TYPE "TransactionStatus" RENAME TO "TransactionStatus_old";
19
+ ALTER TYPE "TransactionStatus_new" RENAME TO "TransactionStatus";
20
+ DROP TYPE "public"."TransactionStatus_old";
21
+ ALTER TABLE "Transaction" ALTER COLUMN "status" SET DEFAULT 'SUCCESS';
22
+ COMMIT;
23
+
24
+ -- AlterTable
25
+ ALTER TABLE "Transaction" ADD COLUMN "provider" TEXT,
26
+ ALTER COLUMN "status" SET DEFAULT 'SUCCESS';
27
+
28
+ -- CreateTable
29
+ CREATE TABLE "PaymentAttempt" (
30
+ "id" TEXT NOT NULL,
31
+ "userId" TEXT NOT NULL,
32
+ "orderId" TEXT NOT NULL,
33
+ "amount" INTEGER NOT NULL,
34
+ "status" "PaymentAttemptStatus" NOT NULL DEFAULT 'PENDING',
35
+ "provider" TEXT,
36
+ "providerId" TEXT,
37
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
38
+ "updatedAt" TIMESTAMP(3) NOT NULL,
39
+
40
+ CONSTRAINT "PaymentAttempt_pkey" PRIMARY KEY ("id")
41
+ );
42
+
43
+ -- AddForeignKey
44
+ ALTER TABLE "PaymentAttempt" ADD CONSTRAINT "PaymentAttempt_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
45
+
46
+ -- AddForeignKey
47
+ ALTER TABLE "PaymentAttempt" ADD CONSTRAINT "PaymentAttempt_orderId_fkey" FOREIGN KEY ("orderId") REFERENCES "Order"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
@@ -0,0 +1,48 @@
1
+ /*
2
+ Warnings:
3
+
4
+ - A unique constraint covering the columns `[slug]` on the table `Category` will be added. If there are existing duplicate values, this will fail.
5
+ - A unique constraint covering the columns `[slug]` on the table `Region` will be added. If there are existing duplicate values, this will fail.
6
+
7
+ */
8
+ -- DropIndex
9
+ DROP INDEX "Brand_slug_idx";
10
+
11
+ -- DropIndex
12
+ DROP INDEX "Cart_userId_idx";
13
+
14
+ -- DropIndex
15
+ DROP INDEX "Category_parentId_idx";
16
+
17
+ -- DropIndex
18
+ DROP INDEX "Category_parentKey_slug_key";
19
+
20
+ -- DropIndex
21
+ DROP INDEX "Model_brandId_idx";
22
+
23
+ -- DropIndex
24
+ DROP INDEX "Model_slug_idx";
25
+
26
+ -- DropIndex
27
+ DROP INDEX "Report_year_idx";
28
+
29
+ -- DropIndex
30
+ DROP INDEX "SupportChat_assignedToId_idx";
31
+
32
+ -- DropIndex
33
+ DROP INDEX "SupportChat_status_idx";
34
+
35
+ -- DropIndex
36
+ DROP INDEX "SupportChat_userId_idx";
37
+
38
+ -- DropIndex
39
+ DROP INDEX "SupportMessage_chatId_idx";
40
+
41
+ -- DropIndex
42
+ DROP INDEX "SupportMessage_role_idx";
43
+
44
+ -- CreateIndex
45
+ CREATE UNIQUE INDEX "Category_slug_key" ON "Category"("slug");
46
+
47
+ -- CreateIndex
48
+ CREATE UNIQUE INDEX "Region_slug_key" ON "Region"("slug");
@@ -0,0 +1,37 @@
1
+ -- CreateEnum
2
+ CREATE TYPE "BannerPosition" AS ENUM ('MAIN', 'CATEGORY', 'PRODUCT', 'BRAND', 'SEARCH');
3
+
4
+ -- CreateEnum
5
+ CREATE TYPE "ApplicationStatus" AS ENUM ('NEW', 'IN_PROGRESS', 'COMPLETED', 'REJECTED');
6
+
7
+ -- CreateTable
8
+ CREATE TABLE "Banner" (
9
+ "id" TEXT NOT NULL,
10
+ "title" TEXT NOT NULL,
11
+ "message" TEXT NOT NULL,
12
+ "url" TEXT NOT NULL,
13
+ "position" "BannerPosition" NOT NULL DEFAULT 'MAIN',
14
+ "image" TEXT,
15
+ "imageId" TEXT,
16
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
17
+ "updatedAt" TIMESTAMP(3) NOT NULL,
18
+
19
+ CONSTRAINT "Banner_pkey" PRIMARY KEY ("id")
20
+ );
21
+
22
+ -- CreateTable
23
+ CREATE TABLE "Application" (
24
+ "id" TEXT NOT NULL,
25
+ "name" TEXT NOT NULL,
26
+ "phone" TEXT NOT NULL,
27
+ "message" TEXT,
28
+ "status" "ApplicationStatus" NOT NULL DEFAULT 'NEW',
29
+ "userId" TEXT,
30
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
31
+ "updatedAt" TIMESTAMP(3) NOT NULL,
32
+
33
+ CONSTRAINT "Application_pkey" PRIMARY KEY ("id")
34
+ );
35
+
36
+ -- AddForeignKey
37
+ ALTER TABLE "Application" ADD CONSTRAINT "Application_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE;
@@ -0,0 +1,10 @@
1
+ /*
2
+ Warnings:
3
+
4
+ - You are about to drop the column `message` on the `Banner` table. All the data in the column will be lost.
5
+ - Added the required column `description` to the `Banner` table without a default value. This is not possible if the table is not empty.
6
+
7
+ */
8
+ -- AlterTable
9
+ ALTER TABLE "Banner" DROP COLUMN "message",
10
+ ADD COLUMN "description" TEXT NOT NULL;
@@ -0,0 +1,3 @@
1
+ # Please do not edit this file manually
2
+ # It should be added in your version-control system (e.g., Git)
3
+ provider = "postgresql"
@@ -785,13 +785,13 @@ enum BannerPosition {
785
785
  }
786
786
 
787
787
  model Banner {
788
- id String @id @default(uuid(7))
789
- title String
790
- message String
791
- url String
792
- position BannerPosition @default(MAIN)
793
- image String?
794
- imageId String?
788
+ id String @id @default(uuid(7))
789
+ title String
790
+ description String
791
+ url String
792
+ position BannerPosition @default(MAIN)
793
+ image String?
794
+ imageId String?
795
795
 
796
796
  createdAt DateTime @default(now())
797
797
  updatedAt DateTime @updatedAt