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

const AutoIncrement = SequenceFactory(mongoose);

export interface IBiffno {
	_id: number;
	title: string;
	description: string;
	excerpt: string;
	bands: number[];
	tags: string[];
	words: number;
	genre: string;
	cover: string;
	year: number;
	author: PopulatedDoc<IUser & Document>;
}

const biffnoschema = new mongoose.Schema<IBiffno>({
	_id: {
		type: Number,
	},
	title: {
		type: String,
		default: "",
	},
	description: {
		type: String,
		default: "",
	},
	excerpt: {
		type: String,
		default: "",
	},
	bands: [
		{
			type: Number,
			ref: "Band",
		},
	],
	tags: [
		{
			type: String,
		},
	],
	words: {
		type: Number,
		default: 0,
	},
	genre: {
		type: String,
	},
	cover: {
		type: String,
		default: "",
	},
	year: {
		type: Number,
		default: 0,
	},
	author: {
		type: Number,
		ref: "User",
	},
});

hasMigrated &&
	!mongoose.models.Biffno &&
	biffnoschema.plugin(AutoIncrement, { start_seq: 1, id: "bif_id" });
export const Biffno: Model<IBiffno> =
	mongoose.models.Biffno || mongoose.model("Biffno", biffnoschema, "biffno");