nanodb-orm 0.0.5 → 0.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +134 -4
- package/dist/core/connection.d.ts +8 -0
- package/dist/core/connection.d.ts.map +1 -1
- package/dist/core/connection.js +14 -0
- package/dist/core/connection.js.map +1 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -2
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts +7 -0
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +17 -15
- package/dist/init.js.map +1 -1
- package/dist/replicas.d.ts +28 -0
- package/dist/replicas.d.ts.map +1 -0
- package/dist/replicas.js +84 -0
- package/dist/replicas.js.map +1 -0
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +2 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/migrations.d.ts +12 -5
- package/dist/utils/migrations.d.ts.map +1 -1
- package/dist/utils/migrations.js +125 -19
- package/dist/utils/migrations.js.map +1 -1
- package/dist/utils/schema-introspection.d.ts +8 -1
- package/dist/utils/schema-introspection.d.ts.map +1 -1
- package/dist/utils/schema-introspection.js +2 -2
- package/dist/utils/schema-introspection.js.map +1 -1
- package/dist/utils/seeds.d.ts +11 -4
- package/dist/utils/seeds.d.ts.map +1 -1
- package/dist/utils/seeds.js +10 -10
- package/dist/utils/seeds.js.map +1 -1
- package/dist/utils/sync.d.ts +16 -6
- package/dist/utils/sync.d.ts.map +1 -1
- package/dist/utils/sync.js +15 -15
- package/dist/utils/sync.js.map +1 -1
- package/dist/utils/transactions.d.ts +27 -0
- package/dist/utils/transactions.d.ts.map +1 -1
- package/dist/utils/transactions.js +71 -0
- package/dist/utils/transactions.js.map +1 -1
- package/package.json +21 -9
package/LICENSE
CHANGED
package/README.md
CHANGED
|
@@ -17,11 +17,19 @@ A lightweight ORM wrapper for Drizzle ORM with automatic migrations, schema intr
|
|
|
17
17
|
|
|
18
18
|
```bash
|
|
19
19
|
npm install nanodb-orm
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
> **Important:** All interactions should go through `nanodb-orm`.
|
|
23
|
+
> Use `nanodb-orm` exports for schema, queries, and utilities instead of importing from Drizzle directly.
|
|
20
24
|
|
|
21
|
-
|
|
22
|
-
|
|
25
|
+
Optional plugins:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
npm install @nanodb-orm/plugin-timestamps @nanodb-orm/plugin-soft-delete @nanodb-orm/plugin-logger
|
|
23
29
|
```
|
|
24
30
|
|
|
31
|
+
Preview features: embedded replicas (opt-in via config switch).
|
|
32
|
+
|
|
25
33
|
## CLI
|
|
26
34
|
|
|
27
35
|
nanodb-orm includes a CLI for common database operations:
|
|
@@ -236,6 +244,64 @@ await db.migrations.validate(); // Validate schema vs DB
|
|
|
236
244
|
await db.migrations.checkTables(); // { users: true, posts: true }
|
|
237
245
|
```
|
|
238
246
|
|
|
247
|
+
### Data-Preserving Auto Migrations
|
|
248
|
+
|
|
249
|
+
nanodb-orm automatically migrates your schema while **preserving existing data**. When you change your schema (add/remove columns, change types), the migration:
|
|
250
|
+
|
|
251
|
+
1. Creates a temporary table with the new schema
|
|
252
|
+
2. Copies data from matching columns
|
|
253
|
+
3. Drops the old table
|
|
254
|
+
4. Renames the temp table
|
|
255
|
+
|
|
256
|
+
```typescript
|
|
257
|
+
const db = await createDatabase({
|
|
258
|
+
tables: { users, posts },
|
|
259
|
+
migrationConfig: {
|
|
260
|
+
autoMigrate: true, // Enable automatic migrations (default: true)
|
|
261
|
+
preserveData: true, // Preserve existing data during migration (default: true)
|
|
262
|
+
dropTables: false, // Allow destructive drop & recreate (default: false)
|
|
263
|
+
},
|
|
264
|
+
});
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
#### Migration Config Options
|
|
268
|
+
|
|
269
|
+
| Option | Default | Description |
|
|
270
|
+
|--------|---------|-------------|
|
|
271
|
+
| `autoMigrate` | `true` | Master switch - enables/disables automatic schema changes |
|
|
272
|
+
| `preserveData` | `true` | Copy existing data to new schema during migration |
|
|
273
|
+
| `dropTables` | `false` | Allow destructive operations (bypasses data preservation) |
|
|
274
|
+
|
|
275
|
+
#### How Column Changes Work
|
|
276
|
+
|
|
277
|
+
```
|
|
278
|
+
Adding a column:
|
|
279
|
+
OLD: (id, name) → NEW: (id, name, email)
|
|
280
|
+
✅ All rows preserved, 'email' starts as NULL/default
|
|
281
|
+
|
|
282
|
+
Removing a column:
|
|
283
|
+
OLD: (id, name, oldField) → NEW: (id, name)
|
|
284
|
+
⚠️ Rows preserved, but 'oldField' data is LOST
|
|
285
|
+
|
|
286
|
+
Renaming a column:
|
|
287
|
+
OLD: (id, username) → NEW: (id, name)
|
|
288
|
+
⚠️ Treated as remove + add, 'username' data is LOST
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
#### Manual Migration
|
|
292
|
+
|
|
293
|
+
```typescript
|
|
294
|
+
import { migrateTablePreservingData } from 'nanodb-orm';
|
|
295
|
+
|
|
296
|
+
const result = await migrateTablePreservingData(
|
|
297
|
+
'users',
|
|
298
|
+
'CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT, email TEXT)',
|
|
299
|
+
['id', 'name'], // old columns
|
|
300
|
+
['id', 'name', 'email'] // new columns
|
|
301
|
+
);
|
|
302
|
+
// { rowsMigrated: 150, columnsPreserved: ['id', 'name'] }
|
|
303
|
+
```
|
|
304
|
+
|
|
239
305
|
### `transaction(fn)` / `batch(statements)`
|
|
240
306
|
|
|
241
307
|
Execute operations atomically. Uses Drizzle's native transaction when available (better for Turso).
|
|
@@ -280,7 +346,66 @@ try {
|
|
|
280
346
|
|
|
281
347
|
## Plugins
|
|
282
348
|
|
|
283
|
-
Extend nanodb-orm with
|
|
349
|
+
Extend nanodb-orm with hooks that run automatically on database operations.
|
|
350
|
+
|
|
351
|
+
### Official Plugin Packages
|
|
352
|
+
|
|
353
|
+
Official plugins are published as separate npm packages:
|
|
354
|
+
|
|
355
|
+
```bash
|
|
356
|
+
npm install @nanodb-orm/plugin-timestamps @nanodb-orm/plugin-soft-delete @nanodb-orm/plugin-logger
|
|
357
|
+
```
|
|
358
|
+
|
|
359
|
+
```typescript
|
|
360
|
+
import { createDatabase } from 'nanodb-orm';
|
|
361
|
+
import { timestamps } from '@nanodb-orm/plugin-timestamps';
|
|
362
|
+
import { softDelete } from '@nanodb-orm/plugin-soft-delete';
|
|
363
|
+
import { queryLogger } from '@nanodb-orm/plugin-logger';
|
|
364
|
+
|
|
365
|
+
const db = await createDatabase({
|
|
366
|
+
tables: { users, posts },
|
|
367
|
+
plugins: [
|
|
368
|
+
timestamps(), // Auto createdAt/updatedAt
|
|
369
|
+
queryLogger({ level: 'info' }), // SQL logging with timing
|
|
370
|
+
softDelete({ tables: ['posts'] }), // Soft delete for posts
|
|
371
|
+
],
|
|
372
|
+
});
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
| Package | Function | Description |
|
|
376
|
+
|---------|----------|-------------|
|
|
377
|
+
| `@nanodb-orm/plugin-timestamps` | `timestamps()` | Auto-add `createdAt` / `updatedAt` |
|
|
378
|
+
| `@nanodb-orm/plugin-logger` | `queryLogger()` | Log SQL operations with timing |
|
|
379
|
+
| `@nanodb-orm/plugin-soft-delete` | `softDelete()` | Mark as deleted instead of remove |
|
|
380
|
+
|
|
381
|
+
### Preview: Embedded Replicas
|
|
382
|
+
|
|
383
|
+
This feature is built into `nanodb-orm` and guarded by a config switch.
|
|
384
|
+
|
|
385
|
+
```typescript
|
|
386
|
+
import { createReplicatedDatabase } from 'nanodb-orm';
|
|
387
|
+
import { schema } from 'nanodb-orm';
|
|
388
|
+
|
|
389
|
+
const users = schema.table('users', {
|
|
390
|
+
id: schema.text('id').primaryKey(),
|
|
391
|
+
name: schema.text('name').notNull(),
|
|
392
|
+
});
|
|
393
|
+
|
|
394
|
+
const db = await createReplicatedDatabase({
|
|
395
|
+
tables: { users },
|
|
396
|
+
primary: { id: 'primary', connectionUrl: 'libsql://primary.turso.io', authToken: '...' },
|
|
397
|
+
replicas: [
|
|
398
|
+
{ id: 'replica-1', connectionUrl: 'libsql://replica1.turso.io', authToken: '...' },
|
|
399
|
+
{ id: 'replica-2', connectionUrl: 'libsql://replica2.turso.io', authToken: '...' },
|
|
400
|
+
],
|
|
401
|
+
preview: { enabled: true },
|
|
402
|
+
});
|
|
403
|
+
|
|
404
|
+
await db.write().insert(users).values({ id: 'user-123', name: 'Alice' });
|
|
405
|
+
const rows = await db.read().select().from(users);
|
|
406
|
+
```
|
|
407
|
+
|
|
408
|
+
> Embedded replicas are the recommended first step before sharding.
|
|
284
409
|
|
|
285
410
|
### Plugin Interface
|
|
286
411
|
|
|
@@ -612,6 +737,11 @@ nanodb.query // .eq, .gte, .and, .or, .sql, .count, ...
|
|
|
612
737
|
nanodb.errors // .DatabaseError, .parse
|
|
613
738
|
nanodb.cli // .studio, .setup, .reset, .status, .validate
|
|
614
739
|
|
|
740
|
+
// Official plugins (separate packages)
|
|
741
|
+
import { timestamps } from '@nanodb-orm/plugin-timestamps';
|
|
742
|
+
import { softDelete } from '@nanodb-orm/plugin-soft-delete';
|
|
743
|
+
import { queryLogger } from '@nanodb-orm/plugin-logger';
|
|
744
|
+
|
|
615
745
|
// Types (named imports)
|
|
616
746
|
import { type SelectModel, type InsertModel, type NanoPlugin } from 'nanodb-orm';
|
|
617
747
|
```
|
|
@@ -673,4 +803,4 @@ await db.insert(users).values([{ id: 1 }]);
|
|
|
673
803
|
|
|
674
804
|
## License
|
|
675
805
|
|
|
676
|
-
MIT ©
|
|
806
|
+
MIT © Easy-Deploy-Dev
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import { drizzle } from 'drizzle-orm/libsql';
|
|
2
2
|
type DrizzleInstance = ReturnType<typeof drizzle>;
|
|
3
|
+
export interface ConnectionOverride {
|
|
4
|
+
connectionUrl?: string;
|
|
5
|
+
authToken?: string;
|
|
6
|
+
forceLocal?: boolean;
|
|
7
|
+
databasePath?: string;
|
|
8
|
+
}
|
|
3
9
|
/**
|
|
4
10
|
* Thread-safe singleton database connection manager.
|
|
5
11
|
* Supports both Turso (remote) and local SQLite databases.
|
|
@@ -17,6 +23,8 @@ export declare class DatabaseConnection {
|
|
|
17
23
|
static getInstance(): Promise<DrizzleInstance>;
|
|
18
24
|
/** Create a new database connection */
|
|
19
25
|
private static createConnection;
|
|
26
|
+
/** Create a new database connection without caching */
|
|
27
|
+
static createInstance(override?: ConnectionOverride): Promise<DrizzleInstance>;
|
|
20
28
|
/** Reset the connection (for testing) */
|
|
21
29
|
static reset(): void;
|
|
22
30
|
/** Check if a connection exists */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../core/connection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAI7C,KAAK,eAAe,GAAG,UAAU,CAAC,OAAO,OAAO,CAAC,CAAC;AAElD;;;;;;;;;GASG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAgC;IACvD,OAAO,CAAC,MAAM,CAAC,OAAO,CAAyC;IAE/D,+DAA+D;WAClD,WAAW,IAAI,OAAO,CAAC,eAAe,CAAC;IAcpD,uCAAuC;mBAClB,gBAAgB;IA4BrC,yCAAyC;IACzC,MAAM,CAAC,KAAK,IAAI,IAAI;IAKpB,mCAAmC;IACnC,MAAM,CAAC,WAAW,IAAI,OAAO;CAG9B"}
|
|
1
|
+
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../core/connection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAI7C,KAAK,eAAe,GAAG,UAAU,CAAC,OAAO,OAAO,CAAC,CAAC;AAElD,MAAM,WAAW,kBAAkB;IACjC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;GASG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAgC;IACvD,OAAO,CAAC,MAAM,CAAC,OAAO,CAAyC;IAE/D,+DAA+D;WAClD,WAAW,IAAI,OAAO,CAAC,eAAe,CAAC;IAcpD,uCAAuC;mBAClB,gBAAgB;IA4BrC,uDAAuD;WAC1C,cAAc,CAAC,QAAQ,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,eAAe,CAAC;IAgBpF,yCAAyC;IACzC,MAAM,CAAC,KAAK,IAAI,IAAI;IAKpB,mCAAmC;IACnC,MAAM,CAAC,WAAW,IAAI,OAAO;CAG9B"}
|
package/dist/core/connection.js
CHANGED
|
@@ -57,6 +57,20 @@ class DatabaseConnection {
|
|
|
57
57
|
return (0, libsql_1.drizzle)((0, client_1.createClient)({ url: `file:${dbPath}` }));
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
|
+
/** Create a new database connection without caching */
|
|
61
|
+
static async createInstance(override) {
|
|
62
|
+
if (override?.connectionUrl) {
|
|
63
|
+
const clientConfig = override.authToken
|
|
64
|
+
? { url: override.connectionUrl, authToken: override.authToken }
|
|
65
|
+
: { url: override.connectionUrl };
|
|
66
|
+
return (0, libsql_1.drizzle)((0, client_1.createClient)(clientConfig));
|
|
67
|
+
}
|
|
68
|
+
if (override?.forceLocal || override?.databasePath) {
|
|
69
|
+
const dbPath = override.databasePath ?? 'database.db';
|
|
70
|
+
return (0, libsql_1.drizzle)((0, client_1.createClient)({ url: `file:${dbPath}` }));
|
|
71
|
+
}
|
|
72
|
+
return this.createConnection();
|
|
73
|
+
}
|
|
60
74
|
/** Reset the connection (for testing) */
|
|
61
75
|
static reset() {
|
|
62
76
|
this.instance = null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../core/connection.ts"],"names":[],"mappings":";;;AAAA,+CAA6C;AAC7C,2CAA8C;AAC9C,qCAA6C;
|
|
1
|
+
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../core/connection.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -133,7 +133,9 @@ export declare const cli: {
|
|
|
133
133
|
validate: typeof runValidate;
|
|
134
134
|
};
|
|
135
135
|
export { createDatabase, initializeDatabase } from './init';
|
|
136
|
+
export { createReplicatedDatabase, } from './replicas';
|
|
136
137
|
export type { CreateDatabaseConfig, NanoDatabase, Hooks, SchemaUtils, MigrationUtils, PluginUtils, } from './init';
|
|
138
|
+
export type { ReplicatedDatabase, ReplicatedDatabaseConfig, ReplicaConnection, ReadStrategy, } from './replicas';
|
|
137
139
|
export type { Table, AnyTable, Schema, SelectModel, InsertModel, SchemaModels, SchemaInsertModels, DrizzleDB, NanoPlugin, HookFn, ErrorHookFn, LifecycleHookFn, ColumnMetadata, ForeignKeyReference, SchemaData, MigrationConfig, DatabaseConfig, DatabaseInfo, HealthCheck, SyncResult, SchemaValidation, ForeignKey, TableMetadata, QueryResult, DatabaseClient, DrizzleTable, DrizzleColumn, } from './types';
|
|
138
140
|
export type { StudioOptions, StatusResult, ValidationResult, } from './cli';
|
|
139
141
|
export type { InferSelectModel, InferInsertModel, } from 'drizzle-orm';
|
|
@@ -144,7 +146,7 @@ export { DatabaseSync } from './utils/sync';
|
|
|
144
146
|
export { DatabaseMigrations } from './utils/migrations';
|
|
145
147
|
export { DatabaseSeeds } from './utils/seeds';
|
|
146
148
|
export { SchemaIntrospection } from './utils/schema-introspection';
|
|
147
|
-
export { transaction, batch, recreateTable } from './utils/transactions';
|
|
149
|
+
export { transaction, batch, recreateTable, migrateTablePreservingData } from './utils/transactions';
|
|
148
150
|
export { launchStudio, runSetup, runReset, getStatus, runValidate, } from './cli';
|
|
149
151
|
export declare const table: import("drizzle-orm/sqlite-core").SQLiteTableFn<undefined>;
|
|
150
152
|
export { sqliteTable };
|
|
@@ -162,6 +164,7 @@ export declare const column: {
|
|
|
162
164
|
export { eq, ne, gt, gte, lt, lte, like, ilike, notLike, and, or, not, between, inArray, notInArray, isNull, isNotNull, desc, asc, count, sum, avg, min, max, sql, } from 'drizzle-orm';
|
|
163
165
|
import { createDatabase, initializeDatabase } from './init';
|
|
164
166
|
import { transaction, batch } from './utils/transactions';
|
|
167
|
+
import { createReplicatedDatabase } from './replicas';
|
|
165
168
|
/**
|
|
166
169
|
* Default export with all nanodb-orm functionality.
|
|
167
170
|
*
|
|
@@ -181,6 +184,7 @@ import { transaction, batch } from './utils/transactions';
|
|
|
181
184
|
declare const nanodb: {
|
|
182
185
|
createDatabase: typeof createDatabase;
|
|
183
186
|
initializeDatabase: typeof initializeDatabase;
|
|
187
|
+
createReplicatedDatabase: typeof createReplicatedDatabase;
|
|
184
188
|
transaction: typeof transaction;
|
|
185
189
|
batch: typeof batch;
|
|
186
190
|
schema: {
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EACL,WAAW,EACX,OAAO,IAAI,cAAc,EACzB,IAAI,IAAI,WAAW,EACnB,IAAI,IAAI,WAAW,EACnB,IAAI,IAAI,WAAW,EACpB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAOL,IAAI,IAAI,WAAW,EACnB,KAAK,IAAI,YAAY,EACrB,OAAO,IAAI,cAAc,EACzB,GAAG,IAAI,UAAU,EACjB,EAAE,IAAI,SAAS,EACf,GAAG,IAAI,UAAU,EACjB,OAAO,IAAI,cAAc,EACzB,OAAO,IAAI,cAAc,EACzB,UAAU,IAAI,iBAAiB,EAC/B,MAAM,IAAI,aAAa,EACvB,SAAS,IAAI,gBAAgB,EAC7B,IAAI,IAAI,WAAW,EACnB,GAAG,IAAI,UAAU,EACjB,KAAK,IAAI,YAAY,EACrB,GAAG,IAAI,UAAU,EACjB,GAAG,IAAI,UAAU,EACjB,GAAG,IAAI,UAAU,EACjB,GAAG,IAAI,UAAU,EACjB,GAAG,IAAI,UAAU,EAClB,MAAM,aAAa,CAAC;AAMrB;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,MAAM;;;;;;CAMlB,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;CAgCjB,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EACL,aAAa,EACb,WAAW,EACX,eAAe,EACf,cAAc,EACd,SAAS,EACT,YAAY,EACb,MAAM,gBAAgB,CAAC;AAExB,eAAO,MAAM,MAAM;;;;;;;CAOlB,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,OAAO,EACL,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,WAAW,EACZ,MAAM,OAAO,CAAC;AAEf,eAAO,MAAM,GAAG;;;;;;CAMf,CAAC;AAMF,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAC5D,YAAY,EACV,oBAAoB,EACpB,YAAY,EACZ,KAAK,EACL,WAAW,EACX,cAAc,EACd,WAAW,GACZ,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -23,8 +23,8 @@
|
|
|
23
23
|
* ```
|
|
24
24
|
*/
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.
|
|
27
|
-
exports.sql = exports.max = exports.min = exports.avg = exports.sum = exports.count = exports.asc = exports.desc = void 0;
|
|
26
|
+
exports.notInArray = exports.inArray = exports.between = exports.not = exports.or = exports.and = exports.notLike = exports.ilike = exports.like = exports.lte = exports.lt = exports.gte = exports.gt = exports.ne = exports.eq = exports.column = exports.blob = exports.real = exports.text = exports.integer = exports.sqliteTable = exports.table = exports.runValidate = exports.getStatus = exports.runReset = exports.runSetup = exports.launchStudio = exports.migrateTablePreservingData = exports.recreateTable = exports.batch = exports.transaction = exports.SchemaIntrospection = exports.DatabaseSeeds = exports.DatabaseMigrations = exports.DatabaseSync = exports.getDatabaseConfig = exports.DatabaseConnection = exports.parseDbError = exports.SeedError = exports.MigrationError = exports.ConnectionError = exports.SchemaError = exports.DatabaseError = exports.createReplicatedDatabase = exports.initializeDatabase = exports.createDatabase = exports.cli = exports.errors = exports.query = exports.schema = void 0;
|
|
27
|
+
exports.sql = exports.max = exports.min = exports.avg = exports.sum = exports.count = exports.asc = exports.desc = exports.isNotNull = exports.isNull = void 0;
|
|
28
28
|
const sqlite_core_1 = require("drizzle-orm/sqlite-core");
|
|
29
29
|
Object.defineProperty(exports, "sqliteTable", { enumerable: true, get: function () { return sqlite_core_1.sqliteTable; } });
|
|
30
30
|
const drizzle_orm_1 = require("drizzle-orm");
|
|
@@ -152,6 +152,8 @@ exports.cli = {
|
|
|
152
152
|
var init_1 = require("./init");
|
|
153
153
|
Object.defineProperty(exports, "createDatabase", { enumerable: true, get: function () { return init_1.createDatabase; } });
|
|
154
154
|
Object.defineProperty(exports, "initializeDatabase", { enumerable: true, get: function () { return init_1.initializeDatabase; } });
|
|
155
|
+
var replicas_1 = require("./replicas");
|
|
156
|
+
Object.defineProperty(exports, "createReplicatedDatabase", { enumerable: true, get: function () { return replicas_1.createReplicatedDatabase; } });
|
|
155
157
|
// =============================================================================
|
|
156
158
|
// INDIVIDUAL EXPORTS (for tree-shaking or preference)
|
|
157
159
|
// =============================================================================
|
|
@@ -180,6 +182,7 @@ var transactions_1 = require("./utils/transactions");
|
|
|
180
182
|
Object.defineProperty(exports, "transaction", { enumerable: true, get: function () { return transactions_1.transaction; } });
|
|
181
183
|
Object.defineProperty(exports, "batch", { enumerable: true, get: function () { return transactions_1.batch; } });
|
|
182
184
|
Object.defineProperty(exports, "recreateTable", { enumerable: true, get: function () { return transactions_1.recreateTable; } });
|
|
185
|
+
Object.defineProperty(exports, "migrateTablePreservingData", { enumerable: true, get: function () { return transactions_1.migrateTablePreservingData; } });
|
|
183
186
|
// CLI (individual)
|
|
184
187
|
var cli_2 = require("./cli");
|
|
185
188
|
Object.defineProperty(exports, "launchStudio", { enumerable: true, get: function () { return cli_2.launchStudio; } });
|
|
@@ -226,6 +229,7 @@ Object.defineProperty(exports, "sql", { enumerable: true, get: function () { ret
|
|
|
226
229
|
// =============================================================================
|
|
227
230
|
const init_2 = require("./init");
|
|
228
231
|
const transactions_2 = require("./utils/transactions");
|
|
232
|
+
const replicas_2 = require("./replicas");
|
|
229
233
|
/**
|
|
230
234
|
* Default export with all nanodb-orm functionality.
|
|
231
235
|
*
|
|
@@ -246,6 +250,7 @@ const nanodb = {
|
|
|
246
250
|
// Main API
|
|
247
251
|
createDatabase: init_2.createDatabase,
|
|
248
252
|
initializeDatabase: init_2.initializeDatabase,
|
|
253
|
+
createReplicatedDatabase: replicas_2.createReplicatedDatabase,
|
|
249
254
|
transaction: transactions_2.transaction,
|
|
250
255
|
batch: transactions_2.batch,
|
|
251
256
|
// Grouped utilities
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;;;;AAEH,yDAMiC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;;;;AAEH,yDAMiC;AA8RxB,4FAnSP,yBAAW,OAmSO;AA5RpB,6CA0BqB;AAErB,gFAAgF;AAChF,oDAAoD;AACpD,gFAAgF;AAEhF;;;;;;;;;;;;;GAaG;AACU,QAAA,MAAM,GAAG;IACpB,KAAK,EAAE,yBAAW;IAClB,OAAO,EAAE,qBAAc;IACvB,IAAI,EAAE,kBAAW;IACjB,IAAI,EAAE,kBAAW;IACjB,IAAI,EAAE,kBAAW;CAClB,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACU,QAAA,KAAK,GAAG;IACnB,aAAa;IACb,EAAE,EAAE,gBAAS;IACb,EAAE,EAAE,gBAAS;IACb,EAAE,EAAE,gBAAS;IACb,GAAG,EAAE,iBAAU;IACf,EAAE,EAAE,gBAAS;IACb,GAAG,EAAE,iBAAU;IACf,IAAI,EAAE,kBAAW;IACjB,KAAK,EAAE,mBAAY;IACnB,OAAO,EAAE,qBAAc;IACvB,UAAU;IACV,GAAG,EAAE,iBAAU;IACf,EAAE,EAAE,gBAAS;IACb,GAAG,EAAE,iBAAU;IACf,QAAQ;IACR,OAAO,EAAE,qBAAc;IACvB,OAAO,EAAE,qBAAc;IACvB,UAAU,EAAE,wBAAiB;IAC7B,MAAM,EAAE,oBAAa;IACrB,SAAS,EAAE,uBAAgB;IAC3B,WAAW;IACX,IAAI,EAAE,kBAAW;IACjB,GAAG,EAAE,iBAAU;IACf,aAAa;IACb,KAAK,EAAE,mBAAY;IACnB,GAAG,EAAE,iBAAU;IACf,GAAG,EAAE,iBAAU;IACf,GAAG,EAAE,iBAAU;IACf,GAAG,EAAE,iBAAU;IACf,UAAU;IACV,GAAG,EAAE,iBAAU;CAChB,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,2CAOwB;AAEX,QAAA,MAAM,GAAG;IACpB,aAAa,EAAb,sBAAa;IACb,WAAW,EAAX,oBAAW;IACX,eAAe,EAAf,wBAAe;IACf,cAAc,EAAd,uBAAc;IACd,SAAS,EAAT,kBAAS;IACT,KAAK,EAAE,qBAAY;CACpB,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,+BAMe;AAEF,QAAA,GAAG,GAAG;IACjB,MAAM,EAAE,kBAAY;IACpB,KAAK,EAAE,cAAQ;IACf,KAAK,EAAE,cAAQ;IACf,MAAM,EAAE,eAAS;IACjB,QAAQ,EAAE,iBAAW;CACtB,CAAC;AAEF,gFAAgF;AAChF,WAAW;AACX,gFAAgF;AAEhF,+BAA4D;AAAnD,sGAAA,cAAc,OAAA;AAAE,0GAAA,kBAAkB,OAAA;AAC3C,uCAEoB;AADlB,oHAAA,wBAAwB,OAAA;AA8E1B,gFAAgF;AAChF,sDAAsD;AACtD,gFAAgF;AAEhF,sBAAsB;AACtB,yCAOwB;AANtB,uGAAA,aAAa,OAAA;AACb,qGAAA,WAAW,OAAA;AACX,yGAAA,eAAe,OAAA;AACf,wGAAA,cAAc,OAAA;AACd,mGAAA,SAAS,OAAA;AACT,sGAAA,YAAY,OAAA;AAGd,YAAY;AACZ,gDAAuD;AAA9C,gHAAA,kBAAkB,OAAA;AAC3B,wCAAkD;AAAzC,2GAAA,iBAAiB,OAAA;AAC1B,qCAA4C;AAAnC,oGAAA,YAAY,OAAA;AACrB,iDAAwD;AAA/C,gHAAA,kBAAkB,OAAA;AAC3B,uCAA8C;AAArC,sGAAA,aAAa,OAAA;AACtB,qEAAmE;AAA1D,2HAAA,mBAAmB,OAAA;AAC5B,qDAAqG;AAA5F,2GAAA,WAAW,OAAA;AAAE,qGAAA,KAAK,OAAA;AAAE,6GAAA,aAAa,OAAA;AAAE,0HAAA,0BAA0B,OAAA;AAEtE,mBAAmB;AACnB,6BAMe;AALb,mGAAA,YAAY,OAAA;AACZ,+FAAA,QAAQ,OAAA;AACR,+FAAA,QAAQ,OAAA;AACR,gGAAA,SAAS,OAAA;AACT,kGAAA,WAAW,OAAA;AAGb,+BAA+B;AAClB,QAAA,KAAK,GAAG,yBAAW,CAAC;AAEpB,QAAA,OAAO,GAAG,qBAAc,CAAC;AACzB,QAAA,IAAI,GAAG,kBAAW,CAAC;AACnB,QAAA,IAAI,GAAG,kBAAW,CAAC;AACnB,QAAA,IAAI,GAAG,kBAAW,CAAC;AACnB,QAAA,MAAM,GAAG,cAAM,CAAC,CAAC,QAAQ;AAEtC,+BAA+B;AAC/B,2CAMqB;AALnB,iGAAA,EAAE,OAAA;AAAE,iGAAA,EAAE,OAAA;AAAE,iGAAA,EAAE,OAAA;AAAE,kGAAA,GAAG,OAAA;AAAE,iGAAA,EAAE,OAAA;AAAE,kGAAA,GAAG,OAAA;AAAE,mGAAA,IAAI,OAAA;AAAE,oGAAA,KAAK,OAAA;AAAE,sGAAA,OAAO,OAAA;AAC9C,kGAAA,GAAG,OAAA;AAAE,iGAAA,EAAE,OAAA;AAAE,kGAAA,GAAG,OAAA;AAAE,sGAAA,OAAO,OAAA;AAAE,sGAAA,OAAO,OAAA;AAAE,yGAAA,UAAU,OAAA;AAAE,qGAAA,MAAM,OAAA;AAAE,wGAAA,SAAS,OAAA;AAC7D,mGAAA,IAAI,OAAA;AAAE,kGAAA,GAAG,OAAA;AACT,oGAAA,KAAK,OAAA;AAAE,kGAAA,GAAG,OAAA;AAAE,kGAAA,GAAG,OAAA;AAAE,kGAAA,GAAG,OAAA;AAAE,kGAAA,GAAG,OAAA;AACzB,kGAAA,GAAG,OAAA;AAGL,gFAAgF;AAChF,iBAAiB;AACjB,gFAAgF;AAEhF,iCAA4D;AAC5D,uDAA0D;AAC1D,yCAAsD;AAEtD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,GAAG;IACb,WAAW;IACX,cAAc,EAAd,qBAAc;IACd,kBAAkB,EAAlB,yBAAkB;IAClB,wBAAwB,EAAxB,mCAAwB;IACxB,WAAW,EAAX,0BAAW;IACX,KAAK,EAAL,oBAAK;IAEL,oBAAoB;IACpB,MAAM,EAAN,cAAM;IACN,KAAK,EAAL,aAAK;IACL,MAAM,EAAN,cAAM;IACN,GAAG,EAAH,WAAG;CACJ,CAAC;AAEF,kBAAe,MAAM,CAAC"}
|
package/dist/init.d.ts
CHANGED
|
@@ -92,6 +92,13 @@ export type NanoDatabase<S extends Schema> = LibSQLDatabase<S> & {
|
|
|
92
92
|
* Configuration for createDatabase().
|
|
93
93
|
*/
|
|
94
94
|
export interface CreateDatabaseConfig<S extends Schema = Schema> extends SchemaData<S> {
|
|
95
|
+
/** Optional connection override (bypasses singleton) */
|
|
96
|
+
connection?: {
|
|
97
|
+
connectionUrl?: string;
|
|
98
|
+
authToken?: string;
|
|
99
|
+
forceLocal?: boolean;
|
|
100
|
+
databasePath?: string;
|
|
101
|
+
};
|
|
95
102
|
/** Plugins to extend database functionality */
|
|
96
103
|
plugins?: NanoPlugin[];
|
|
97
104
|
}
|
package/dist/init.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../init.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../init.ts"],"names":[],"mappings":"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"}
|
package/dist/init.js
CHANGED
|
@@ -105,12 +105,14 @@ function getTableName(table) {
|
|
|
105
105
|
async function createDatabase(config) {
|
|
106
106
|
// Initialize all modules with schema
|
|
107
107
|
initializeDatabase(config);
|
|
108
|
-
// Run migrations and seed
|
|
109
|
-
await migrations_1.DatabaseMigrations.initializeSchema();
|
|
110
|
-
if (config.seedData)
|
|
111
|
-
await seeds_1.DatabaseSeeds.seed();
|
|
112
108
|
// Get Drizzle instance and setup plugins
|
|
113
|
-
const drizzle =
|
|
109
|
+
const drizzle = (config.connection
|
|
110
|
+
? await connection_1.DatabaseConnection.createInstance(config.connection)
|
|
111
|
+
: await connection_1.DatabaseConnection.getInstance());
|
|
112
|
+
// Run migrations and seed (use the same connection)
|
|
113
|
+
await migrations_1.DatabaseMigrations.initializeSchema(drizzle);
|
|
114
|
+
if (config.seedData)
|
|
115
|
+
await seeds_1.DatabaseSeeds.seed(drizzle);
|
|
114
116
|
const plugins = config.plugins ?? [];
|
|
115
117
|
const hooks = createHooks(plugins);
|
|
116
118
|
// Store original methods
|
|
@@ -218,7 +220,7 @@ async function createDatabase(config) {
|
|
|
218
220
|
tables: () => schema_introspection_1.SchemaIntrospection.getAllTableNames(),
|
|
219
221
|
getTable: (name) => schema_introspection_1.SchemaIntrospection.getTableInfo(String(name)),
|
|
220
222
|
getColumns: (name) => schema_introspection_1.SchemaIntrospection.getTableColumns(String(name)),
|
|
221
|
-
validate: () => schema_introspection_1.SchemaIntrospection.validateSchema(),
|
|
223
|
+
validate: () => schema_introspection_1.SchemaIntrospection.validateSchema(drizzle),
|
|
222
224
|
stats: () => schema_introspection_1.SchemaIntrospection.getSchemaStats(),
|
|
223
225
|
relationships: () => schema_introspection_1.SchemaIntrospection.getTableRelationships(),
|
|
224
226
|
};
|
|
@@ -229,19 +231,19 @@ async function createDatabase(config) {
|
|
|
229
231
|
update: wrappedUpdate,
|
|
230
232
|
delete: wrappedDelete,
|
|
231
233
|
// Health & sync
|
|
232
|
-
healthCheck: () => sync_1.DatabaseSync.healthCheck(),
|
|
233
|
-
isReady: () => sync_1.DatabaseSync.isReady(),
|
|
234
|
-
sync: () => sync_1.DatabaseSync.sync(),
|
|
235
|
-
reset: () => sync_1.DatabaseSync.reset(),
|
|
236
|
-
seed: () => seeds_1.DatabaseSeeds.seed(),
|
|
237
|
-
clearData: () => seeds_1.DatabaseSeeds.clearAllData(),
|
|
234
|
+
healthCheck: () => sync_1.DatabaseSync.healthCheck(drizzle),
|
|
235
|
+
isReady: () => sync_1.DatabaseSync.isReady(drizzle),
|
|
236
|
+
sync: () => sync_1.DatabaseSync.sync(drizzle),
|
|
237
|
+
reset: () => sync_1.DatabaseSync.reset(drizzle),
|
|
238
|
+
seed: () => seeds_1.DatabaseSeeds.seed(drizzle),
|
|
239
|
+
clearData: () => seeds_1.DatabaseSeeds.clearAllData(drizzle),
|
|
238
240
|
// Schema introspection
|
|
239
241
|
schema: schemaUtils,
|
|
240
242
|
// Migration utilities
|
|
241
243
|
migrations: {
|
|
242
|
-
run: () => migrations_1.DatabaseMigrations.initializeSchema(),
|
|
243
|
-
validate: () => migrations_1.DatabaseMigrations.validateSchema(),
|
|
244
|
-
checkTables: () => migrations_1.DatabaseMigrations.checkTableExistence(),
|
|
244
|
+
run: () => migrations_1.DatabaseMigrations.initializeSchema(drizzle),
|
|
245
|
+
validate: () => migrations_1.DatabaseMigrations.validateSchema(drizzle),
|
|
246
|
+
checkTables: () => migrations_1.DatabaseMigrations.checkTableExistence(drizzle),
|
|
245
247
|
},
|
|
246
248
|
// Plugin info
|
|
247
249
|
plugins: { list: () => plugins.map((p) => p.name) },
|
package/dist/init.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../init.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../init.ts"],"names":[],"mappings":";;AAyOA,wCAyMC;AAmBD,gDAuBC;AA5dD,uEAAmE;AACnE,yCAA8C;AAC9C,mDAAwD;AACxD,uCAA4C;AAC5C,kDAAuD;AACvD,2CAAwC;AA8HxC,+EAA+E;AAC/E,cAAc;AACd,+EAA+E;AAE/E,MAAM,UAAU,GAAG;IACjB,cAAc,EAAE,aAAa;IAC7B,cAAc,EAAE,aAAa;IAC7B,cAAc,EAAE,aAAa;IAC7B,aAAa,EAAE,YAAY;CACnB,CAAC;AAIX,2EAA2E;AAC3E,SAAS,WAAW,CAAC,OAAqB;IACxC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAsB,CAAC;IAC9C,MAAM,aAAa,GAAkB,EAAE,CAAC;IACxC,MAAM,aAAa,GAAsB,EAAE,CAAC;IAE5C,+CAA+C;IAC/C,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,OAAO;aAChB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;aACnB,MAAM,CAAC,CAAC,EAAE,EAAgB,EAAE,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC;QAClD,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC7C,CAAC;IAED,6BAA6B;IAC7B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,MAAM,CAAC,OAAO;YAAE,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACvD,IAAI,MAAM,CAAC,OAAO;YAAE,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACzD,CAAC;IAED,yDAAyD;IACzD,MAAM,GAAG,GAAG,CAAO,IAAc,EAAE,KAAa,EAAE,IAAO,EAAE,MAAU,EAAK,EAAE;QAC1E,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QAEtB,gEAAgE;QAChE,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9B,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAE,EAAE,CAAC,KAAK,EAAE,GAAG,CAAO,IAAI,GAAG,EAAE,IAAI,CAAC,CAAC;QACrE,CAAC;QACD,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,OAAO;QACL,YAAY,EAAE,CAAI,CAAS,EAAE,CAAI,EAAE,EAAE,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/D,WAAW,EAAE,CAAO,CAAS,EAAE,CAAI,EAAE,CAAI,EAAE,EAAE,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACzE,YAAY,EAAE,CAAI,CAAS,EAAE,CAAI,EAAE,EAAE,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/D,WAAW,EAAE,CAAO,CAAS,EAAE,CAAI,EAAE,CAAI,EAAE,EAAE,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACzE,YAAY,EAAE,CAAI,CAAS,EAAE,CAAI,EAAE,EAAE,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/D,WAAW,EAAE,CAAO,CAAS,EAAE,CAAI,EAAE,CAAI,EAAE,EAAE,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACzE,WAAW,EAAE,CAAI,CAAS,EAAE,CAAI,EAAE,EAAE,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,EAAE,CAAC,CAAC;QAC7D,UAAU,EAAE,CAAO,CAAS,EAAE,CAAI,EAAE,CAAI,EAAE,EAAE,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACvE,OAAO,EAAE,CAAC,CAAQ,EAAE,EAAU,EAAE,CAAU,EAAE,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QACxF,OAAO,EAAE,CAAC,EAAW,EAAE,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC7D,GAAG,EAAE,CAAC,IAAc,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;KAC3C,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E,mDAAmD;AACnD,SAAS,YAAY,CAAC,KAAe;IACnC,0CAA0C;IAC1C,MAAM,CAAC,GAAG,KAAoE,CAAC;IAC/E,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;IACxD,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AACrD,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACI,KAAK,UAAU,cAAc,CAClC,MAA+B;IAE/B,qCAAqC;IACrC,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAE3B,yCAAyC;IACzC,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,UAAU;QAChC,CAAC,CAAC,MAAM,+BAAkB,CAAC,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC;QAC5D,CAAC,CAAC,MAAM,+BAAkB,CAAC,WAAW,EAAE,CAAiC,CAAC;IAE5E,oDAAoD;IACpD,MAAM,+BAAkB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACnD,IAAI,MAAM,CAAC,QAAQ;QAAE,MAAM,qBAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;IACrC,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAEnC,yBAAyB;IACzB,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAKpD,mEAAmE;IACnE,SAAS,iBAAiB,CACxB,OAAU,EACV,OAAmB;QAEnB,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5C,8DAA8D;QAC7D,OAAe,CAAC,IAAI,GAAG,UACtB,WAA2E,EAC3E,UAA2E;YAE3E,OAAO,QAAQ,CAAC,CAAC,MAAe,EAAE,EAAE;gBAClC,OAAO,EAAE,CAAC;gBACV,OAAO,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YACpD,CAAC,EAAE,UAAU,CAAC,CAAC;QACjB,CAAC,CAAC;QACF,OAAO,OAAO,CAAC;IACjB,CAAC;IAID,MAAM,aAAa,GAAG,IAAI,KAAK,CAAC,cAAc,EAAE;QAC9C,KAAK,CAAC,MAAgB,EAAE,QAAiB,EAAE,IAA0B;YACnE,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;YAChC,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;YAElC,8DAA8D;YAC9D,OAAO,CAAC,IAAI,GAAG,IAAI,KAAK,CAAC,YAAmB,EAAE;gBAC5C,8DAA8D;gBAC9D,KAAK,CAAC,UAAe,EAAE,QAAiB,EAAE,QAAe;oBACvD,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAa,CAAC;oBACtC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;oBACtC,KAAK,CAAC,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;oBAE7C,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;oBAEpD,iCAAiC;oBACjC,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC9C,8DAA8D;oBAC9D,MAAM,CAAC,IAAI,GAAG,UACZ,WAA2E,EAC3E,UAA2E;wBAE3E,OAAO,YAAY,CAAC,CAAC,IAAa,EAAE,EAAE;4BACpC,KAAK,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,IAAI,CAAC,CAAC;4BAClD,OAAO,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;wBAChD,CAAC,EAAE,UAAU,CAAC,CAAC;oBACjB,CAAC,CAAC;oBAEF,OAAO,MAAM,CAAC;gBAChB,CAAC;aACF,CAAC,CAAC;YAEH,OAAO,OAAO,CAAC;QACjB,CAAC;KACF,CAAa,CAAC;IAIf,MAAM,aAAa,GAAa,CAAC,CAAqB,KAAQ,EAAE,EAAE;QAChE,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QACtC,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;QACtC,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEpD,8DAA8D;QAC9D,OAAO,CAAC,MAAM,GAAG,CAAC,IAAS,EAAE,EAAE;YAC7B,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;oBACnC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;oBACnD,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;gBACxC,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;gBACzC,OAAO,iBAAiB,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;YAC1F,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,KAAK,CAAC,OAAO,CAAC,GAAY,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;gBACjD,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC,CAAC;QACF,OAAO,OAAO,CAAC;IACjB,CAAC,CAAa,CAAC;IAIf,MAAM,aAAa,GAAa,CAAC,CAAqB,KAAQ,EAAE,EAAE;QAChE,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QACtC,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;QACtC,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAE9C,8DAA8D;QAC9D,OAAO,CAAC,GAAG,GAAG,CAAC,IAAS,EAAE,EAAE;YAC1B,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;gBACtD,MAAM,MAAM,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;gBACtC,OAAO,iBAAiB,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;YAC1F,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,KAAK,CAAC,OAAO,CAAC,GAAY,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;gBACjD,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC,CAAC;QACF,OAAO,OAAO,CAAC;IACjB,CAAC,CAAa,CAAC;IAKf,MAAM,aAAa,GAAa,CAAC,CAAqB,KAAQ,EAAE,EAAE;QAChE,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QACtC,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;QACtC,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAElD,8DAA8D;QAC9D,OAAO,CAAC,KAAK,GAAG,CAAC,SAAc,EAAE,EAAE;YACjC,IAAI,CAAC;gBACH,KAAK,CAAC,YAAY,CAAC,SAAS,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC;gBAC/C,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;gBACxC,OAAO,iBAAiB,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,EAAE,SAAS,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;YAChG,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,KAAK,CAAC,OAAO,CAAC,GAAY,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;gBACjD,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC,CAAC;QACF,OAAO,OAAO,CAAC;IACjB,CAAC,CAAa,CAAC;IAEf,sCAAsC;IACtC,MAAM,WAAW,GAAmB;QAClC,MAAM,EAAE,GAAG,EAAE,CAAC,0CAAmB,CAAC,gBAAgB,EAAiB;QACnE,QAAQ,EAAE,CAAC,IAAa,EAAE,EAAE,CAAC,0CAAmB,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3E,UAAU,EAAE,CAAC,IAAa,EAAE,EAAE,CAAC,0CAAmB,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAChF,QAAQ,EAAE,GAAG,EAAE,CAAC,0CAAmB,CAAC,cAAc,CAAC,OAAO,CAAC;QAC3D,KAAK,EAAE,GAAG,EAAE,CAAC,0CAAmB,CAAC,cAAc,EAAE;QACjD,aAAa,EAAE,GAAG,EAAE,CAAC,0CAAmB,CAAC,qBAAqB,EAAE;KACjE,CAAC;IAEF,4CAA4C;IAC5C,IAAI,EAAE,GAAoB,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE;QAC/C,MAAM,EAAE,aAAa;QACrB,MAAM,EAAE,aAAa;QACrB,MAAM,EAAE,aAAa;QACrB,MAAM,EAAE,aAAa;QAErB,gBAAgB;QAChB,WAAW,EAAE,GAAG,EAAE,CAAC,mBAAY,CAAC,WAAW,CAAC,OAAO,CAAC;QACpD,OAAO,EAAE,GAAG,EAAE,CAAC,mBAAY,CAAC,OAAO,CAAC,OAAO,CAAC;QAC5C,IAAI,EAAE,GAAG,EAAE,CAAC,mBAAY,CAAC,IAAI,CAAC,OAAO,CAAC;QACtC,KAAK,EAAE,GAAG,EAAE,CAAC,mBAAY,CAAC,KAAK,CAAC,OAAO,CAAC;QACxC,IAAI,EAAE,GAAG,EAAE,CAAC,qBAAa,CAAC,IAAI,CAAC,OAAO,CAAC;QACvC,SAAS,EAAE,GAAG,EAAE,CAAC,qBAAa,CAAC,YAAY,CAAC,OAAO,CAAC;QAEpD,uBAAuB;QACvB,MAAM,EAAE,WAAW;QAEnB,sBAAsB;QACtB,UAAU,EAAE;YACV,GAAG,EAAE,GAAG,EAAE,CAAC,+BAAkB,CAAC,gBAAgB,CAAC,OAAO,CAAC;YACvD,QAAQ,EAAE,GAAG,EAAE,CAAC,+BAAkB,CAAC,cAAc,CAAC,OAAO,CAAC;YAC1D,WAAW,EAAE,GAAG,EAAE,CAAC,+BAAkB,CAAC,mBAAmB,CAAC,OAAO,CAAC;SACnE;QAED,cAAc;QACd,OAAO,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;QACnD,KAAK;KACN,CAAC,CAAC;IAEH,0BAA0B;IAC1B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAClC,IAAI,MAAM;gBAAE,EAAE,GAAG,MAAyB,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,sBAAsB;IACtB,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAElB,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,+EAA+E;AAC/E,wBAAwB;AACxB,+EAA+E;AAE/E,iCAAiC;AACjC,MAAM,wBAAwB,GAA8B;IAC1D,YAAY,EAAE,IAAI;IAClB,WAAW,EAAE,IAAI;IACjB,UAAU,EAAE,KAAK;CAClB,CAAC;AAEF;;;;;GAKG;AACH,SAAgB,kBAAkB,CAAmB,UAAyB;IAC5E,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAElD,eAAM,CAAC,IAAI,CAAC,qBAAqB,UAAU,CAAC,MAAM,YAAY,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEvF,0CAAmB,CAAC,UAAU,CAAC;QAC7B,MAAM,EAAE,UAAU,CAAC,MAAM;QACzB,UAAU;KACX,CAAC,CAAC;IAEH,+BAAkB,CAAC,UAAU,CAAC;QAC5B,MAAM,EAAE,UAAU,CAAC,MAAM;QACzB,UAAU;QACV,eAAe,EAAE,EAAE,GAAG,wBAAwB,EAAE,GAAG,UAAU,CAAC,eAAe,EAAE;KAChF,CAAC,CAAC;IAEH,qBAAa,CAAC,UAAU,CAAC;QACvB,MAAM,EAAE,UAAU,CAAC,MAAM;QACzB,UAAU;QACV,QAAQ,EAAE,CAAC,UAAU,CAAC,QAAQ,IAAI,EAAE,CAA8C;KACnF,CAAC,CAAC;IAEH,eAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;AACtC,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { CreateDatabaseConfig, NanoDatabase } from './init';
|
|
2
|
+
import type { Schema } from './types';
|
|
3
|
+
export interface ReplicaConnection {
|
|
4
|
+
id: string;
|
|
5
|
+
connectionUrl?: string;
|
|
6
|
+
authToken?: string;
|
|
7
|
+
forceLocal?: boolean;
|
|
8
|
+
databasePath?: string;
|
|
9
|
+
}
|
|
10
|
+
export interface PreviewSwitch {
|
|
11
|
+
enabled: true;
|
|
12
|
+
}
|
|
13
|
+
export type ReadStrategy = 'round_robin' | 'random';
|
|
14
|
+
export interface ReplicatedDatabaseConfig<S extends Schema = Schema> extends Omit<CreateDatabaseConfig<S>, 'connection'> {
|
|
15
|
+
primary: ReplicaConnection;
|
|
16
|
+
replicas: ReplicaConnection[];
|
|
17
|
+
preview?: PreviewSwitch;
|
|
18
|
+
readStrategy?: ReadStrategy;
|
|
19
|
+
}
|
|
20
|
+
export interface ReplicatedDatabase<S extends Schema = Schema> {
|
|
21
|
+
primary: NanoDatabase<S>;
|
|
22
|
+
read: () => NanoDatabase<S>;
|
|
23
|
+
write: () => NanoDatabase<S>;
|
|
24
|
+
replica: (id: string) => NanoDatabase<S>;
|
|
25
|
+
listReplicas: () => string[];
|
|
26
|
+
}
|
|
27
|
+
export declare function createReplicatedDatabase<S extends Schema>(config: ReplicatedDatabaseConfig<S>): Promise<ReplicatedDatabase<S>>;
|
|
28
|
+
//# sourceMappingURL=replicas.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replicas.d.ts","sourceRoot":"","sources":["../replicas.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACjE,OAAO,KAAK,EAA+B,MAAM,EAAE,MAAM,SAAS,CAAC;AAEnE,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,IAAI,CAAC;CACf;AAED,MAAM,MAAM,YAAY,GAAG,aAAa,GAAG,QAAQ,CAAC;AAEpD,MAAM,WAAW,wBAAwB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,CACjE,SAAQ,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC;IACnD,OAAO,EAAE,iBAAiB,CAAC;IAC3B,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM;IAC3D,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IACzB,IAAI,EAAE,MAAM,YAAY,CAAC,CAAC,CAAC,CAAC;IAC5B,KAAK,EAAE,MAAM,YAAY,CAAC,CAAC,CAAC,CAAC;IAC7B,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,YAAY,CAAC,CAAC,CAAC,CAAC;IACzC,YAAY,EAAE,MAAM,MAAM,EAAE,CAAC;CAC9B;AAED,wBAAsB,wBAAwB,CAAC,CAAC,SAAS,MAAM,EAC7D,MAAM,EAAE,wBAAwB,CAAC,CAAC,CAAC,GAClC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAiEhC"}
|
package/dist/replicas.js
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createReplicatedDatabase = createReplicatedDatabase;
|
|
4
|
+
const init_1 = require("./init");
|
|
5
|
+
async function createReplicatedDatabase(config) {
|
|
6
|
+
assertPreviewEnabled(config.preview);
|
|
7
|
+
if (!config.replicas.length) {
|
|
8
|
+
throw new Error('Replication requires at least one replica');
|
|
9
|
+
}
|
|
10
|
+
const primary = await (0, init_1.createDatabase)({
|
|
11
|
+
tables: config.tables,
|
|
12
|
+
...(config.seedData ? { seedData: config.seedData } : {}),
|
|
13
|
+
...(config.migrationConfig ? { migrationConfig: config.migrationConfig } : {}),
|
|
14
|
+
...(config.plugins ? { plugins: config.plugins } : {}),
|
|
15
|
+
connection: {
|
|
16
|
+
...(config.primary.connectionUrl ? { connectionUrl: config.primary.connectionUrl } : {}),
|
|
17
|
+
...(config.primary.authToken ? { authToken: config.primary.authToken } : {}),
|
|
18
|
+
...(config.primary.forceLocal ? { forceLocal: config.primary.forceLocal } : {}),
|
|
19
|
+
...(config.primary.databasePath ? { databasePath: config.primary.databasePath } : {}),
|
|
20
|
+
},
|
|
21
|
+
});
|
|
22
|
+
const replicaMap = new Map();
|
|
23
|
+
// Replicas are treated as read-only: migrations are disabled.
|
|
24
|
+
// (You can still validate schema using db.schema.validate() if desired.)
|
|
25
|
+
const replicaMigrationConfig = {
|
|
26
|
+
preserveData: true,
|
|
27
|
+
autoMigrate: false,
|
|
28
|
+
dropTables: false,
|
|
29
|
+
...(config.migrationConfig ?? {}),
|
|
30
|
+
};
|
|
31
|
+
for (const replica of config.replicas) {
|
|
32
|
+
if (replicaMap.has(replica.id)) {
|
|
33
|
+
throw new Error(`Duplicate replica id: ${replica.id}`);
|
|
34
|
+
}
|
|
35
|
+
const db = await (0, init_1.createDatabase)({
|
|
36
|
+
tables: config.tables,
|
|
37
|
+
migrationConfig: replicaMigrationConfig,
|
|
38
|
+
...(config.plugins ? { plugins: config.plugins } : {}),
|
|
39
|
+
connection: {
|
|
40
|
+
...(replica.connectionUrl ? { connectionUrl: replica.connectionUrl } : {}),
|
|
41
|
+
...(replica.authToken ? { authToken: replica.authToken } : {}),
|
|
42
|
+
...(replica.forceLocal ? { forceLocal: replica.forceLocal } : {}),
|
|
43
|
+
...(replica.databasePath ? { databasePath: replica.databasePath } : {}),
|
|
44
|
+
},
|
|
45
|
+
});
|
|
46
|
+
replicaMap.set(replica.id, db);
|
|
47
|
+
}
|
|
48
|
+
const listReplicas = () => Array.from(replicaMap.keys());
|
|
49
|
+
const replica = (id) => {
|
|
50
|
+
const db = replicaMap.get(id);
|
|
51
|
+
if (!db)
|
|
52
|
+
throw new Error(`Unknown replica: ${id}`);
|
|
53
|
+
return db;
|
|
54
|
+
};
|
|
55
|
+
const read = createReadSelector(replicaMap, config.readStrategy ?? 'round_robin');
|
|
56
|
+
return {
|
|
57
|
+
primary,
|
|
58
|
+
read,
|
|
59
|
+
write: () => primary,
|
|
60
|
+
replica,
|
|
61
|
+
listReplicas,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
function createReadSelector(replicas, strategy) {
|
|
65
|
+
const list = Array.from(replicas.values());
|
|
66
|
+
if (list.length === 0) {
|
|
67
|
+
throw new Error('No replicas available for reads');
|
|
68
|
+
}
|
|
69
|
+
if (strategy === 'random') {
|
|
70
|
+
return () => list[Math.floor(Math.random() * list.length)];
|
|
71
|
+
}
|
|
72
|
+
let index = 0;
|
|
73
|
+
return () => {
|
|
74
|
+
const db = list[index % list.length];
|
|
75
|
+
index += 1;
|
|
76
|
+
return db;
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
function assertPreviewEnabled(preview) {
|
|
80
|
+
if (!preview?.enabled) {
|
|
81
|
+
throw new Error('Replication is in preview. Set preview: { enabled: true } to use it.');
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=replicas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replicas.js","sourceRoot":"","sources":["../replicas.ts"],"names":[],"mappings":"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"}
|