|  | @@ -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;
 | 
	
		
			
				|  |  | +};
 |