import mongoose, {Schema, PopulatedDoc, Document, Model} from "mongoose"; import SequenceFactory from "mongoose-sequence"; const AutoIncrement = SequenceFactory(mongoose); import { Chapter, IChapter } from "./chapter"; import {IUser} from "../../models/user"; import { Ficmas, IFicmas } from "../../models/challenges/ficmas"; import { IChallenge, Challenge } from "../../models/challenges/gen"; import { hasMigrated } from "../../lib/dbconfig"; export interface IStory extends Document { _id?: number; title: string; author: PopulatedDoc; chapters: IChapter[] recs: number; favs: number; reviews: number; views: number; completed: boolean; challenge: PopulatedDoc | null; ficmas: PopulatedDoc | null; downloads: number; lastUpdate: Date; posted: Date; } const StorySchema = new mongoose.Schema({ _id: { type: Number }, title: { type: String }, author: { type: Number, ref: "User" }, chapters: [Chapter], recs: { type: Number, default: 0 }, favs: { type: Number, default: 0 }, reviews: { type: Number, default: 0 }, views: { type: Number, default: 0 }, completed: { type: Boolean, default: false }, challenge: { type: Number, ref: "Challenge", default: null }, ficmas: { type: Number, ref: "Ficmas", default: null }, downloads: { type: Number, default: 0 }, lastUpdate: { type: Date, default: new Date() }, posted: { type: Date, default: new Date() } }) hasMigrated && Chapter.plugin(AutoIncrement, {id: "chapterid", inc_field: "id"}) hasMigrated && StorySchema.plugin(AutoIncrement, {id: "storyid"}) export const Story: Model = /* mongoose.models.Story || */ mongoose.model("Story", StorySchema, "stories")