@intuitionrobotics/db-api-generator
Version:
68 lines • 2.62 kB
JavaScript
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