|
@@ -0,0 +1,33 @@
|
|
|
+module.exports = mongoose => {
|
|
|
+
|
|
|
+ var Schema = mongoose.Schema;
|
|
|
+
|
|
|
+ var songSchema = new Schema({
|
|
|
+ _id: { type: String, length: 11, index: true, unique: true, required: true },
|
|
|
+ title: { type: String, required: true },
|
|
|
+ artists: [{ type: String, min: 1 }],
|
|
|
+ duration: { type: Number, required: true },
|
|
|
+ skipDuration: { type: Number, required: true },
|
|
|
+ image: { type: String, required: true },
|
|
|
+ likes: { type: Number, required: true },
|
|
|
+ dislikes: { type: Number, required: true },
|
|
|
+ genres: [{ type: String }],
|
|
|
+ acceptedBy: { type: String, required: true },
|
|
|
+ acceptedAt: { type: Date, required: true },
|
|
|
+ requestedBy: { type: String, required: true },
|
|
|
+ requestedAt: { type: Date, required: true },
|
|
|
+ reports: [{
|
|
|
+ reportedBy: { type: String, required: true },
|
|
|
+ reportedAt: { type: Date, required: true },
|
|
|
+ reason: [{
|
|
|
+ type: { type: String, enum: ["title", "artist", "image", "duration", "video"], required: true },
|
|
|
+ message: { type: String, default: "" }
|
|
|
+ }],
|
|
|
+ resolved: { type: Boolean, required: true, default: false },
|
|
|
+ resolvedBy: { type: String },
|
|
|
+ resolvedAt: { type: String }
|
|
|
+ }]
|
|
|
+ });
|
|
|
+
|
|
|
+ return songSchema;
|
|
|
+};
|