22 lines
636 B
TypeScript
22 lines
636 B
TypeScript
import mongoose from 'mongoose';
|
|
|
|
const playlistNodeSchema = new mongoose.Schema({
|
|
name: { type: String, required: true },
|
|
type: { type: String, enum: ['folder', 'playlist'], default: 'playlist' },
|
|
tracks: [{ type: String, ref: 'Song', default: [] }],
|
|
children: [{ type: mongoose.Schema.Types.Mixed }], // This allows recursive structure
|
|
}, {
|
|
_id: true,
|
|
id: true,
|
|
timestamps: true,
|
|
toJSON: {
|
|
transform: function(doc, ret) {
|
|
ret.id = ret._id.toString();
|
|
delete ret._id;
|
|
delete ret.__v;
|
|
return ret;
|
|
}
|
|
}
|
|
});
|
|
|
|
export const PlaylistNode = mongoose.model('PlaylistNode', playlistNodeSchema);
|