Skip to content

Commit 5b3b468

Browse files
committed
[persisters] ExpoSqlitePersister
1 parent f44a226 commit 5b3b468

File tree

4 files changed

+61
-12
lines changed

4 files changed

+61
-12
lines changed

src/persisters/persister-expo-sqlite.ts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
1-
import {DatabasePersisterConfig, Persister} from '../types/persisters';
1+
import {
2+
ExpoSqlitePersister,
3+
createExpoSqlitePersister as createExpoSqlitePersisterDecl,
4+
} from '../types/persisters/persister-expo-sqlite';
25
import {ResultSet, SQLiteDatabase} from 'expo-sqlite';
36
import {UpdateListener, createSqlitePersister} from './sqlite/create';
7+
import {DatabasePersisterConfig} from '../types/persisters';
48
import {IdObj} from '../common/obj';
59
import {Store} from '../types/store';
6-
import {createExpoSqlitePersister as createExpoSqlitePersisterDecl} from '../types/persisters/persister-expo-sqlite';
710

811
type Subscription = {remove: () => void};
912

@@ -13,7 +16,7 @@ export const createExpoSqlitePersister = ((
1316
configOrStoreTableName?: DatabasePersisterConfig | string,
1417
onSqlCommand?: (sql: string, args?: any[]) => void,
1518
onIgnoredError?: (error: any) => void,
16-
): Persister =>
19+
): ExpoSqlitePersister =>
1720
createSqlitePersister(
1821
store,
1922
configOrStoreTableName,
@@ -25,4 +28,4 @@ export const createExpoSqlitePersister = ((
2528
onSqlCommand,
2629
onIgnoredError,
2730
db,
28-
)) as typeof createExpoSqlitePersisterDecl;
31+
) as ExpoSqlitePersister) as typeof createExpoSqlitePersisterDecl;

src/types/docs/persisters/persister-expo-sqlite.js

Lines changed: 39 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,39 @@
1111
* @since v4.0.3
1212
*/
1313
/// persister-expo-sqlite
14+
/**
15+
* The ExpoSqlitePersister interface is a minor extension to the Persister
16+
* interface.
17+
*
18+
* It simply provides an extra getDb method for accessing a reference to the
19+
* database instance the Store is being persisted to.
20+
* @since v4.3.14
21+
*/
22+
/// ExpoSqlitePersister
23+
{
24+
/**
25+
* The getDb method returns a reference to the database instance the Store is
26+
* being persisted to.
27+
* @returns A reference to the database instance.
28+
* @example
29+
* This example creates a Persister object against a newly-created Store and
30+
* then gets the database instance back out again.
31+
*
32+
* ```js yolo
33+
* const db = SQLite.openDatabase('my.db');
34+
* const store = createStore().setTables({pets: {fido: {species: 'dog'}}});
35+
* const persister = createExpoSqlitePersister(store, db, 'my_tinybase');
36+
*
37+
* console.log(persister.getDb() == db);
38+
* // -> true
39+
*
40+
* persister.destroy();
41+
* ```
42+
* @category Getter
43+
* @since v4.3.14
44+
*/
45+
/// ExpoSqlitePersister.getDb
46+
}
1447
/**
1548
* The createExpoSqlitePersister function creates a Persister object that can
1649
* persist the Store to a local Expo-SQLite database (in an appropriate React
@@ -45,11 +78,11 @@
4578
* @param onIgnoredError An optional handler for the errors that the Persister
4679
* would otherwise ignore when trying to save or load data. This is suitable for
4780
* debugging persistence issues in a development environment, since v4.0.4.
48-
* @returns A reference to the new Persister object.
81+
* @returns A reference to the new ExpoSqlitePersister object.
4982
* @example
50-
* This example creates a Persister object and persists the Store to a local
51-
* SQLite database as a JSON serialization into the `my_tinybase` table. It
52-
* makes a change to the database directly and then reloads it back into the
83+
* This example creates a ExpoSqlitePersister object and persists the Store to a
84+
* local SQLite database as a JSON serialization into the `my_tinybase` table.
85+
* It makes a change to the database directly and then reloads it back into the
5386
* Store.
5487
*
5588
* ```js yolo
@@ -81,8 +114,8 @@
81114
* persister.destroy();
82115
* ```
83116
* @example
84-
* This example creates a Persister object and persists the Store to a local
85-
* SQLite database with tabular mapping.
117+
* This example creates a ExpoSqlitePersister object and persists the Store to a
118+
* local SQLite database with tabular mapping.
86119
*
87120
* ```js yolo
88121
* const db = SQLite.openDatabase('my.db');

src/types/persisters/persister-expo-sqlite.d.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,17 @@ import {DatabasePersisterConfig, Persister} from '../persisters';
44
import {SQLiteDatabase} from 'expo-sqlite';
55
import {Store} from '../store';
66

7+
/// ExpoSqlitePersister
8+
export interface ExpoSqlitePersister extends Persister {
9+
/// ExpoSqlitePersister.getDb
10+
getDb: () => SQLiteDatabase;
11+
}
12+
713
/// createExpoSqlitePersister
814
export function createExpoSqlitePersister(
915
store: Store,
1016
db: SQLiteDatabase,
1117
configOrStoreTableName?: DatabasePersisterConfig | string,
1218
onSqlCommand?: (sql: string, args?: any[]) => void,
1319
onIgnoredError?: (error: any) => void,
14-
): Persister;
20+
): ExpoSqlitePersister;

src/types/with-schemas/persisters/persister-expo-sqlite.d.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,18 @@ import {DatabasePersisterConfig, Persister} from '../persisters';
44
import {OptionalSchemas, Store} from '../store';
55
import {SQLiteDatabase} from 'expo-sqlite';
66

7+
/// ExpoSqlitePersister
8+
export interface ExpoSqlitePersister<Schemas extends OptionalSchemas>
9+
extends Persister<Schemas> {
10+
/// ExpoSqlitePersister.getDb
11+
getDb: () => SQLiteDatabase;
12+
}
13+
714
/// createExpoSqlitePersister
815
export function createExpoSqlitePersister<Schemas extends OptionalSchemas>(
916
store: Store<Schemas>,
1017
db: SQLiteDatabase,
1118
configOrStoreTableName?: DatabasePersisterConfig<Schemas> | string,
1219
onSqlCommand?: (sql: string, args?: any[]) => void,
1320
onIgnoredError?: (error: any) => void,
14-
): Persister<Schemas>;
21+
): ExpoSqlitePersister<Schemas>;

0 commit comments

Comments
 (0)