import BaseModel from './BaseModel'; import { index, getModelForClass, prop, DocumentType } from '@typegoose/typegoose'; import { COUNTER } from './../consts'; import { CounterModel } from './Counter'; /** * 接口字段接口 */ @index({ apiId: 1 }) @index({ api: 1 }) export default class Api extends BaseModel { @prop({ required: true }) apiId: number; @prop({ required: true }) api: string; @prop({ required: true }) name: string; public static async getApi(api: string, lean = true) { let result: ApiType = await ApiModel.findOne({api}).select('apiId api name').lean(lean); return result; } public static async getAllApi(lean = true) { const api: ApiType[] = await ApiModel.find().sort({apiId: 1}).lean(lean); return api; } public static async createApi(api:string, name: string, lean = true) { const apiId = await CounterModel.getNewCounter(COUNTER.API); const result: ApiType = await ApiModel.findOneAndUpdate({apiId}, {$set:{api, name}}, {upsert: true, new: true}).lean(lean); return result; } } export const ApiModel = getModelForClass(Api); export interface ApiType extends Pick, keyof Api>{}