69 lines
1.2 KiB
TypeScript
69 lines
1.2 KiB
TypeScript
|
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[];
|
||
|
wordcount: 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
|
||
|
}],
|
||
|
wordcount: {
|
||
|
type: Number,
|
||
|
default: 0
|
||
|
},
|
||
|
genre: {
|
||
|
type: String
|
||
|
},
|
||
|
cover: {
|
||
|
type: String,
|
||
|
default: ""
|
||
|
},
|
||
|
year: {
|
||
|
type: Number,
|
||
|
default: 0
|
||
|
},
|
||
|
author: {
|
||
|
type: Number,
|
||
|
ref: "User"
|
||
|
}
|
||
|
});
|
||
|
|
||
|
hasMigrated && biffnoschema.plugin(AutoIncrement, {start_seq: 1, id: "bif_id"});
|
||
|
export const Biffno: Model<IBiffno> = /* mongoose.models.Biffno || */ mongoose.model('Biffno', biffnoschema, 'biffno');
|