import BaseModel from './BaseModel'; import { index, getModelForClass, prop, DocumentType, mongoose, ReturnModelType } 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 let ApiModel: ReturnModelType = getModelForClass(Api); export function loadApiModel(connect: mongoose.Connection) { ApiModel = getModelForClass(Api, { existingConnection: connect }); } export interface ApiType extends Pick, keyof Api> { }