react-native-flipper-databases
Version:
Flipper Databases plugin for React Native
109 lines (83 loc) • 4.04 kB
JavaScript
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; }
import { DatabasesManager } from './databasesManager';
import { getInvalidDatabaseError, getInvalidRequestError, getSqlExecutionError } from './errors';
import { databaseExecuteSqlResponseToFlipperObject, databaseGetTableDataReponseToFlipperObject, databaseGetTableInfoResponseToFlipperObject, databaseGetTableStructureResponseToFlipperObject, databaseListToFlipperArray, flipperObjectToExecuteSqlRequest, flipperObjectToGetTableDataRequest, flipperObjectToGetTableInfoRequest, flipperObjectToGetTableStructureRequest } from './mappers';
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';
export class DatabasesFlipperPlugin {
constructor(databaseDrivers) {
_defineProperty(this, "ID", 'Databases');
_defineProperty(this, "databasesManager", void 0);
this.databasesManager = new 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 databaseListToFlipperArray(await this.databasesManager.getDatabases()));
});
connection.receive(GET_TABLE_STRUCTURE_COMMAND, async (data, responder) => {
const req = flipperObjectToGetTableStructureRequest(data);
if (!req) {
return responder.error(getInvalidRequestError());
}
const tableStructure = await this.databasesManager.getTableStructure(req.databaseId, req.table);
if (!tableStructure) {
return responder.error(getInvalidDatabaseError());
}
responder.success(databaseGetTableStructureResponseToFlipperObject(tableStructure));
});
connection.receive(GET_TABLE_DATA_COMMAND, async (data, responder) => {
const req = flipperObjectToGetTableDataRequest(data);
if (!req) {
return responder.error(getInvalidRequestError());
}
const tableData = await this.databasesManager.getTableData(req.databaseId, req.table, req.order, req.reverse, req.start, req.count);
if (!tableData) {
return responder.error(getInvalidDatabaseError());
}
responder.success(databaseGetTableDataReponseToFlipperObject(tableData));
});
connection.receive(GET_TABLE_INFO_COMMAND, async (data, responder) => {
const req = flipperObjectToGetTableInfoRequest(data);
if (!req) {
return responder.error(getInvalidRequestError());
}
const tableInfo = await this.databasesManager.getTableInfo(req.databaseId, req.table);
if (!tableInfo) {
return responder.error(getInvalidDatabaseError());
}
responder.success(databaseGetTableInfoResponseToFlipperObject(tableInfo));
});
connection.receive(EXECUTE_COMMAND, async (data, responder) => {
const executeSqlRequest = flipperObjectToExecuteSqlRequest(data);
if (!executeSqlRequest) {
return responder.error(getInvalidRequestError());
}
try {
const executeSqlResponse = await this.databasesManager.executeSql(executeSqlRequest.databaseId, executeSqlRequest.value);
if (!executeSqlResponse) {
return responder.error(getInvalidDatabaseError());
}
responder.success(databaseExecuteSqlResponseToFlipperObject(executeSqlResponse));
} catch (err) {
return responder.error(getSqlExecutionError(err));
}
});
}
}
//# sourceMappingURL=databasesFlipperPlugin.js.map