edinburgh 0.4.6 → 0.5.0
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/README.md +263 -381
- package/build/src/datapack.js +1 -1
- package/build/src/datapack.js.map +1 -1
- package/build/src/edinburgh.d.ts +5 -5
- package/build/src/edinburgh.js +6 -7
- package/build/src/edinburgh.js.map +1 -1
- package/build/src/indexes.d.ts +44 -113
- package/build/src/indexes.js +145 -175
- package/build/src/indexes.js.map +1 -1
- package/build/src/migrate.js +11 -31
- package/build/src/migrate.js.map +1 -1
- package/build/src/models.d.ts +73 -54
- package/build/src/models.js +110 -171
- package/build/src/models.js.map +1 -1
- package/build/src/types.d.ts +29 -21
- package/build/src/types.js +16 -30
- package/build/src/types.js.map +1 -1
- package/package.json +1 -3
- package/skill/BaseIndex_batchProcess.md +1 -1
- package/skill/BaseIndex_find.md +2 -2
- package/skill/BaseIndex_find_2.md +7 -0
- package/skill/BaseIndex_find_3.md +7 -0
- package/skill/BaseIndex_find_4.md +7 -0
- package/skill/Model.md +5 -7
- package/skill/Model_batchProcess.md +8 -0
- package/skill/Model_delete.md +1 -1
- package/skill/Model_migrate.md +2 -4
- package/skill/Model_preCommit.md +2 -4
- package/skill/Model_preventPersist.md +1 -1
- package/skill/Model_replaceInto.md +2 -2
- package/skill/NonPrimaryIndex.md +10 -0
- package/skill/SKILL.md +140 -150
- package/skill/SecondaryIndex.md +2 -2
- package/skill/UniqueIndex.md +2 -2
- package/skill/defineModel.md +22 -0
- package/skill/field.md +2 -2
- package/skill/link.md +11 -9
- package/skill/transact.md +2 -2
- package/src/datapack.ts +1 -1
- package/src/edinburgh.ts +6 -9
- package/src/indexes.ts +155 -271
- package/src/migrate.ts +9 -30
- package/src/models.ts +186 -180
- package/src/types.ts +31 -26
- package/skill/Model_findAll.md +0 -12
- package/skill/PrimaryIndex.md +0 -8
- package/skill/PrimaryIndex_get.md +0 -17
- package/skill/PrimaryIndex_getLazy.md +0 -13
- package/skill/UniqueIndex_get.md +0 -17
- package/skill/index.md +0 -32
- package/skill/primary.md +0 -26
- package/skill/registerModel.md +0 -26
- package/skill/unique.md +0 -32
package/build/src/models.js
CHANGED
|
@@ -19,8 +19,8 @@ export function currentTxn() {
|
|
|
19
19
|
throw new DatabaseError("No active transaction. Operations must be performed within a transact() callback.", 'NO_TRANSACTION');
|
|
20
20
|
return txn;
|
|
21
21
|
}
|
|
22
|
-
import { PrimaryIndex } from "./indexes.js";
|
|
23
|
-
import { addErrorPath,
|
|
22
|
+
import { PrimaryIndex, UniqueIndex, SecondaryIndex } from "./indexes.js";
|
|
23
|
+
import { addErrorPath, dbGet, hashBytes } from "./utils.js";
|
|
24
24
|
/**
|
|
25
25
|
* Create a field definition for a model property.
|
|
26
26
|
*
|
|
@@ -35,10 +35,10 @@ import { addErrorPath, logLevel, dbGet, hashBytes, bytesEqual } from "./utils.js
|
|
|
35
35
|
*
|
|
36
36
|
* @example
|
|
37
37
|
* ```typescript
|
|
38
|
-
*
|
|
38
|
+
* const User = E.defineModel(class {
|
|
39
39
|
* name = E.field(E.string, {description: "User's full name"});
|
|
40
40
|
* age = E.field(E.opt(E.number), {description: "User's age", default: 25});
|
|
41
|
-
* }
|
|
41
|
+
* });
|
|
42
42
|
* ```
|
|
43
43
|
*/
|
|
44
44
|
export function field(type, options = {}) {
|
|
@@ -54,76 +54,90 @@ function isObjectEmpty(obj) {
|
|
|
54
54
|
}
|
|
55
55
|
return true;
|
|
56
56
|
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
*/
|
|
74
|
-
export function registerModel(MyModel) {
|
|
75
|
-
const MockModel = getMockModel(MyModel);
|
|
76
|
-
// Copy own static methods/properties
|
|
77
|
-
for (const name of Object.getOwnPropertyNames(MyModel)) {
|
|
78
|
-
if (name !== 'length' && name !== 'prototype' && name !== 'name' && name !== 'mock' && name !== 'override') {
|
|
79
|
-
MockModel[name] = MyModel[name];
|
|
57
|
+
let autoTableNameId = 0;
|
|
58
|
+
export function defineModel(cls, opts) {
|
|
59
|
+
Object.setPrototypeOf(cls.prototype, Model.prototype);
|
|
60
|
+
const MockModel = function (initial, txn = currentTxn()) {
|
|
61
|
+
this._txn = txn;
|
|
62
|
+
txn.instances.add(this);
|
|
63
|
+
if (initial)
|
|
64
|
+
Object.assign(this, initial);
|
|
65
|
+
};
|
|
66
|
+
cls.prototype.constructor = MockModel;
|
|
67
|
+
Object.setPrototypeOf(MockModel, Model);
|
|
68
|
+
MockModel.prototype = cls.prototype;
|
|
69
|
+
MockModel._original = cls;
|
|
70
|
+
for (const name of Object.getOwnPropertyNames(cls)) {
|
|
71
|
+
if (name !== 'length' && name !== 'prototype' && name !== 'name') {
|
|
72
|
+
MockModel[name] = cls[name];
|
|
80
73
|
}
|
|
81
74
|
}
|
|
82
|
-
MockModel.tableName
|
|
83
|
-
// Register the constructor by name
|
|
75
|
+
MockModel.tableName = opts?.tableName || cls.name || `Model${++autoTableNameId}`;
|
|
84
76
|
if (MockModel.tableName in modelRegistry) {
|
|
85
|
-
if (!
|
|
77
|
+
if (!opts?.override) {
|
|
86
78
|
throw new DatabaseError(`Model with table name '${MockModel.tableName}' already registered`, 'INIT_ERROR');
|
|
87
79
|
}
|
|
88
80
|
delete modelRegistry[MockModel.tableName];
|
|
89
81
|
}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
82
|
+
const instance = new cls();
|
|
83
|
+
if (!opts?.pk && !instance.id) {
|
|
84
|
+
instance.id = { type: identifier };
|
|
85
|
+
}
|
|
86
|
+
MockModel.fields = {};
|
|
87
|
+
for (const key in instance) {
|
|
88
|
+
const value = instance[key];
|
|
89
|
+
if (value && value.type instanceof TypeWrapper) {
|
|
90
|
+
MockModel.fields[key] = value;
|
|
91
|
+
const defObj = value.default === undefined ? value.type : value;
|
|
92
|
+
const def = defObj.default;
|
|
93
|
+
if (typeof def === 'function') {
|
|
94
|
+
Object.defineProperty(MockModel.prototype, key, {
|
|
95
|
+
get() {
|
|
96
|
+
return (this[key] = def.call(defObj, this));
|
|
97
|
+
},
|
|
98
|
+
set(val) {
|
|
99
|
+
Object.defineProperty(this, key, {
|
|
100
|
+
value: val,
|
|
101
|
+
configurable: true,
|
|
102
|
+
writable: true,
|
|
103
|
+
enumerable: true,
|
|
104
|
+
});
|
|
105
|
+
},
|
|
106
|
+
configurable: true,
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
else if (def !== undefined) {
|
|
110
|
+
MockModel.prototype[key] = def;
|
|
111
|
+
}
|
|
106
112
|
}
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
113
|
+
}
|
|
114
|
+
if (opts?.pk) {
|
|
115
|
+
new PrimaryIndex(MockModel, Array.isArray(opts.pk) ? opts.pk : [opts.pk]);
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
new PrimaryIndex(MockModel, ['id']);
|
|
119
|
+
}
|
|
120
|
+
const normalizeSpec = (spec) => typeof spec === 'string' ? [spec] : spec;
|
|
121
|
+
if (opts?.unique) {
|
|
122
|
+
for (const [name, spec] of Object.entries(opts.unique)) {
|
|
123
|
+
MockModel[name] = new UniqueIndex(MockModel, normalizeSpec(spec));
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
if (opts?.index) {
|
|
127
|
+
for (const [name, spec] of Object.entries(opts.index)) {
|
|
128
|
+
MockModel[name] = new SecondaryIndex(MockModel, normalizeSpec(spec));
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
modelRegistry[MockModel.tableName] = MockModel;
|
|
116
132
|
scheduleInit();
|
|
117
133
|
return MockModel;
|
|
118
134
|
}
|
|
119
|
-
// Model base class and related symbols/state
|
|
120
|
-
const INIT_INSTANCE_SYMBOL = Symbol();
|
|
121
135
|
/**
|
|
122
136
|
* Base class for all database models in the Edinburgh ORM.
|
|
123
137
|
*
|
|
124
138
|
* Models represent database entities with typed fields, automatic serialization,
|
|
125
|
-
* change tracking, and relationship management.
|
|
126
|
-
*
|
|
139
|
+
* change tracking, and relationship management. Model classes are created using
|
|
140
|
+
* `E.defineModel()`.
|
|
127
141
|
*
|
|
128
142
|
* ### Schema Evolution
|
|
129
143
|
*
|
|
@@ -159,16 +173,14 @@ const INIT_INSTANCE_SYMBOL = Symbol();
|
|
|
159
173
|
*
|
|
160
174
|
* @example
|
|
161
175
|
* ```typescript
|
|
162
|
-
*
|
|
163
|
-
* class User extends E.Model<User> {
|
|
164
|
-
* static pk = E.primary(User, "id");
|
|
165
|
-
*
|
|
176
|
+
* const User = E.defineModel(class {
|
|
166
177
|
* id = E.field(E.identifier);
|
|
167
178
|
* name = E.field(E.string);
|
|
168
179
|
* email = E.field(E.string);
|
|
169
|
-
*
|
|
170
|
-
*
|
|
171
|
-
* }
|
|
180
|
+
* }, {
|
|
181
|
+
* pk: "id",
|
|
182
|
+
* unique: { byEmail: "email" },
|
|
183
|
+
* });
|
|
172
184
|
* ```
|
|
173
185
|
*/
|
|
174
186
|
export class Model {
|
|
@@ -177,10 +189,16 @@ export class Model {
|
|
|
177
189
|
static _secondaries;
|
|
178
190
|
/** The database table name (defaults to class name). */
|
|
179
191
|
static tableName;
|
|
180
|
-
/** When true,
|
|
192
|
+
/** When true, defineModel replaces an existing model with the same tableName. */
|
|
181
193
|
static override;
|
|
182
194
|
/** Field configuration metadata. */
|
|
183
195
|
static fields;
|
|
196
|
+
// Alias statics that delegate to _primary, used by migrate.ts
|
|
197
|
+
static get _indexId() { return this._primary?._indexId; }
|
|
198
|
+
static get _currentVersion() { return this._primary._currentVersion; }
|
|
199
|
+
static get _pkFieldTypes() { return this._primary._fieldTypes; }
|
|
200
|
+
static _loadVersionInfo(txnId, version) { return this._primary._loadVersionInfo(txnId, version); }
|
|
201
|
+
static _writePrimary(txn, pk, data) { this._primary._write(txn, pk, data); }
|
|
184
202
|
/*
|
|
185
203
|
* IMPORTANT: We cannot use instance property initializers here, because we will be
|
|
186
204
|
* initializing the class through a fake constructor that will skip these. This is
|
|
@@ -197,84 +215,19 @@ export class Model {
|
|
|
197
215
|
_primaryKeyHash;
|
|
198
216
|
_txn;
|
|
199
217
|
constructor(initial = {}) {
|
|
200
|
-
|
|
201
|
-
// be created by the 'fake' constructor. The typing for `initial` *is* important though.
|
|
202
|
-
if (initial === INIT_INSTANCE_SYMBOL)
|
|
203
|
-
return;
|
|
204
|
-
throw new DatabaseError("The model needs a @E.registerModel decorator", 'INIT_ERROR');
|
|
218
|
+
throw new DatabaseError("Use defineModel() to create model classes", 'INIT_ERROR');
|
|
205
219
|
}
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
static initFields(reset) {
|
|
212
|
-
const MockModel = getMockModel(this);
|
|
213
|
-
if (reset) {
|
|
214
|
-
MockModel._primary._indexId = undefined;
|
|
215
|
-
MockModel._primary._versions.clear();
|
|
216
|
-
for (const sec of MockModel._secondaries || [])
|
|
217
|
-
sec._indexId = undefined;
|
|
218
|
-
}
|
|
219
|
-
if (MockModel.fields)
|
|
220
|
-
return;
|
|
221
|
-
// First-time init: gather field configs from a temporary instance of the original class.
|
|
222
|
-
const OrgModel = MockModel._original || this;
|
|
223
|
-
const instance = new OrgModel(INIT_INSTANCE_SYMBOL);
|
|
224
|
-
// If no primary key exists, create one using 'id' field
|
|
225
|
-
if (!MockModel._primary) {
|
|
226
|
-
if (!instance.id) {
|
|
227
|
-
instance.id = { type: identifier };
|
|
228
|
-
}
|
|
229
|
-
// @ts-ignore-next-line - `id` is not part of the type, but the user probably shouldn't touch it anyhow
|
|
230
|
-
new PrimaryIndex(MockModel, ['id']);
|
|
231
|
-
}
|
|
232
|
-
MockModel.fields = {};
|
|
233
|
-
for (const key in instance) {
|
|
234
|
-
const value = instance[key];
|
|
235
|
-
// Check if this property contains field metadata
|
|
236
|
-
if (value && value.type instanceof TypeWrapper) {
|
|
237
|
-
// Set the configuration on the constructor's `fields` property
|
|
238
|
-
MockModel.fields[key] = value;
|
|
239
|
-
// Set default value on the prototype
|
|
240
|
-
const defObj = value.default === undefined ? value.type : value;
|
|
241
|
-
const def = defObj.default;
|
|
242
|
-
if (typeof def === 'function') {
|
|
243
|
-
// The default is a function. We'll define a getter on the property in the model prototype,
|
|
244
|
-
// and once it is read, we'll run the function and set the value as a plain old property
|
|
245
|
-
// on the instance object.
|
|
246
|
-
Object.defineProperty(MockModel.prototype, key, {
|
|
247
|
-
get() {
|
|
248
|
-
// This will call set(), which will define the property on the instance.
|
|
249
|
-
return (this[key] = def.call(defObj, this));
|
|
250
|
-
},
|
|
251
|
-
set(val) {
|
|
252
|
-
Object.defineProperty(this, key, {
|
|
253
|
-
value: val,
|
|
254
|
-
configurable: true,
|
|
255
|
-
writable: true,
|
|
256
|
-
enumerable: true,
|
|
257
|
-
});
|
|
258
|
-
},
|
|
259
|
-
configurable: true,
|
|
260
|
-
});
|
|
261
|
-
}
|
|
262
|
-
else if (def !== undefined) {
|
|
263
|
-
MockModel.prototype[key] = def;
|
|
264
|
-
}
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
if (logLevel >= 1) {
|
|
268
|
-
console.log(`[edinburgh] Registered model ${MockModel.tableName} with fields: ${Object.keys(MockModel.fields).join(' ')}`);
|
|
269
|
-
}
|
|
220
|
+
static _resetIndexes() {
|
|
221
|
+
this._primary._indexId = undefined;
|
|
222
|
+
this._primary._versions.clear();
|
|
223
|
+
for (const sec of this._secondaries || [])
|
|
224
|
+
sec._indexId = undefined;
|
|
270
225
|
}
|
|
271
226
|
static async _loadCreateIndexes() {
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
await MockModel._primary._delayedInit();
|
|
275
|
-
for (const sec of MockModel._secondaries || [])
|
|
227
|
+
await this._primary._delayedInit();
|
|
228
|
+
for (const sec of this._secondaries || [])
|
|
276
229
|
await sec._delayedInit();
|
|
277
|
-
await
|
|
230
|
+
await this._primary._initVersioning();
|
|
278
231
|
}
|
|
279
232
|
_setLoadedField(fieldName, value) {
|
|
280
233
|
const oldValues = this._oldValues;
|
|
@@ -296,7 +249,7 @@ export class Model {
|
|
|
296
249
|
getPrimaryKey() {
|
|
297
250
|
let key = this._primaryKey;
|
|
298
251
|
if (key === undefined) {
|
|
299
|
-
key = this.constructor._primary.
|
|
252
|
+
key = this.constructor._primary._serializeKey(this).toUint8Array();
|
|
300
253
|
this._setPrimaryKey(key);
|
|
301
254
|
}
|
|
302
255
|
return key;
|
|
@@ -349,8 +302,8 @@ export class Model {
|
|
|
349
302
|
// We're doing an update. Note that we may still be in a lazy state, and we don't want to load
|
|
350
303
|
// the whole object just to see if something changed.
|
|
351
304
|
// Add old values of changed fields to 'changed'.
|
|
305
|
+
const changed = {};
|
|
352
306
|
const fields = this.constructor.fields;
|
|
353
|
-
let changed = {};
|
|
354
307
|
for (const fieldName in oldValues) {
|
|
355
308
|
const oldValue = oldValues[fieldName];
|
|
356
309
|
const newValue = this[fieldName];
|
|
@@ -374,24 +327,7 @@ export class Model {
|
|
|
374
327
|
this.constructor._primary._write(txn, pk, this);
|
|
375
328
|
// Update any secondaries with changed fields
|
|
376
329
|
for (const index of this.constructor._secondaries || []) {
|
|
377
|
-
|
|
378
|
-
// Computed indexes may depend on any field — compare serialized keys
|
|
379
|
-
const oldKeyBytes = index._serializeKeyFields(oldValues).toUint8Array();
|
|
380
|
-
const newKeyBytes = index._serializeKeyFields(this).toUint8Array();
|
|
381
|
-
if (!bytesEqual(oldKeyBytes, newKeyBytes)) {
|
|
382
|
-
index._delete(txn, pk, oldValues);
|
|
383
|
-
index._write(txn, pk, this);
|
|
384
|
-
}
|
|
385
|
-
}
|
|
386
|
-
else {
|
|
387
|
-
for (const field of index._fieldTypes.keys()) {
|
|
388
|
-
if (changed.hasOwnProperty(field)) {
|
|
389
|
-
index._delete(txn, pk, oldValues);
|
|
390
|
-
index._write(txn, pk, this);
|
|
391
|
-
break;
|
|
392
|
-
}
|
|
393
|
-
}
|
|
394
|
-
}
|
|
330
|
+
index._update(txn, pk, this, oldValues);
|
|
395
331
|
}
|
|
396
332
|
return changed;
|
|
397
333
|
}
|
|
@@ -402,7 +338,7 @@ export class Model {
|
|
|
402
338
|
*
|
|
403
339
|
* @example
|
|
404
340
|
* ```typescript
|
|
405
|
-
* const user = User.
|
|
341
|
+
* const user = User.get("user123");
|
|
406
342
|
* user.name = "New Name";
|
|
407
343
|
* user.preventPersist(); // Changes won't be saved
|
|
408
344
|
* ```
|
|
@@ -413,15 +349,18 @@ export class Model {
|
|
|
413
349
|
Object.defineProperty(this, "_txn", PREVENT_PERSIST_DESCRIPTOR);
|
|
414
350
|
return this;
|
|
415
351
|
}
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
static
|
|
352
|
+
static get(...args) {
|
|
353
|
+
return this._primary.get(...args);
|
|
354
|
+
}
|
|
355
|
+
static getLazy(...args) {
|
|
356
|
+
return this._primary.getLazy(...args);
|
|
357
|
+
}
|
|
358
|
+
static find(opts) {
|
|
423
359
|
return this._primary.find(opts);
|
|
424
360
|
}
|
|
361
|
+
static batchProcess(opts, callback) {
|
|
362
|
+
return this._primary.batchProcess(opts, callback);
|
|
363
|
+
}
|
|
425
364
|
/**
|
|
426
365
|
* Load an existing instance by primary key and update it, or create a new one.
|
|
427
366
|
*
|
|
@@ -459,7 +398,7 @@ export class Model {
|
|
|
459
398
|
*
|
|
460
399
|
* @example
|
|
461
400
|
* ```typescript
|
|
462
|
-
* const user = User.
|
|
401
|
+
* const user = User.get("user123");
|
|
463
402
|
* user.delete(); // Removes from database
|
|
464
403
|
* ```
|
|
465
404
|
*/
|
|
@@ -522,7 +461,7 @@ export class Model {
|
|
|
522
461
|
}
|
|
523
462
|
toString() {
|
|
524
463
|
const primary = this.constructor._primary;
|
|
525
|
-
const pk = primary._keyToArray(this._primaryKey || primary.
|
|
464
|
+
const pk = primary._keyToArray(this._primaryKey || primary._serializeKey(this).toUint8Array(false));
|
|
526
465
|
return `{Model:${this.constructor.tableName} ${this.getState()} ${pk}}`;
|
|
527
466
|
}
|
|
528
467
|
[Symbol.for('nodejs.util.inspect.custom')]() {
|
package/build/src/models.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":"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"}
|
package/build/src/types.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import DataPack from "./datapack.js";
|
|
2
2
|
import { DatabaseError } from "olmdb/lowlevel";
|
|
3
3
|
import { Model, FieldConfig } from "./models.js";
|
|
4
|
-
import { PrimaryIndex, BaseIndex, IndexRangeIterator } from "./indexes.js";
|
|
5
4
|
/**
|
|
6
5
|
* @internal Abstract base class for all type wrappers in the Edinburgh ORM system.
|
|
7
6
|
*
|
|
@@ -49,7 +48,7 @@ export declare abstract class TypeWrapper<const T> {
|
|
|
49
48
|
toString(): string;
|
|
50
49
|
clone(value: T): T;
|
|
51
50
|
equals(value1: T, value2: T): boolean;
|
|
52
|
-
getLinkedModel():
|
|
51
|
+
getLinkedModel(): undefined | typeof Model<unknown>;
|
|
53
52
|
}
|
|
54
53
|
export interface TypeWrapper<T> {
|
|
55
54
|
/**
|
|
@@ -88,39 +87,45 @@ export declare class SetType<T> extends TypeWrapper<Set<T>> {
|
|
|
88
87
|
equals(a: Set<T>, b: Set<T>): boolean;
|
|
89
88
|
toString(): string;
|
|
90
89
|
getLinkedModel(): ((abstract new (initial?: Partial<Omit<unknown, "constructor">>) => Model<unknown>) & {
|
|
91
|
-
_primary: PrimaryIndex<any, any>;
|
|
92
|
-
_secondaries?:
|
|
90
|
+
_primary: import("./indexes.js").PrimaryIndex<any, any>;
|
|
91
|
+
_secondaries?: import("./indexes.js").NonPrimaryIndex<any, readonly (keyof any & string)[]>[];
|
|
93
92
|
tableName: string;
|
|
94
93
|
override?: boolean;
|
|
95
94
|
fields: Record<string | symbol | number, FieldConfig<unknown>>;
|
|
95
|
+
readonly _indexId: number | undefined;
|
|
96
|
+
readonly _currentVersion: number;
|
|
97
|
+
readonly _pkFieldTypes: Map<string, TypeWrapper<any>>;
|
|
98
|
+
_loadVersionInfo(txnId: number, version: number): import("./indexes.js").VersionInfo;
|
|
99
|
+
_writePrimary(txn: import("./models.js").Transaction, pk: Uint8Array, data: Record<string, any>): void;
|
|
96
100
|
migrate?(record: Record<string, any>): void;
|
|
97
|
-
|
|
101
|
+
_resetIndexes(): void;
|
|
98
102
|
_loadCreateIndexes(): Promise<void>;
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
+
get(...args: any[]): any;
|
|
104
|
+
getLazy(...args: any[]): any;
|
|
105
|
+
find(opts?: any): any;
|
|
106
|
+
batchProcess(opts: any, callback?: any): any;
|
|
107
|
+
replaceInto<T_1 extends typeof Model<any>>(this: T_1, obj: Partial<Record<string, any>>): InstanceType<T_1>;
|
|
103
108
|
}) | undefined;
|
|
104
109
|
}
|
|
105
110
|
/**
|
|
106
111
|
* @internal Type wrapper for model relationships (foreign keys).
|
|
107
112
|
* @template T - The target model class type.
|
|
108
113
|
*/
|
|
109
|
-
export declare class LinkType<T extends
|
|
114
|
+
export declare class LinkType<T extends new (...args: any[]) => Model<any>> extends TypeWrapper<InstanceType<T>> {
|
|
110
115
|
kind: string;
|
|
111
|
-
|
|
116
|
+
private TargetModel;
|
|
112
117
|
/**
|
|
113
118
|
* Create a new LinkType.
|
|
114
|
-
* @param TargetModel - The model class this link points to.
|
|
119
|
+
* @param TargetModel - The model class this link points to, or a thunk for forward references.
|
|
115
120
|
*/
|
|
116
|
-
constructor(TargetModel: T);
|
|
121
|
+
constructor(TargetModel: T | (() => T));
|
|
122
|
+
getLinkedModel(): typeof Model<unknown>;
|
|
117
123
|
serialize(model: InstanceType<T>, pack: DataPack): void;
|
|
118
124
|
deserialize(pack: DataPack): any;
|
|
119
125
|
getError(value: InstanceType<T>): DatabaseError | undefined;
|
|
120
126
|
serializeType(pack: DataPack): void;
|
|
121
127
|
static deserializeType(pack: DataPack, featureFlags: number): LinkType<any>;
|
|
122
128
|
toString(): string;
|
|
123
|
-
getLinkedModel(): T;
|
|
124
129
|
}
|
|
125
130
|
/** Type wrapper instance for the string type. */
|
|
126
131
|
export declare const string: TypeWrapper<string>;
|
|
@@ -234,16 +239,19 @@ export declare function record<const T>(inner: TypeWrapper<T>): TypeWrapper<Reco
|
|
|
234
239
|
*
|
|
235
240
|
* @example
|
|
236
241
|
* ```typescript
|
|
237
|
-
*
|
|
238
|
-
*
|
|
239
|
-
*
|
|
242
|
+
* const Author = E.defineModel(class {
|
|
243
|
+
* id = E.field(E.identifier);
|
|
244
|
+
* posts = E.field(E.array(E.link(() => Book)));
|
|
245
|
+
* }, { pk: "id" });
|
|
240
246
|
*
|
|
241
|
-
*
|
|
242
|
-
*
|
|
243
|
-
*
|
|
247
|
+
* const Book = E.defineModel(class {
|
|
248
|
+
* id = E.field(E.identifier);
|
|
249
|
+
* author = E.field(E.link(Author));
|
|
250
|
+
* }, { pk: "id" });
|
|
244
251
|
* ```
|
|
245
252
|
*/
|
|
246
|
-
export declare function link<const T extends
|
|
253
|
+
export declare function link<const T extends new (...args: any[]) => Model<any>>(TargetModel: T): TypeWrapper<InstanceType<T>>;
|
|
254
|
+
export declare function link<const T extends new (...args: any[]) => Model<any>>(TargetModel: () => T): TypeWrapper<InstanceType<T>>;
|
|
247
255
|
export type BasicType = string | number | boolean | undefined | null;
|
|
248
256
|
export type UnwrapTypes<T extends (TypeWrapper<unknown> | BasicType)[]> = {
|
|
249
257
|
[K in keyof T]: T[K] extends TypeWrapper<infer U> ? U : T[K];
|
package/build/src/types.js
CHANGED
|
@@ -276,7 +276,7 @@ class RecordType extends TypeWrapper {
|
|
|
276
276
|
}
|
|
277
277
|
serialize(value, pack) {
|
|
278
278
|
pack.writeCollectionBoundary('object');
|
|
279
|
-
for (const key
|
|
279
|
+
for (const key in value) {
|
|
280
280
|
pack.writeObjectKey(key);
|
|
281
281
|
this.inner.serialize(value[key], pack);
|
|
282
282
|
}
|
|
@@ -294,7 +294,7 @@ class RecordType extends TypeWrapper {
|
|
|
294
294
|
return result;
|
|
295
295
|
}
|
|
296
296
|
getError(value) {
|
|
297
|
-
if (typeof value !== 'object' || value === null || Array.isArray(value)) {
|
|
297
|
+
if (typeof value !== 'object' || value === null || Array.isArray(value) || (typeof value.length === 'number' && typeof value[Symbol.iterator] === 'function')) {
|
|
298
298
|
return new DatabaseError(`Expected object, got ${typeof value}`, 'INVALID_TYPE');
|
|
299
299
|
}
|
|
300
300
|
for (const key of Object.keys(value)) {
|
|
@@ -498,28 +498,34 @@ class IdentifierType extends TypeWrapper {
|
|
|
498
498
|
*/
|
|
499
499
|
export class LinkType extends TypeWrapper {
|
|
500
500
|
kind = 'link';
|
|
501
|
-
|
|
501
|
+
TargetModel;
|
|
502
502
|
/**
|
|
503
503
|
* Create a new LinkType.
|
|
504
|
-
* @param TargetModel - The model class this link points to.
|
|
504
|
+
* @param TargetModel - The model class this link points to, or a thunk for forward references.
|
|
505
505
|
*/
|
|
506
506
|
constructor(TargetModel) {
|
|
507
507
|
super();
|
|
508
|
-
this.
|
|
508
|
+
this.TargetModel = TargetModel;
|
|
509
|
+
}
|
|
510
|
+
getLinkedModel() {
|
|
511
|
+
if (!('getLazy' in this.TargetModel))
|
|
512
|
+
this.TargetModel = this.TargetModel();
|
|
513
|
+
return this.TargetModel;
|
|
509
514
|
}
|
|
510
515
|
serialize(model, pack) {
|
|
511
516
|
pack.write(model.getPrimaryKey());
|
|
512
517
|
}
|
|
513
518
|
deserialize(pack) {
|
|
514
|
-
return
|
|
519
|
+
return this.getLinkedModel()._primary._get(currentTxn(), pack.readUint8Array(), false);
|
|
515
520
|
}
|
|
516
521
|
getError(value) {
|
|
517
|
-
|
|
518
|
-
|
|
522
|
+
const TargetModel = this.getLinkedModel();
|
|
523
|
+
if (!(value instanceof TargetModel)) {
|
|
524
|
+
return new DatabaseError(`Expected instance of ${TargetModel.tableName}, got ${typeof value}`, 'VALUE_ERROR');
|
|
519
525
|
}
|
|
520
526
|
}
|
|
521
527
|
serializeType(pack) {
|
|
522
|
-
pack.write(this.tableName);
|
|
528
|
+
pack.write(this.getLinkedModel().tableName);
|
|
523
529
|
}
|
|
524
530
|
static deserializeType(pack, featureFlags) {
|
|
525
531
|
const tableName = pack.readString();
|
|
@@ -528,10 +534,7 @@ export class LinkType extends TypeWrapper {
|
|
|
528
534
|
throw new DatabaseError(`Could not deserialize undefined model ${tableName}`, 'DESERIALIZATION_ERROR');
|
|
529
535
|
return new LinkType(targetModel);
|
|
530
536
|
}
|
|
531
|
-
toString() { return `link<${this.tableName}>`; }
|
|
532
|
-
getLinkedModel() {
|
|
533
|
-
return modelRegistry[this.tableName];
|
|
534
|
-
}
|
|
537
|
+
toString() { return `link<${this.getLinkedModel().tableName}>`; }
|
|
535
538
|
}
|
|
536
539
|
/** Type wrapper instance for the string type. */
|
|
537
540
|
export const string = new StringType();
|
|
@@ -643,23 +646,6 @@ export function set(inner, opts = {}) {
|
|
|
643
646
|
export function record(inner) {
|
|
644
647
|
return new RecordType(wrapIfLiteral(inner));
|
|
645
648
|
}
|
|
646
|
-
/**
|
|
647
|
-
* Create a link type wrapper for model relationships.
|
|
648
|
-
* @template T - The target model class.
|
|
649
|
-
* @param TargetModel - The model class this link points to.
|
|
650
|
-
* @returns A link type instance.
|
|
651
|
-
*
|
|
652
|
-
* @example
|
|
653
|
-
* ```typescript
|
|
654
|
-
* class User extends E.Model<User> {
|
|
655
|
-
* posts = E.field(E.array(E.link(Post, 'author')));
|
|
656
|
-
* }
|
|
657
|
-
*
|
|
658
|
-
* class Post extends E.Model<Post> {
|
|
659
|
-
* author = E.field(E.link(User));
|
|
660
|
-
* }
|
|
661
|
-
* ```
|
|
662
|
-
*/
|
|
663
649
|
export function link(TargetModel) {
|
|
664
650
|
return new LinkType(TargetModel);
|
|
665
651
|
}
|