react-native-flipper-databases
Version:
Flipper Databases plugin for React Native
122 lines (89 loc) • 4.07 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.DatabasesFlipperPlugin = void 0;
var _databasesManager = require("./databasesManager");
var _errors = require("./errors");
var _mappers = require("./mappers");
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
const DATABASE_LIST_COMMAND = 'databaseList';
const EXECUTE_COMMAND = 'execute';
const GET_TABLE_DATA_COMMAND = 'getTableData';
const GET_TABLE_INFO_COMMAND = 'getTableInfo';
const GET_TABLE_STRUCTURE_COMMAND = 'getTableStructure';
class DatabasesFlipperPlugin {
constructor(databaseDrivers) {
_defineProperty(this, "ID", 'Databases');
_defineProperty(this, "databasesManager", void 0);
this.databasesManager = new _databasesManager.DatabasesManager(databaseDrivers);
}
getId() {
return this.ID;
}
onConnect(connection) {
// Init DatabasesManager on connect
this.databasesManager.init(); // Attach command listeners
this.listenForCommands(connection);
}
onDisconnect() {// Nothing
}
runInBackground() {
return false;
}
listenForCommands(connection) {
connection.receive(DATABASE_LIST_COMMAND, async (_data, responder) => {
responder.success(await (0, _mappers.databaseListToFlipperArray)(await this.databasesManager.getDatabases()));
});
connection.receive(GET_TABLE_STRUCTURE_COMMAND, async (data, responder) => {
const req = (0, _mappers.flipperObjectToGetTableStructureRequest)(data);
if (!req) {
return responder.error((0, _errors.getInvalidRequestError)());
}
const tableStructure = await this.databasesManager.getTableStructure(req.databaseId, req.table);
if (!tableStructure) {
return responder.error((0, _errors.getInvalidDatabaseError)());
}
responder.success((0, _mappers.databaseGetTableStructureResponseToFlipperObject)(tableStructure));
});
connection.receive(GET_TABLE_DATA_COMMAND, async (data, responder) => {
const req = (0, _mappers.flipperObjectToGetTableDataRequest)(data);
if (!req) {
return responder.error((0, _errors.getInvalidRequestError)());
}
const tableData = await this.databasesManager.getTableData(req.databaseId, req.table, req.order, req.reverse, req.start, req.count);
if (!tableData) {
return responder.error((0, _errors.getInvalidDatabaseError)());
}
responder.success((0, _mappers.databaseGetTableDataReponseToFlipperObject)(tableData));
});
connection.receive(GET_TABLE_INFO_COMMAND, async (data, responder) => {
const req = (0, _mappers.flipperObjectToGetTableInfoRequest)(data);
if (!req) {
return responder.error((0, _errors.getInvalidRequestError)());
}
const tableInfo = await this.databasesManager.getTableInfo(req.databaseId, req.table);
if (!tableInfo) {
return responder.error((0, _errors.getInvalidDatabaseError)());
}
responder.success((0, _mappers.databaseGetTableInfoResponseToFlipperObject)(tableInfo));
});
connection.receive(EXECUTE_COMMAND, async (data, responder) => {
const executeSqlRequest = (0, _mappers.flipperObjectToExecuteSqlRequest)(data);
if (!executeSqlRequest) {
return responder.error((0, _errors.getInvalidRequestError)());
}
try {
const executeSqlResponse = await this.databasesManager.executeSql(executeSqlRequest.databaseId, executeSqlRequest.value);
if (!executeSqlResponse) {
return responder.error((0, _errors.getInvalidDatabaseError)());
}
responder.success((0, _mappers.databaseExecuteSqlResponseToFlipperObject)(executeSqlResponse));
} catch (err) {
return responder.error((0, _errors.getSqlExecutionError)(err));
}
});
}
}
exports.DatabasesFlipperPlugin = DatabasesFlipperPlugin;
//# sourceMappingURL=databasesFlipperPlugin.js.map