Răsfoiți Sursa

Merge branch 'feature/menu-and-recommendedProduct-table-feature' into develop

BedirhanOZCAN 1 lună în urmă
părinte
comite
71380368d3
3 a modificat fișierele cu 133 adăugiri și 27 ștergeri
  1. 56 0
      src/models/Menu.ts
  2. 45 0
      src/models/RecommendedProduct.ts
  3. 32 27
      src/models/User.ts

+ 56 - 0
src/models/Menu.ts

@@ -0,0 +1,56 @@
+import mongoose, {
+    Document,
+    Schema
+} from "mongoose";
+
+export interface IMenu extends Document {
+    userID: mongoose.Types.ObjectId;
+    title: string;
+    description?: string;
+    isActive?: boolean;
+    products: Array<{
+        productID: mongoose.Types.ObjectId;
+        isViewPrice: boolean;
+    }>;
+    isViewPrice: boolean;
+    createdAt: Date;
+    updatedAt: Date;
+}
+
+const menuSchema = new Schema<IMenu>(
+    {
+        userID: {
+            type: Schema.Types.ObjectId,
+            ref: "User", // TODO aggregate fonk kullanılacak ref değil
+        },
+        title: {
+            type: String,
+        },
+        description: {
+            type: String,
+        },
+        isActive: {
+            type: Boolean,
+            default: true
+        },
+        products: [
+            {
+                productID: {
+                    type: Schema.Types.ObjectId,
+                    ref: "Product", // TODO ilerde product servis buna göre düzenlenecek aggregate fonskiyonu kullanılacak ref değil
+                },
+                isViewPrice: {
+                    type: Boolean,
+                }
+            }
+        ],
+        isViewPrice: {
+            type: Boolean,
+        }
+    },
+    {
+        timestamps: true
+    }
+);
+
+export const Menu = mongoose.model<IMenu>("Menu", menuSchema);

+ 45 - 0
src/models/RecommendedProduct.ts

@@ -0,0 +1,45 @@
+import mongoose, {
+    Document, Schema
+} from "mongoose";
+
+export interface IRecommendedProduct extends Document {
+    userID: mongoose.Types.ObjectId;
+    productID: mongoose.Types.ObjectId;
+    description?: string;
+    isActive: boolean;
+    createdAt: Date;
+    updatedAt: Date;
+    title: string;
+    delay: number;
+}
+
+const recommendedProductSchema = new Schema<IRecommendedProduct>(
+    {
+        userID: {
+            type: Schema.Types.ObjectId,
+            ref: "User", // TODO aggregate fonk kullanılacak ref değil
+        },
+        productID: {
+            type: Schema.Types.ObjectId,
+            ref: "Product", // TODO aggregate fonk kullanılacak ref değil
+        },
+        title: {
+            type: String,
+        },
+        description: {
+            type: String,
+        },
+        delay: {
+            type: Number,
+        },
+        isActive: {
+            type: Boolean,
+            default: true
+        }
+    },
+    {
+        timestamps: true
+    }
+);
+
+export const RecommendedProduct = mongoose.model<IRecommendedProduct>("RecommendedProduct", recommendedProductSchema);

+ 32 - 27
src/models/User.ts

@@ -1,6 +1,6 @@
 import mongoose, {
     Document,
-    Schema 
+    Schema
 } from "mongoose";
 
 export interface IUser extends Document {
@@ -11,36 +11,37 @@ export interface IUser extends Document {
     refreshToken?: string;
     companyName: string;
     phoneNumber: string;
+    isApproved: boolean;
     isDeleted: boolean;
-    firstName: string;
     isActive: boolean;
+    firstName: string;
     fullName: string;
     lastName: string;
     password: string;
     createdAt: Date;
     updatedAt: Date;
-    mail: string;
     slug: string;
+    mail: string;
 }
 
 const UserSchema = new Schema<IUser>(
     {
         fullName: {
             required: true,
-            type: String, 
-            trim: true 
+            type: String,
+            trim: true
         },
         firstName: {
-            type: String, 
-            trim: true 
+            type: String,
+            trim: true
         },
         lastName: {
-            type: String, 
-            trim: true 
+            type: String,
+            trim: true
         },
         companyName: {
-            type: String, 
-            trim: true 
+            type: String,
+            trim: true
         },
         slug: {
             required: true,
@@ -49,9 +50,9 @@ const UserSchema = new Schema<IUser>(
             trim: true
         },
         mail: {
-            lowercase: true, 
-            type: String, 
-            unique: true, 
+            lowercase: true,
+            type: String,
+            unique: true,
             trim: true
         },
         phoneNumber: {
@@ -61,36 +62,40 @@ const UserSchema = new Schema<IUser>(
         },
         password: {
             type: String,
-            trim: true 
+            trim: true
         },
         isActive: {
-            type: Boolean, 
-            default: true 
+            type: Boolean,
+            default: true
         },
-        isDeleted: {
-            type: Boolean, 
-            default: false 
+        isApproved: {
+            type: Boolean,
+            default: false
         },
         isMailVerified: {
-            type: Boolean, 
-            default: false 
+            type: Boolean,
+            default: false
         },
         isPhoneVerified: {
-            type: Boolean, 
-            default: false 
+            type: Boolean,
+            default: false
+        },
+        isDeleted: {
+            type: Boolean,
+            default: false
         },
         refreshToken: {
-            type: String 
+            type: String
         },
         deleteAccountDate: {
-            type: Date 
+            type: Date
         },
         coverPhotoPath: {
             type: String
         }
     },
     {
-        timestamps: true 
+        timestamps: true
     }
 );