firebase-admin-ql
Version:
A powerful library that bridges Firebase Admin SDK with PostgreSQL, simplifies interaction with stored procedures, facilitates seamless third-party API calls using fetch, and provides utility functions to streamline backend operations.
62 lines • 2.91 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.PgBaseModel = void 0;
const postgres_config_1 = require("../config/postgres.config");
const utility_1 = require("../utility");
const firestore_db_1 = require("./firestore.db");
const v2_1 = require("firebase-functions/v2");
class PgBaseModel extends postgres_config_1.PgDatabase {
constructor(schema, procedure, order, dbInstance, firestoreDB) {
super(schema, dbInstance);
this.procedure = procedure;
this.order = order;
this.firestoreDB = firestoreDB;
}
call(dbData) {
return __awaiter(this, void 0, void 0, function* () {
try {
const { formData, backups } = dbData;
const pgForm = new utility_1.PgFormData(formData, this.order);
const returnValue = yield this.runStoredMethod(this.procedure, pgForm.values);
v2_1.logger.log("return value: ", returnValue);
if (returnValue.status === 'success' && backups) {
yield Promise.all(backups.map((pgBackup) => {
const { backupDb, whereKeys, dbLabel, firestorReference } = pgBackup;
return this.saveToFirestore(backupDb, dbLabel, returnValue.data, whereKeys, firestorReference);
}));
}
return returnValue;
}
catch (error) {
v2_1.logger.error('pg call error: ', error);
v2_1.logger.error('db data: ', dbData);
return {
status: 'error',
message: 'Unable to complete process'
};
}
});
}
saveToFirestore(backupDb, dbLabel, data, key, firestorReference) {
return __awaiter(this, void 0, void 0, function* () {
const fireDb = new firestore_db_1.FirebaseModel(backupDb, this.firestoreDB);
yield fireDb.doBackup({
whereKey: key,
returnData: data,
dbLabel,
reference: firestorReference
});
});
}
}
exports.PgBaseModel = PgBaseModel;
//# sourceMappingURL=postgres.db.js.map