@mathrunet/masamune
Version:
Manages packages for the server portion (NodeJS) of the Masamune framework.
60 lines • 2.05 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.FirestoreModelRefConverter = void 0;
const firestore_model_field_value_converter_1 = require("../firestore_model_field_value_converter");
const utils_1 = require("../../utils");
const firestore_1 = require("firebase-admin/firestore");
/**
* FirestoreConverter for [ModelRef].
*
* [ModelRef]用のFirestoreConverter。
*/
class FirestoreModelRefConverter extends firestore_model_field_value_converter_1.FirestoreModelFieldValueConverter {
/**
* FirestoreConverter for [ModelRef].
*
* [ModelRef]用のFirestoreConverter。
*/
constructor() {
super();
this.type = "ModelRefBase";
}
convertFrom(key, value, original) {
console.log(`${key} is ${typeof value}`);
if (value instanceof firestore_1.DocumentReference) {
return {
[key]: Object.assign({ "@ref": value.path }, this.header()),
};
}
else if (Array.isArray(value)) {
const res = [];
for (const tmp of value) {
if (tmp instanceof firestore_1.DocumentReference) {
res.push(Object.assign({ "@ref": tmp.path }, this.header()));
}
}
if (res.length > 0) {
return {
[key]: res,
};
}
}
else if ((0, utils_1.isDynamicMap)(value)) {
const res = {};
for (const k in value) {
const val = value[k];
if (val instanceof firestore_1.DocumentReference) {
res[k] = Object.assign({ "@ref": val.path }, this.header());
}
}
if (Object.keys(res).length > 0) {
return {
[key]: res,
};
}
}
return null;
}
}
exports.FirestoreModelRefConverter = FirestoreModelRefConverter;
//# sourceMappingURL=firestore_model_ref_converter.js.map