module.exports = {
	_id: { type: String, lowercase: true, maxlength: 16, minlength: 2, index: true, unique: true, required: true },
	type: { type: String, enum: ["official", "community"], required: true },
	displayName: { type: String, minlength: 2, maxlength: 32, required: true, unique: true },
	description: { type: String, minlength: 2, maxlength: 128, required: true },
	paused: { type: Boolean, default: false, required: true },
	currentSong: {
		_id: { type: String },
		title: { type: String },
		artists: [{ type: String }],
		duration: { type: Number },
		skipDuration: { type: Number },
		thumbnail: { type: String },
		likes: { type: Number, default: -1 },
		dislikes: { type: Number, default: -1 },
		skipVotes: [{ type: String }],
	},
	currentSongIndex: { type: Number, default: 0, required: true },
	timePaused: { type: Number, default: 0, required: true },
	pausedAt: { type: Number, default: 0, required: true },
	startedAt: { type: Number, default: 0, required: true },
	playlist: { type: Array },
	genres: [{ type: String }],
	blacklistedGenres: [{ type: String }],
	privacy: { type: String, enum: ["public", "unlisted", "private"], default: "private" },
	locked: { type: Boolean, default: false },
	queue: [{
		_id: { type: String, required: true },
		title: { type: String },
		artists: [{ type: String }],
		duration: { type: Number },
		skipDuration: { type: Number },
		thumbnail: { type: String },
		likes: { type: Number, default: -1 },
		dislikes: { type: Number, default: -1 },
		requestedBy: { type: String, required: true }
	}],
	owner: { type: String },
	privatePlaylist: { type: String },
	partyMode: { type: Boolean }
};