Skip to content

Commit 71bf353

Browse files
authored
Merge pull request #6 from GeoTecINIT/couchbase
Replace NanoSQL with Couchbase Lite
2 parents 92b2a15 + d77fbc6 commit 71bf353

File tree

7 files changed

+51
-312
lines changed

7 files changed

+51
-312
lines changed

README.md

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -332,19 +332,6 @@ Before requesting user's current location some options can be customized in orde
332332
| acquireLocation(options: [AcquireOptions](#geolocation-acquire-options) | `Promise<Geolocation>` | Allows to obtain user's current location |
333333
| locationStream(options: [StreamOptions](#geolocation-stream-options) | `Observable<Geolocation>` | Allows to actively obtain user's location updates |
334334

335-
## Known issues
336-
337-
### nanoSQL2
338-
339-
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:
340-
341-
```ts
342-
if (nSQL().selectedDB !== dbName) {
343-
nSQL().useDatabase(dbName);
344-
}
345-
nSQL(tableName).query(...);
346-
```
347-
348335
## Plugin authors
349336

350337
<a href="https://github.com/agonper" title="Alberto González Pérez">

demo/app/App_Resources/Android/app.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
android {
1313
defaultConfig {
14-
minSdkVersion 17
14+
minSdkVersion 19
1515
generatedDensities = []
1616
}
1717
aaptOptions {

src/internal/activity-recognition/recognizers/state/model.ts

Lines changed: 0 additions & 11 deletions
This file was deleted.

src/internal/activity-recognition/recognizers/state/store.ts

Lines changed: 34 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import { HumanActivity, Resolution, StartOptions } from "../../index";
2-
import { pluginDb } from "../../../persistence/plugin-db";
3-
import { recognizersStateModel } from "./model";
2+
import { Couchbase } from "nativescript-couchbase-plugin";
43

54
export interface RecognizerStateStore {
65
isActive(recognizer: Resolution): Promise<boolean>;
@@ -17,8 +16,15 @@ export interface RecognizerStateStore {
1716
): Promise<void>;
1817
}
1918

19+
const DATABASE_NAME = "context-apis";
20+
const DOC_TYPE = "recognizer-state";
21+
2022
class RecognizersStateStoreDb implements RecognizerStateStore {
21-
private tableName = recognizersStateModel.name;
23+
private database: Couchbase;
24+
25+
constructor() {
26+
this.database = new Couchbase(DATABASE_NAME);
27+
}
2228

2329
async isActive(recognizer: Resolution): Promise<boolean> {
2430
const recognizerData = await this.getRecognizerData(recognizer);
@@ -38,7 +44,7 @@ class RecognizersStateStoreDb implements RecognizerStateStore {
3844
if (!recognizerData) {
3945
return null;
4046
}
41-
return JSON.parse(recognizerData.startOptions);
47+
return recognizerData.startOptions;
4248
}
4349

4450
async markAsActive(
@@ -53,15 +59,12 @@ class RecognizersStateStoreDb implements RecognizerStateStore {
5359
}
5460

5561
async getLastActivity(recognizer: Resolution): Promise<HumanActivity> {
56-
const instance = await this.db();
57-
const rows = await instance
58-
.query("select")
59-
.where(["id", "=", recognizer])
60-
.exec();
61-
if (rows.length === 0) {
62+
const recognizerData = this.database.getDocument(recognizer);
63+
64+
if (!recognizerData) {
6265
return null;
6366
}
64-
const lastActivity = rows[0].lastActivity;
67+
const lastActivity = recognizerData.lastActivity;
6568
return lastActivity ? lastActivity : null;
6669
}
6770

@@ -73,45 +76,40 @@ class RecognizersStateStoreDb implements RecognizerStateStore {
7376
if (!isActive) {
7477
return null;
7578
}
76-
const instance = await this.db(`${this.tableName}.lastActivity`);
77-
await instance
78-
.query("upsert", activity)
79-
.where(["id", "=", recognizer])
80-
.exec();
79+
80+
this.database.updateDocument(recognizer, { lastActivity: activity });
8181
}
8282

8383
private async updateStatus(
8484
recognizer: Resolution,
8585
active: boolean,
8686
startOptions: StartOptions = {}
8787
) {
88-
const instance = await this.db();
89-
await instance
90-
.query("upsert", {
91-
id: recognizer,
92-
active,
93-
startOptions: JSON.stringify(startOptions),
94-
lastActivity: null,
95-
})
96-
.exec();
88+
const newData = {
89+
active,
90+
startOptions,
91+
lastActivity: null,
92+
};
93+
94+
const prevData = await this.getRecognizerData(recognizer);
95+
if (!prevData) {
96+
this.database.createDocument(
97+
{ docType: DOC_TYPE, ...newData },
98+
recognizer
99+
);
100+
return;
101+
}
102+
this.database.updateDocument(recognizer, newData);
97103
}
98104

99105
private async getRecognizerData(
100106
recognizer: Resolution
101107
): Promise<{ [key: string]: any }> {
102-
const instance = await this.db();
103-
const rows = await instance
104-
.query("select")
105-
.where(["id", "=", recognizer])
106-
.exec();
107-
if (rows.length === 0) {
108+
const recognizerData = this.database.getDocument(recognizer);
109+
if (!recognizerData) {
108110
return null;
109111
}
110-
return rows[0];
111-
}
112-
113-
private db(tableName = this.tableName) {
114-
return pluginDb.instance(tableName);
112+
return recognizerData;
115113
}
116114
}
117115

src/internal/persistence/plugin-db.ts

Lines changed: 0 additions & 35 deletions
This file was deleted.

0 commit comments

Comments
 (0)