baqend
Version:
Baqend JavaScript SDK
127 lines • 10.6 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
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());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.schema = exports.downloadSchema = exports.uploadSchema = void 0;
const path_1 = require("path");
const baqend_1 = require("baqend");
const inquirer_1 = __importDefault(require("inquirer"));
const account = __importStar(require("./account"));
const helper_1 = require("./helper");
const SCHEMA_FILE_PATH = './baqend/schema/';
function uploadSchema(db, force = false) {
return __awaiter(this, void 0, void 0, function* () {
let fileNames;
try {
fileNames = yield (0, helper_1.readDir)(SCHEMA_FILE_PATH);
}
catch (e) {
throw new Error('Your schema folder baqend is empty, no schema changes were deployed.');
}
const schemas = yield Promise.all(fileNames.map((fileName) => __awaiter(this, void 0, void 0, function* () {
const file = yield (0, helper_1.readFile)((0, path_1.join)(SCHEMA_FILE_PATH, fileName), 'utf-8');
return JSON.parse(file);
})));
if (force) {
const { answer } = yield inquirer_1.default.prompt([
{ type: 'confirm', name: 'answer', message: 'This will delete ALL your App data. Are you sure you want to continue?' },
]);
if (!answer) {
return false;
}
schemas.forEach((schemaDescriptor) => {
console.log(`Replacing ${schemaDescriptor.class.replace('/db/', '')} Schema`);
});
yield db.send(new baqend_1.message.ReplaceAllSchemas(schemas));
return true;
}
const acls = schemas.map((schemaDescriptor) => {
console.log(`Updating ${schemaDescriptor.class.replace('/db/', '')} Schema`);
return { operation: 'updateClassAcl', bucket: schemaDescriptor.class, acl: schemaDescriptor.acl };
});
try {
// We need to update acls separately, since they are not changed by an additive update
// Deploy schemas first to ensure all schemas exists
yield db.send(new baqend_1.message.UpdateAllSchemas(schemas));
yield db.send(new baqend_1.message.UpdateAllSchemas(acls));
return true;
}
catch (e) {
console.error(`Schema update failed with error: ${e.message}`);
return false;
}
});
}
exports.uploadSchema = uploadSchema;
function downloadSchema(db) {
return db.send(new baqend_1.message.GetAllSchemas()).then((res) => Promise.all(res.entity.map((schemaDescriptor) => {
const classname = schemaDescriptor.class.replace('/db/', '');
const filename = `baqend/schema/${classname}.json`;
if (!(0, helper_1.isNativeClassNamespace)(classname) && classname !== 'Object') {
return (0, helper_1.writeFile)(filename, JSON.stringify(schemaDescriptor, null, 2), 'utf-8').then(() => {
console.log(`Downloaded ${classname} Schema`);
});
}
return Promise.resolve();
})));
}
exports.downloadSchema = downloadSchema;
function schema(args) {
return account.login(args).then((db) => (0, helper_1.ensureDir)(SCHEMA_FILE_PATH).then(() => {
switch (args.command) {
case 'upload':
case 'deploy':
return uploadSchema(db, args.force).then((deployed) => {
console.log('---------------------------------------');
if (deployed) {
console.log(`The schema was successfully ${args.force ? 'replaced' : 'updated'}`);
}
else {
console.log('The schema update was aborted');
}
});
case 'download':
return downloadSchema(db).then(() => {
console.log('---------------------------------------');
console.log('Your schema was successfully downloaded');
});
default:
throw new Error(`Invalid command: "${args.command}". Please use one of ["deploy", "download"].`);
}
}));
}
exports.schema = schema;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0JBQXdDO0FBQ3hDLG1DQUFzRDtBQUN0RCx3REFBZ0M7QUFDaEMsbURBQXFDO0FBRXJDLHFDQUVrQjtBQUlsQixNQUFNLGdCQUFnQixHQUFHLGtCQUFrQixDQUFDO0FBTzVDLFNBQXNCLFlBQVksQ0FBQyxFQUFpQixFQUFFLFFBQWlCLEtBQUs7O1FBQzFFLElBQUksU0FBUyxDQUFDO1FBQ2QsSUFBSTtZQUNGLFNBQVMsR0FBRyxNQUFNLElBQUEsZ0JBQU8sRUFBQyxnQkFBZ0IsQ0FBQyxDQUFDO1NBQzdDO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixNQUFNLElBQUksS0FBSyxDQUFDLHNFQUFzRSxDQUFDLENBQUM7U0FDekY7UUFFRCxNQUFNLE9BQU8sR0FBYyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQzFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBTyxRQUFRLEVBQUUsRUFBRTtZQUMvQixNQUFNLElBQUksR0FBRyxNQUFNLElBQUEsaUJBQVEsRUFBQyxJQUFBLFdBQVEsRUFBQyxnQkFBZ0IsRUFBRSxRQUFRLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUMzRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFZLENBQUM7UUFDckMsQ0FBQyxDQUFBLENBQUMsQ0FDSCxDQUFDO1FBRUYsSUFBSSxLQUFLLEVBQUU7WUFDVCxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxrQkFBUSxDQUFDLE1BQU0sQ0FBQztnQkFDdkMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLHdFQUF3RSxFQUFFO2FBQ3ZILENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQ1gsT0FBTyxL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