react-native-flipper-databases
Version:
Flipper Databases plugin for React Native
216 lines (182 loc) • 4.7 kB
JavaScript
export async function databaseListToFlipperArray(databaseDescriptorHolderList) {
const databases = [];
for (const databaseDescriptorHolder of databaseDescriptorHolderList) {
const {
databaseDescriptor,
databaseDriver,
id
} = databaseDescriptorHolder;
const tableNameList = await databaseDriver.getTableNames(databaseDescriptor);
databases.push({
id,
name: databaseDescriptor.name,
tables: tableNameList.sort()
});
}
return databases;
}
export function flipperObjectToGetTableStructureRequest(params) {
const databaseId = params.databaseId;
const table = params.table;
if (databaseId <= 0 || !table) {
return null;
}
return {
databaseId,
table
};
}
export function databaseGetTableStructureResponseToFlipperObject(databaseGetTableStructureResponse) {
const structureColumns = databaseGetTableStructureResponse.structureColumns;
const indexesColumns = databaseGetTableStructureResponse.indexesColumns;
const structureValues = [];
for (const row of databaseGetTableStructureResponse.structureValues) {
const cols = [];
for (const item of row) {
cols.push(objectAndTypeToFlipperObject(item));
}
structureValues.push(cols);
}
const indexesValues = [];
for (const row of databaseGetTableStructureResponse.indexesValues) {
const cols = [];
for (const item of row) {
cols.push(objectAndTypeToFlipperObject(item));
}
indexesValues.push(cols);
}
return {
structureColumns,
structureValues,
indexesColumns,
indexesValues
};
}
export function flipperObjectToGetTableDataRequest(params) {
const databaseId = params.databaseId;
const table = params.table;
const reverse = params.reverse;
const order = params.order;
const start = params.start;
const count = params.count;
if (databaseId <= 0 || !table) {
return null;
}
return {
databaseId,
table,
order,
reverse,
start,
count
};
}
export function databaseGetTableDataReponseToFlipperObject(databaseGetTableDataResponse) {
const columns = [...databaseGetTableDataResponse.columns];
const rows = [];
for (const row of databaseGetTableDataResponse.values) {
const rowData = [];
for (const item of row) {
rowData.push(objectAndTypeToFlipperObject(item));
}
rows.push(rowData);
}
return {
columns,
values: rows,
start: databaseGetTableDataResponse.start,
count: databaseGetTableDataResponse.count,
total: databaseGetTableDataResponse.total
};
}
export function flipperObjectToGetTableInfoRequest(params) {
const databaseId = params.databaseId;
const table = params.table;
if (databaseId <= 0 || !table) {
return null;
}
return {
databaseId,
table
};
}
export function databaseGetTableInfoResponseToFlipperObject(databaseGetTableInfoResponse) {
return {
definition: databaseGetTableInfoResponse.definition
};
}
export function flipperObjectToExecuteSqlRequest(params) {
const databaseId = params.databaseId;
const value = params.value;
if (databaseId <= 0 || !value) {
return null;
}
return {
databaseId,
value
};
}
export function databaseExecuteSqlResponseToFlipperObject(databaseExecuteSqlResponse) {
const columns = [];
if (databaseExecuteSqlResponse.columns !== null) {
for (const columnName of databaseExecuteSqlResponse.columns) {
columns.push(columnName);
}
}
const rows = [];
if (databaseExecuteSqlResponse.values !== null) {
for (const row of databaseExecuteSqlResponse.values) {
const values = [];
for (const item of row) {
values.push(objectAndTypeToFlipperObject(item));
}
rows.push(values);
}
}
return {
type: databaseExecuteSqlResponse.type,
columns: columns,
values: rows,
insertedId: databaseExecuteSqlResponse.insertedId,
affectedCount: databaseExecuteSqlResponse.affectedCount
};
}
export function toErrorFlipperObject(code, message) {
return {
code,
message
};
} // PRIVATE
function objectAndTypeToFlipperObject(obj) {
if (obj === null || typeof obj === 'undefined') {
return {
type: 'null'
};
}
if (typeof obj === 'bigint') {
return {
type: 'integer',
value: obj
};
}
if (typeof obj === 'number') {
return {
type: 'float',
value: obj
};
}
if (typeof obj === 'string') {
return {
type: 'string',
value: obj
};
}
if (typeof obj === 'boolean') {
return {
type: 'boolean',
value: obj
};
}
throw new Error('type of Object is invalid');
}
//# sourceMappingURL=mappers.js.map