Skip to content

Replace NanoSQL with Couchbase Lite #6

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
Oct 30, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 0 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -332,19 +332,6 @@ Before requesting user's current location some options can be customized in orde
| acquireLocation(options: [AcquireOptions](#geolocation-acquire-options) | `Promise<Geolocation>` | Allows to obtain user's current location |
| locationStream(options: [StreamOptions](#geolocation-stream-options) | `Observable<Geolocation>` | 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

<a href="https://github.com/agonper" title="Alberto González Pérez">
Expand Down
2 changes: 1 addition & 1 deletion demo/app/App_Resources/Android/app.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

android {
defaultConfig {
minSdkVersion 17
minSdkVersion 19
generatedDensities = []
}
aaptOptions {
Expand Down
11 changes: 0 additions & 11 deletions src/internal/activity-recognition/recognizers/state/model.ts

This file was deleted.

70 changes: 34 additions & 36 deletions src/internal/activity-recognition/recognizers/state/store.ts
Original file line number Diff line number Diff line change
@@ -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<boolean>;
Expand All @@ -17,8 +16,15 @@ export interface RecognizerStateStore {
): Promise<void>;
}

const DATABASE_NAME = "context-apis";
const DOC_TYPE = "recognizer-state";

class RecognizersStateStoreDb implements RecognizerStateStore {
private tableName = recognizersStateModel.name;
private database: Couchbase;

constructor() {
this.database = new Couchbase(DATABASE_NAME);
}

async isActive(recognizer: Resolution): Promise<boolean> {
const recognizerData = await this.getRecognizerData(recognizer);
Expand All @@ -38,7 +44,7 @@ class RecognizersStateStoreDb implements RecognizerStateStore {
if (!recognizerData) {
return null;
}
return JSON.parse(recognizerData.startOptions);
return recognizerData.startOptions;
}

async markAsActive(
Expand All @@ -53,15 +59,12 @@ class RecognizersStateStoreDb implements RecognizerStateStore {
}

async getLastActivity(recognizer: Resolution): Promise<HumanActivity> {
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;
}

Expand All @@ -73,45 +76,40 @@ 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(
recognizer: Resolution,
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(
{ docType: DOC_TYPE, ...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;
}
}

Expand Down
35 changes: 0 additions & 35 deletions src/internal/persistence/plugin-db.ts

This file was deleted.

Loading