UNPKG

@intuitionrobotics/db-api-generator

Version:
68 lines 2.62 kB
import { BaseDB_ApiGenerator } from "./BaseDB_ApiGenerator.js"; import {} from "@intuitionrobotics/thunderstorm"; import { DefaultApiDefs } from "../index.js"; import {} from "@intuitionrobotics/firebase"; import { ApiResponse, ServerApi } from "@intuitionrobotics/thunderstorm/backend"; import { addItemToArray } from "@intuitionrobotics/ts-common"; export function resolveUrlPart(dbModule, pathPart, pathSuffix) { return `${!pathPart ? dbModule.getItemName() : pathPart}${pathSuffix ? "/" + pathSuffix : ""}`; } export class GenericServerApi extends ServerApi { dbModule; postProcessors = []; constructor(dbModule, def, pathPart) { super(def.method, resolveUrlPart(dbModule, pathPart, def.suffix)); this.dbModule = dbModule; } addPostProcessor(processor) { addItemToArray(this.postProcessors, processor); } } export class ServerApi_Create extends GenericServerApi { constructor(dbModule, pathPart) { super(dbModule, DefaultApiDefs.Create, pathPart); } async process(request, response, queryParams, body) { let toRet = await this.dbModule.upsert(body, undefined, request); for (const postProcessor of this.postProcessors) { toRet = await postProcessor(toRet); } return toRet; } } export class ServerApi_Update extends GenericServerApi { constructor(dbModule, pathPart) { super(dbModule, DefaultApiDefs.Update, pathPart); } async process(request, response, queryParams, body) { return this.dbModule.patch(body, undefined, request); } } export class ServerApi_Unique extends GenericServerApi { constructor(dbModule, pathPart) { super(dbModule, DefaultApiDefs.Unique, pathPart); } async process(request, response, queryParams, _body) { return this.dbModule.queryUnique(queryParams, request); } } export class ServerApi_Query extends GenericServerApi { constructor(dbModule, pathPart) { super(dbModule, DefaultApiDefs.Query, pathPart); } async process(request, response, queryParams, _body) { // for (const postProcessor of this.postProcessors) { // queries = await postProcessor(); // } return this.dbModule.query({ where: _body }, request); } } export class ServerApi_Delete extends GenericServerApi { constructor(dbModule, pathPart) { super(dbModule, DefaultApiDefs.Delete, pathPart); } async process(request, response, queryParams, _body) { return this.dbModule.deleteUnique(queryParams._id, undefined, request); } } //# sourceMappingURL=apis.js.map