From 4d144bb1ac34b51fcf437316c72deb5bea4a219a Mon Sep 17 00:00:00 2001 From: Alberto Gonzalez Date: Thu, 22 Oct 2020 19:00:18 +0200 Subject: [PATCH 1/4] Replace SQLite with Couchbase Lite --- demo/app/App_Resources/Android/app.gradle | 2 +- .../recognizers/state/model.ts | 11 - .../recognizers/state/store.ts | 66 +++-- src/internal/persistence/plugin-db.ts | 35 --- src/package-lock.json | 230 ++---------------- src/package.json | 2 +- 6 files changed, 47 insertions(+), 299 deletions(-) delete mode 100644 src/internal/activity-recognition/recognizers/state/model.ts delete mode 100644 src/internal/persistence/plugin-db.ts diff --git a/demo/app/App_Resources/Android/app.gradle b/demo/app/App_Resources/Android/app.gradle index bb48421..ed24270 100644 --- a/demo/app/App_Resources/Android/app.gradle +++ b/demo/app/App_Resources/Android/app.gradle @@ -11,7 +11,7 @@ android { defaultConfig { - minSdkVersion 17 + minSdkVersion 19 generatedDensities = [] } aaptOptions { diff --git a/src/internal/activity-recognition/recognizers/state/model.ts b/src/internal/activity-recognition/recognizers/state/model.ts deleted file mode 100644 index 6b24fcb..0000000 --- a/src/internal/activity-recognition/recognizers/state/model.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { InanoSQLTableConfig } from "@nano-sql/core/lib/interfaces"; - -export const recognizersStateModel: InanoSQLTableConfig = { - name: "recognizers-state", - model: { - "id:string": { pk: true }, - "active:boolean": {}, - "startOptions:string": {}, - "lastActivity:string": {}, - }, -}; diff --git a/src/internal/activity-recognition/recognizers/state/store.ts b/src/internal/activity-recognition/recognizers/state/store.ts index f8e25b1..54fab8e 100644 --- a/src/internal/activity-recognition/recognizers/state/store.ts +++ b/src/internal/activity-recognition/recognizers/state/store.ts @@ -1,6 +1,5 @@ import { HumanActivity, Resolution, StartOptions } from "../../index"; -import { pluginDb } from "../../../persistence/plugin-db"; -import { recognizersStateModel } from "./model"; +import { Couchbase } from "nativescript-couchbase-plugin"; export interface RecognizerStateStore { isActive(recognizer: Resolution): Promise; @@ -17,8 +16,14 @@ export interface RecognizerStateStore { ): Promise; } +const DATABASE_NAME = "recognizers-state"; + class RecognizersStateStoreDb implements RecognizerStateStore { - private tableName = recognizersStateModel.name; + private database: Couchbase; + + constructor() { + this.database = new Couchbase(DATABASE_NAME); + } async isActive(recognizer: Resolution): Promise { const recognizerData = await this.getRecognizerData(recognizer); @@ -38,7 +43,7 @@ class RecognizersStateStoreDb implements RecognizerStateStore { if (!recognizerData) { return null; } - return JSON.parse(recognizerData.startOptions); + return recognizerData.startOptions; } async markAsActive( @@ -53,15 +58,12 @@ class RecognizersStateStoreDb implements RecognizerStateStore { } async getLastActivity(recognizer: Resolution): Promise { - const instance = await this.db(); - const rows = await instance - .query("select") - .where(["id", "=", recognizer]) - .exec(); - if (rows.length === 0) { + const recognizerData = this.database.getDocument(recognizer); + + if (!recognizerData) { return null; } - const lastActivity = rows[0].lastActivity; + const lastActivity = recognizerData.lastActivity; return lastActivity ? lastActivity : null; } @@ -73,11 +75,8 @@ class RecognizersStateStoreDb implements RecognizerStateStore { if (!isActive) { return null; } - const instance = await this.db(`${this.tableName}.lastActivity`); - await instance - .query("upsert", activity) - .where(["id", "=", recognizer]) - .exec(); + + this.database.updateDocument(recognizer, { lastActivity: activity }); } private async updateStatus( @@ -85,33 +84,28 @@ class RecognizersStateStoreDb implements RecognizerStateStore { active: boolean, startOptions: StartOptions = {} ) { - const instance = await this.db(); - await instance - .query("upsert", { - id: recognizer, - active, - startOptions: JSON.stringify(startOptions), - lastActivity: null, - }) - .exec(); + const newData = { + active, + startOptions, + lastActivity: null, + }; + + const prevData = await this.getRecognizerData(recognizer); + if (!prevData) { + this.database.createDocument(newData, recognizer); + return; + } + this.database.updateDocument(recognizer, newData); } private async getRecognizerData( recognizer: Resolution ): Promise<{ [key: string]: any }> { - const instance = await this.db(); - const rows = await instance - .query("select") - .where(["id", "=", recognizer]) - .exec(); - if (rows.length === 0) { + const recognizerData = this.database.getDocument(recognizer); + if (!recognizerData) { return null; } - return rows[0]; - } - - private db(tableName = this.tableName) { - return pluginDb.instance(tableName); + return recognizerData; } } diff --git a/src/internal/persistence/plugin-db.ts b/src/internal/persistence/plugin-db.ts deleted file mode 100644 index ed53e71..0000000 --- a/src/internal/persistence/plugin-db.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { NativeSQLite } from "@nano-sql/adapter-sqlite-nativescript"; -import { nSQL } from "@nano-sql/core/lib"; -import { recognizersStateModel } from "../activity-recognition/recognizers/state/model"; - -const dbName = "context-apis"; - -class PluginDb { - private dbInitialized: boolean = false; - private createDBProcedure: Promise; - - async createDB() { - if (this.dbInitialized) { - return; - } - if (!this.createDBProcedure) { - this.createDBProcedure = nSQL().createDatabase({ - id: dbName, - mode: new NativeSQLite(), - tables: [recognizersStateModel], - }); - } - await this.createDBProcedure; - this.dbInitialized = true; - } - - async instance(tableName: string) { - await this.createDB(); - if (nSQL().selectedDB !== dbName) { - nSQL().useDatabase(dbName); - } - return nSQL(tableName); - } -} - -export const pluginDb = new PluginDb(); diff --git a/src/package-lock.json b/src/package-lock.json index aa857c5..6b9662f 100644 --- a/src/package-lock.json +++ b/src/package-lock.json @@ -30,29 +30,6 @@ "js-tokens": "^4.0.0" } }, - "@nano-sql/adapter-sqlite-nativescript": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@nano-sql/adapter-sqlite-nativescript/-/adapter-sqlite-nativescript-2.0.3.tgz", - "integrity": "sha512-fiR9C55wXjqpUZipKH+0LCUO+d4k8W9JpfnlbGELbP/6sqsKAfzLb1aiUjf6kqLycX2wU1f9Zazt9ikJekyl0Q==", - "requires": { - "@nano-sql/core": "^2.3.2", - "nativescript-sqlite": "^2.3.3" - } - }, - "@nano-sql/core": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/@nano-sql/core/-/core-2.3.7.tgz", - "integrity": "sha512-B9nniPPRhPf5Hf2cyvy72SNEg4iKQEW6pig9nwrM4DJlmOMZudifOMPBoJuK6JcTaLATIOGRPkclfosNUALnLQ==", - "requires": { - "chalk": "^2.4.2", - "chokidar": "^3.0.2", - "command-line-args": "^5.1.1", - "fast-deep-equal": "^2.0.1", - "levenshtein-edit-distance": "^2.0.4", - "really-small-events": "^1.1.0", - "snap-db": "^1.1.1" - } - }, "@nativescript/core": { "version": "6.5.4", "resolved": "https://registry.npmjs.org/@nativescript/core/-/core-6.5.4.tgz", @@ -79,20 +56,11 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, "requires": { "color-convert": "^1.9.0" } }, - "anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", - "optional": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", @@ -102,12 +70,6 @@ "sprintf-js": "~1.0.2" } }, - "array-back": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", - "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", - "optional": true - }, "async": { "version": "0.9.2", "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", @@ -120,12 +82,6 @@ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, - "binary-extensions": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", - "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==", - "optional": true - }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -136,15 +92,6 @@ "concat-map": "0.0.1" } }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "optional": true, - "requires": { - "fill-range": "^7.0.1" - } - }, "builtin-modules": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", @@ -155,32 +102,18 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" } }, - "chokidar": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.0.tgz", - "integrity": "sha512-aXAaho2VJtisB/1fg1+3nlLJqGOuewTzQpd/Tz0yTg2R0e4IGtshYvtjowyEumcBv2z+y4+kc75Mz7j5xJskcQ==", - "optional": true, - "requires": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "fsevents": "~2.1.2", - "glob-parent": "~5.1.0", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.4.0" - } - }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, "requires": { "color-name": "1.1.3" } @@ -188,7 +121,8 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true }, "colors": { "version": "1.4.0", @@ -196,18 +130,6 @@ "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", "dev": true }, - "command-line-args": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.1.1.tgz", - "integrity": "sha512-hL/eG8lrll1Qy1ezvkant+trihbGnaKaeEjj6Scyr3DN+RC7iQ5Rz84IeLERfAWDGo0HBSNAakczwgCilDXnWg==", - "optional": true, - "requires": { - "array-back": "^3.0.1", - "find-replace": "^3.0.0", - "lodash.camelcase": "^4.3.0", - "typical": "^4.0.0" - } - }, "commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -257,7 +179,8 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true }, "esprima": { "version": "4.0.1", @@ -271,41 +194,12 @@ "integrity": "sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A=", "dev": true }, - "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "optional": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "find-replace": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", - "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", - "optional": true, - "requires": { - "array-back": "^3.0.1" - } - }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, - "fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", - "optional": true - }, "glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", @@ -320,19 +214,11 @@ "path-is-absolute": "^1.0.0" } }, - "glob-parent": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", - "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", - "optional": true, - "requires": { - "is-glob": "^4.0.1" - } - }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true }, "i": { "version": "0.3.6", @@ -356,36 +242,6 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "optional": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "optional": true - }, - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "optional": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "optional": true - }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", @@ -408,17 +264,6 @@ "esprima": "^4.0.0" } }, - "levenshtein-edit-distance": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/levenshtein-edit-distance/-/levenshtein-edit-distance-2.0.5.tgz", - "integrity": "sha512-Yuraz7QnMX/JENJU1HA6UtdsbhRzoSFnGpVGVryjQgHtl2s/YmVgmNYkVs5yzVZ9aAvQR9wPBUH3lG755ylxGA==" - }, - "lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", - "optional": true - }, "mdn-data": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.6.tgz", @@ -455,6 +300,11 @@ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true }, + "nativescript-couchbase-plugin": { + "version": "0.9.6", + "resolved": "https://registry.npmjs.org/nativescript-couchbase-plugin/-/nativescript-couchbase-plugin-0.9.6.tgz", + "integrity": "sha512-kMA9KHQX82TFaGnGUhY94KLOLss4pb5QmghgoEdu1sLwd94I/f1MQ+kHWbuBOdFmdQJw5oCK+Sey+A22Nd5jgA==" + }, "nativescript-geolocation": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/nativescript-geolocation/-/nativescript-geolocation-5.1.0.tgz", @@ -493,23 +343,12 @@ "resolved": "https://registry.npmjs.org/nativescript-permissions/-/nativescript-permissions-1.3.9.tgz", "integrity": "sha512-Xrt7uN/+nNMOsPziw17VQAgFe5oQX0klEqJVaoM6G7MQm5mgnySaHbVGlupcgNNib+rAgFlrmqTW0LlzuQxtIg==" }, - "nativescript-sqlite": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/nativescript-sqlite/-/nativescript-sqlite-2.6.3.tgz", - "integrity": "sha512-UkZdRTdX3KI3QXcLd4e/a0x1udXgF4egTYOYqPq3TKcTg6tlzjEesRPeL7F061d6MQVRol/i1szZErEMPr2BBw==" - }, "ncp": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/ncp/-/ncp-1.0.1.tgz", "integrity": "sha1-0VNn5cuHQyuhF9K/gP30Wuz7QkY=", "dev": true }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "optional": true - }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -531,12 +370,6 @@ "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", "dev": true }, - "picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", - "optional": true - }, "pkginfo": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.4.1.tgz", @@ -572,20 +405,6 @@ "mute-stream": "~0.0.4" } }, - "readdirp": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", - "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==", - "optional": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "really-small-events": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/really-small-events/-/really-small-events-1.1.0.tgz", - "integrity": "sha512-iyh4pULyDYBMecekEYcP3ToJD3ZUdIPfZV9nx1C1lJfMguElkDAZvEMJegy8uE7eIROCuLsqh5r44fVro9nKFg==" - }, "reduce-css-calc": { "version": "2.1.7", "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-2.1.7.tgz", @@ -634,11 +453,6 @@ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true }, - "snap-db": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/snap-db/-/snap-db-1.1.6.tgz", - "integrity": "sha512-KxsO5RnY70J48f6poy0qVm2WS8ZbqG0PUVP2fjd7dvlaCMZ/DxtDv5fhhIVwkP2lOmNQ9QsTFfDuCA7N+TF3qg==" - }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -661,6 +475,7 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, "requires": { "has-flag": "^3.0.0" } @@ -686,15 +501,6 @@ "integrity": "sha512-XLxBxT57yETubBIx+LNr8KrEou99k7FGr3RICz6TDNqP2b3ImtiIXoKxO93xhaLOAgfbNDYfuTqJIc/rP5sYYg==", "dev": true }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "optional": true, - "requires": { - "is-number": "^7.0.0" - } - }, "tslib": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", @@ -736,12 +542,6 @@ "integrity": "sha512-YycBxUb49UUhdNMU5aJ7z5Ej2XGmaIBL0x34vZ82fn3hGvD+bgrMrVDpatgz2f7YxUMJxMkbWxJZeAvDxVe7Vw==", "dev": true }, - "typical": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", - "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", - "optional": true - }, "utile": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/utile/-/utile-0.3.0.tgz", diff --git a/src/package.json b/src/package.json index 3ae983b..4cb3ca7 100644 --- a/src/package.json +++ b/src/package.json @@ -60,7 +60,7 @@ "semver": "^5.6.0" }, "dependencies": { - "@nano-sql/adapter-sqlite-nativescript": "^2.0.3", + "nativescript-couchbase-plugin": "^0.9.6", "nativescript-geolocation": "^5.1.0", "nativescript-permissions": "^1.3.9", "rxjs": "^6.5.5" From f4d2e91a63aeb11c345baa60a9672a3acb547d5e Mon Sep 17 00:00:00 2001 From: Alberto Gonzalez Date: Thu, 22 Oct 2020 19:03:21 +0200 Subject: [PATCH 2/4] Remove NanoSQL issue from README --- README.md | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/README.md b/README.md index 119f8f9..663781d 100644 --- a/README.md +++ b/README.md @@ -332,19 +332,6 @@ Before requesting user's current location some options can be customized in orde | acquireLocation(options: [AcquireOptions](#geolocation-acquire-options) | `Promise` | Allows to obtain user's current location | | locationStream(options: [StreamOptions](#geolocation-stream-options) | `Observable` | Allows to actively obtain user's location updates | -## Known issues - -### nanoSQL2 - -If your application depends on [nanoSQL 2](https://www.npmjs.com/package/@nano-sql/adapter-sqlite-nativescript) for data persistence, you should check which database is in use (and change it, if applicable) before running a query against your database. You can do it as follows: - -```ts -if (nSQL().selectedDB !== dbName) { - nSQL().useDatabase(dbName); -} -nSQL(tableName).query(...); -``` - ## Plugin authors From 503a2387759d64f3d7cafa88c3c82d1919c27367 Mon Sep 17 00:00:00 2001 From: Alberto Gonzalez Date: Mon, 26 Oct 2020 09:45:13 +0100 Subject: [PATCH 3/4] Future proof database with recog. state doc type --- src/internal/activity-recognition/recognizers/state/store.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/internal/activity-recognition/recognizers/state/store.ts b/src/internal/activity-recognition/recognizers/state/store.ts index 54fab8e..7ef0789 100644 --- a/src/internal/activity-recognition/recognizers/state/store.ts +++ b/src/internal/activity-recognition/recognizers/state/store.ts @@ -16,7 +16,8 @@ export interface RecognizerStateStore { ): Promise; } -const DATABASE_NAME = "recognizers-state"; +const DATABASE_NAME = "context-apis"; +const DOC_TYPE = "recognizer-state"; class RecognizersStateStoreDb implements RecognizerStateStore { private database: Couchbase; @@ -92,7 +93,7 @@ class RecognizersStateStoreDb implements RecognizerStateStore { const prevData = await this.getRecognizerData(recognizer); if (!prevData) { - this.database.createDocument(newData, recognizer); + this.database.createDocument({ type: DOC_TYPE, ...newData }, recognizer); return; } this.database.updateDocument(recognizer, newData); From d77fbc630bed9206e144f9990d07b937ee995cfa Mon Sep 17 00:00:00 2001 From: Alberto Gonzalez Date: Mon, 26 Oct 2020 13:11:05 +0100 Subject: [PATCH 4/4] Use a less generic name for document type property --- src/internal/activity-recognition/recognizers/state/store.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/internal/activity-recognition/recognizers/state/store.ts b/src/internal/activity-recognition/recognizers/state/store.ts index 7ef0789..7ee7f76 100644 --- a/src/internal/activity-recognition/recognizers/state/store.ts +++ b/src/internal/activity-recognition/recognizers/state/store.ts @@ -93,7 +93,10 @@ class RecognizersStateStoreDb implements RecognizerStateStore { const prevData = await this.getRecognizerData(recognizer); if (!prevData) { - this.database.createDocument({ type: DOC_TYPE, ...newData }, recognizer); + this.database.createDocument( + { docType: DOC_TYPE, ...newData }, + recognizer + ); return; } this.database.updateDocument(recognizer, newData);