import mongoose, { Schema, PopulatedDoc, Document, Model } from "mongoose";
import SequenceFactory from "mongoose-sequence";
import { hasMigrated } from "~/lib/dbconfig";

const AutoIncrement = SequenceFactory(mongoose);

export interface IChallenge {
	_id: number;
	name: string;
	description: string;
	deadline: Date;
	active: boolean;
	color: string;
	allowMultiple: boolean;
}

const challengeSchema = new mongoose.Schema<IChallenge>({
	_id: {
		type: Number,
	},
	name: {
		type: String,
		required: true,
	},
	description: {
		type: String,
		required: true,
	},
	deadline: {
		type: Date,
		required: true,
	},
	active: {
		type: Boolean,
		default: true,
	},
	color: {
		type: String,
		required: true,
		default: `#${Math.floor(Math.random() * 16777215).toString(16)}`,
	},
	allowMultiple: {
		type: Boolean,
		default: true,
	},
});

hasMigrated && challengeSchema.plugin(AutoIncrement, { id: "challenges" });
export const Challenge: Model<IChallenge> =
	mongoose.models.Challenge ||
	mongoose.model("Challenge", challengeSchema, "challenges");
