Kaynağa Gözat

Added station schema.

Kris 7 yıl önce
ebeveyn
işleme
015be0fcbc
3 değiştirilmiş dosya ile 38 ekleme ve 3 silme
  1. 2 1
      backend/app.js
  2. 2 2
      backend/schema.json
  3. 34 0
      backend/schemas/station.js

+ 2 - 1
backend/app.js

@@ -36,7 +36,8 @@ MongoDB.once('open', function() {
 });
 
 global.db = {
-	user: require('./schemas/user')(mongoose)
+	user: require('./schemas/user')(mongoose),
+	station: require('./schemas/station')(mongoose)
 };
 
 // setup express and socket.io

+ 2 - 2
backend/schema.json

@@ -1,7 +1,7 @@
 [
   // Station
   {
-    "id": "edm",
+    "_id": "edm",
     "type": "official",
     "displayName": "EDM",
     "description": "EDM Music",
@@ -114,4 +114,4 @@
     },
     "createdAt": 1472926465
   }
-]
+]

+ 34 - 0
backend/schemas/station.js

@@ -0,0 +1,34 @@
+module.exports = function(mongoose) {
+
+    var Schema = mongoose.Schema;
+
+    var stationSchema = new Schema({
+        _id: { type: String, lowercase: true, max: 16, min: 2, index: true, unique: true, required: true },
+		type: { type: String, enum: ["official", "community"], required: true},
+		displayName: { type: String, min: 2, max: 32, required: true },
+		description: { type: String, min: 2, max: 128, required: true },
+		privacy: { type: String, enum: ["public", "unlisted", "private"], required: true },
+		paused: { type: Boolean, default: false, required: true },
+		currentSong: {
+			startedAt: { type: Number, required: true },
+			id: { type: String, length: 11, 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 }]
+		},
+		timePaused: { type: Number, default: 0, required: true },
+		playlist: { type: String, required: true },
+		genres: [{ type: String }],
+		whitelist: [{ type: String }],
+		partyMode: { type: Boolean, default: false, required: true },
+		queueLocked: { type: Boolean, default: false, required: true },
+		owner: { type: String }
+    });
+
+    return mongoose.model('station', userSchema);
+};