DatabaseManager
Defined in: src/lib/db/manager.ts:159
Manages per-wallet WatermelonDB database instances.
Each wallet address gets its own isolated database. The manager handles:
- Singleton caching per wallet
- Automatic database switching when the wallet changes
- Destructive schema migration detection and handling
- Per-wallet storage key namespacing
Example
import { DatabaseManager, webPlatformStorage, sdkSchema, sdkMigrations } from '@reverbia/sdk/react';
import LokiJSAdapter from '@nozbe/watermelondb/adapters/lokijs';
const dbManager = new DatabaseManager({
dbNamePrefix: 'my-app',
createAdapter: (dbName, schema, migrations) => new LokiJSAdapter({
schema,
migrations,
dbName,
useWebWorker: false,
useIncrementalIndexedDB: true,
}),
storage: webPlatformStorage,
onDestructiveMigration: () => window.location.reload(),
});
// Get the database for the current wallet
const database = dbManager.getDatabase(walletAddress);Constructors
Constructor
new DatabaseManager(
options:DatabaseManagerOptions):DatabaseManager
Defined in: src/lib/db/manager.ts:170
Parameters
| Parameter | Type |
|---|---|
|
|
Returns
DatabaseManager
Methods
getDatabase()
getDatabase(
walletAddress?:string):Database
Defined in: src/lib/db/manager.ts:196
Get or create a WatermelonDB Database instance for the given wallet.
If the wallet address has changed since the last call, the previous database instance is discarded and a new one is created.
Parameters
| Parameter | Type | Description |
|---|---|---|
|
|
|
The wallet address to scope the database to. If undefined, uses a “guest” database. |
Returns
Database
The WatermelonDB Database instance
Throws
If a destructive migration is in progress
getDbName()
getDbName(
walletAddress?:string):string
Defined in: src/lib/db/manager.ts:181
Get the database name for a given wallet address.
Parameters
| Parameter | Type |
|---|---|
|
|
|
Returns
string
resetDatabase()
resetDatabase():
Promise<void>
Defined in: src/lib/db/manager.ts:239
Reset the current database (useful for logout or testing).
Returns
Promise<void>