react-native-flipper-databases
Version:
Flipper Databases plugin for React Native
68 lines (59 loc) • 2.07 kB
JavaScript
export class PouchDBDriver {
constructor(databases) {
this.databases = databases;
}
async getDatabases() {
return this.databases.map(db => ({
name: db.name,
database: db
}));
}
async getTableNames(databaseDescriptor) {
// Return database name as table names
return [databaseDescriptor.name];
}
async getTableStructure(_databaseDescriptor, _schema) {
return {
structureColumns: ['name', 'type'],
structureValues: [['_id', 'string'], ['doc', 'JSON'], ['attachments', 'JSON'], ['_rev', 'string'], ['deleted', 'boolean']],
indexesColumns: ['name', 'type'],
indexesValues: [['_id', 'string']]
};
}
async getTableData(databaseDescriptor, _schema, order, reverse, start, count) {
const pouch = databaseDescriptor.database;
const results = await pouch.allDocs({
include_docs: true,
attachments: true,
skip: start,
limit: count
}); // Sort results only on _id field
const sorted = order === '_id' ? results.rows.sort((a, b) => {
if (a.id > b.id) {
return reverse ? -1 : 1;
} else {
return reverse ? 1 : -1;
}
}) : results.rows;
return {
columns: ['_id', 'doc', 'attachments', '_rev', 'deleted'],
values: sorted.map(row => {
var _row$doc, _row$value;
return [row.id, JSON.stringify(row.doc), JSON.stringify(((_row$doc = row.doc) === null || _row$doc === void 0 ? void 0 : _row$doc._attachments) ?? []), row.value.rev, ((_row$value = row.value) === null || _row$value === void 0 ? void 0 : _row$value.deleted) ?? false];
}),
start,
count: results.rows.length,
total: results.total_rows
};
}
async getTableInfo(databaseDescriptor, _table) {
const databaseInfo = await databaseDescriptor.database.info();
return {
definition: JSON.stringify(databaseInfo, null, 2)
};
}
async executeSql(_databaseDescriptor, _query) {
return Promise.reject('Unsupported method');
}
} // IMPORTED TYPES
//# sourceMappingURL=pouchdb.js.map