UNPKG

react-native-flipper-databases

Version:

Flipper Databases plugin for React Native

78 lines (63 loc) 2.69 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.WatermelonDBDriver = void 0; var _watermelondb = require("@nozbe/watermelondb"); 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; } class WatermelonDBDriver { constructor(database) { this.database = database; _defineProperty(this, "databaseName", 'WatermelonDB'); } async getDatabases() { return [{ name: this.databaseName }]; } async getTableNames(_databaseDescriptor) { var _this$database; return Object.keys(((_this$database = this.database) === null || _this$database === void 0 ? void 0 : _this$database.schema.tables) ?? []); } async getTableStructure(_databaseDescriptor, table) { var _this$database2; const { columns } = (_this$database2 = this.database) === null || _this$database2 === void 0 ? void 0 : _this$database2.schema.tables[table]; const columnsDef = Object.keys(columns).map(k => [k, columns[k].type, columns[k].isIndexed, columns[k].isOptional]); return { structureColumns: ['name', 'type', 'isIndexed', 'isOptional'], structureValues: columnsDef, indexesColumns: ['name'], indexesValues: Object.keys(columns).filter(k => columns[k].isIndexed).map(k => [k]) }; } async getTableData(_databaseDescriptor, table, order, reverse, start, count) { const { columns } = this.database.schema.tables[table]; const allColumns = ['id', // All tables automatically have a string column id to uniquely identify records. ...Object.keys(columns), // All tables automatically have special columns for sync purposes '_status', '_changed', 'last_modified']; const collection = this.database.collections.get(table); const totalCount = await collection.query().fetchCount(); const results = await collection.query(_watermelondb.Q.sortBy(order ?? 'id', !reverse ? 'asc' : 'desc'), _watermelondb.Q.skip(start), _watermelondb.Q.take(count)).fetch(); return { columns: allColumns, values: results.map(row => allColumns.map(colName => row._raw[colName])), start, count: totalCount, total: results.length }; } async getTableInfo(_databaseDescriptor, table) { return { definition: JSON.stringify(this.database.schema.tables[table], null, 2) }; } async executeSql(_databaseDescriptor, _query) { return Promise.reject('Unsupported method'); } } exports.WatermelonDBDriver = WatermelonDBDriver; //# sourceMappingURL=watermelondb.js.map