Files
ZYZ/shared/db/Api.ts
2020-12-15 18:08:29 +08:00

44 lines
1.2 KiB
TypeScript

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<DocumentType<Api>, keyof Api>{}