edinburgh 0.4.5 → 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.
Files changed (53) hide show
  1. package/README.md +268 -374
  2. package/build/src/datapack.js +1 -1
  3. package/build/src/datapack.js.map +1 -1
  4. package/build/src/edinburgh.d.ts +5 -5
  5. package/build/src/edinburgh.js +8 -7
  6. package/build/src/edinburgh.js.map +1 -1
  7. package/build/src/indexes.d.ts +46 -116
  8. package/build/src/indexes.js +148 -180
  9. package/build/src/indexes.js.map +1 -1
  10. package/build/src/migrate.js +11 -31
  11. package/build/src/migrate.js.map +1 -1
  12. package/build/src/models.d.ts +74 -49
  13. package/build/src/models.js +112 -165
  14. package/build/src/models.js.map +1 -1
  15. package/build/src/types.d.ts +30 -21
  16. package/build/src/types.js +16 -30
  17. package/build/src/types.js.map +1 -1
  18. package/package.json +1 -3
  19. package/skill/BaseIndex_batchProcess.md +1 -1
  20. package/skill/BaseIndex_find.md +2 -2
  21. package/skill/BaseIndex_find_2.md +7 -0
  22. package/skill/BaseIndex_find_3.md +7 -0
  23. package/skill/BaseIndex_find_4.md +7 -0
  24. package/skill/Model.md +5 -7
  25. package/skill/Model_batchProcess.md +8 -0
  26. package/skill/Model_delete.md +1 -1
  27. package/skill/Model_migrate.md +2 -4
  28. package/skill/Model_preCommit.md +2 -4
  29. package/skill/Model_preventPersist.md +1 -1
  30. package/skill/Model_replaceInto.md +2 -2
  31. package/skill/NonPrimaryIndex.md +10 -0
  32. package/skill/SKILL.md +146 -144
  33. package/skill/SecondaryIndex.md +2 -2
  34. package/skill/UniqueIndex.md +2 -2
  35. package/skill/defineModel.md +22 -0
  36. package/skill/field.md +2 -2
  37. package/skill/link.md +11 -9
  38. package/skill/transact.md +2 -2
  39. package/src/datapack.ts +1 -1
  40. package/src/edinburgh.ts +8 -9
  41. package/src/indexes.ts +157 -276
  42. package/src/migrate.ts +9 -30
  43. package/src/models.ts +188 -174
  44. package/src/types.ts +31 -26
  45. package/skill/Model_findAll.md +0 -12
  46. package/skill/PrimaryIndex.md +0 -8
  47. package/skill/PrimaryIndex_get.md +0 -17
  48. package/skill/PrimaryIndex_getLazy.md +0 -13
  49. package/skill/UniqueIndex_get.md +0 -17
  50. package/skill/index.md +0 -32
  51. package/skill/primary.md +0 -26
  52. package/skill/registerModel.md +0 -26
  53. package/skill/unique.md +0 -32
@@ -1,7 +1,7 @@
1
1
  import * as lowlevel from "olmdb/lowlevel";
2
2
  import DataPack from "./datapack.js";
3
3
  import { modelRegistry, currentTxn } from "./models.js";
4
- import { dbDel, toBuffer, bytesEqual } from "./utils.js";
4
+ import { dbDel, toBuffer } from "./utils.js";
5
5
  import { deserializeType } from "./types.js";
6
6
  import { transact } from "./edinburgh.js";
7
7
  const INDEX_ID_PREFIX = -2;
@@ -73,13 +73,12 @@ export async function runMigration(options = {}) {
73
73
  };
74
74
  // Build maps of known index IDs
75
75
  const knownIndexIds = new Set();
76
- const primaryByIndexId = new Map();
76
+ const modelByPkIndexId = new Map();
77
77
  for (const model of Object.values(modelRegistry)) {
78
78
  if (options.tables && !options.tables.includes(model.tableName))
79
79
  continue;
80
- const primary = model._primary;
81
- knownIndexIds.add(primary._indexId);
82
- primaryByIndexId.set(primary._indexId, { model, primary });
80
+ knownIndexIds.add(model._indexId);
81
+ modelByPkIndexId.set(model._indexId, model);
83
82
  for (const sec of model._secondaries || []) {
84
83
  knownIndexIds.add(sec._indexId);
85
84
  }
@@ -110,7 +109,7 @@ export async function runMigration(options = {}) {
110
109
  });
111
110
  // Phase 1: Populate secondary indexes and/or rewrite row data
112
111
  if (populateSecondaries || rewriteData) {
113
- for (const [indexId, { model, primary }] of primaryByIndexId) {
112
+ for (const [indexId, model] of modelByPkIndexId) {
114
113
  let secondaryCount = 0;
115
114
  let rewrittenCount = 0;
116
115
  const migrateFn = model.migrate;
@@ -118,14 +117,14 @@ export async function runMigration(options = {}) {
118
117
  await forEachRow(indexId, (txn, keyBuf, valueBuf) => {
119
118
  const valuePack = new DataPack(valueBuf);
120
119
  const version = valuePack.readNumber();
121
- if (version === primary._currentVersion)
120
+ if (version === model._currentVersion)
122
121
  return; // Already current
123
- const versionInfo = primary._loadVersionInfo(txn.id, version);
122
+ const versionInfo = model._loadVersionInfo(txn.id, version);
124
123
  // Deserialize pre-migrate values from key + old-format value
125
124
  const record = {};
126
125
  const keyPack = new DataPack(keyBuf);
127
126
  keyPack.readNumber(); // skip indexId
128
- for (const [name, type] of primary._fieldTypes.entries()) {
127
+ for (const [name, type] of model._pkFieldTypes.entries()) {
129
128
  record[name] = type.deserialize(keyPack);
130
129
  }
131
130
  for (const [name, type] of versionInfo.nonKeyFields.entries()) {
@@ -144,33 +143,14 @@ export async function runMigration(options = {}) {
144
143
  secondaryCount++;
145
144
  }
146
145
  else if (preMigrate) {
147
- if (sec._computeFn) {
148
- // Computed indexes: compare serialized keys to avoid unnecessary re-indexing
149
- const oldKeyBytes = sec._serializeKeyFields(preMigrate).toUint8Array();
150
- const newKeyBytes = sec._serializeKeyFields(record).toUint8Array();
151
- if (!bytesEqual(oldKeyBytes, newKeyBytes)) {
152
- sec._delete(txn, keyBuf, preMigrate);
153
- sec._write(txn, keyBuf, record);
154
- secondaryCount++;
155
- }
156
- }
157
- else {
158
- // Existing secondary, update if migrate changed any of its fields
159
- for (const [field, type] of sec._fieldTypes.entries()) {
160
- if (!type.equals(preMigrate[field], record[field])) {
161
- sec._delete(txn, keyBuf, preMigrate);
162
- sec._write(txn, keyBuf, record);
163
- secondaryCount++;
164
- break;
165
- }
166
- }
167
- }
146
+ if (sec._update(txn, keyBuf, record, preMigrate))
147
+ secondaryCount++;
168
148
  }
169
149
  }
170
150
  }
171
151
  // Rewrite primary row data to current version
172
152
  if (rewriteData) {
173
- primary._write(txn, keyBuf, record);
153
+ model._writePrimary(txn, keyBuf, record);
174
154
  rewrittenCount++;
175
155
  }
176
156
  });
@@ -1 +1 @@
1
- {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/migrate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/migrate.ts"],"names":[],"mappings":"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"}
@@ -12,7 +12,7 @@ export interface Transaction {
12
12
  instances: Set<Model<unknown>>;
13
13
  instancesByPk: Map<number, Model<unknown>>;
14
14
  }
15
- import { BaseIndex as BaseIndex, PrimaryIndex, IndexRangeIterator } from "./indexes.js";
15
+ import { NonPrimaryIndex, PrimaryIndex, IndexRangeIterator, UniqueIndex, SecondaryIndex, FindOptions } from "./indexes.js";
16
16
  /**
17
17
  * Configuration interface for model fields.
18
18
  * @template T - The field type.
@@ -39,34 +39,63 @@ export interface FieldConfig<T> {
39
39
  *
40
40
  * @example
41
41
  * ```typescript
42
- * class User extends E.Model<User> {
42
+ * const User = E.defineModel(class {
43
43
  * name = E.field(E.string, {description: "User's full name"});
44
44
  * age = E.field(E.opt(E.number), {description: "User's age", default: 25});
45
- * }
45
+ * });
46
46
  * ```
47
47
  */
48
48
  export declare function field<T>(type: TypeWrapper<T>, options?: Partial<FieldConfig<T>>): T;
49
49
  export declare const modelRegistry: Record<string, typeof Model>;
50
50
  export type Change = Record<any, any> | "created" | "deleted";
51
+ type FieldsOf<T> = T extends new () => infer I ? I : never;
52
+ type ModelInstance<FIELDS> = FIELDS & Model<FIELDS>;
53
+ type PKArgs<FIELDS, PK> = PK extends readonly (keyof FIELDS & string)[] ? {
54
+ [I in keyof PK]: PK[I] extends keyof FIELDS ? FIELDS[PK[I]] : never;
55
+ } : PK extends keyof FIELDS & string ? [FIELDS[PK]] : [string];
56
+ type UniqueFor<SPEC> = SPEC extends readonly string[] ? UniqueIndex<any, SPEC> : SPEC extends string ? UniqueIndex<any, [SPEC]> : SPEC extends (instance: any) => infer R ? R extends (infer V)[] ? UniqueIndex<any, [], [V]> : UniqueIndex<any, [], [R]> : never;
57
+ type SecondaryFor<SPEC> = SPEC extends readonly string[] ? SecondaryIndex<any, SPEC> : SPEC extends string ? SecondaryIndex<any, [SPEC]> : SPEC extends (instance: any) => infer R ? R extends (infer V)[] ? SecondaryIndex<any, [], [V]> : SecondaryIndex<any, [], [R]> : never;
58
+ type RegisteredModel<FIELDS, PKA extends readonly any[], UNIQUE, INDEX> = {
59
+ new (initial?: Partial<FIELDS>): ModelInstance<FIELDS>;
60
+ tableName: string;
61
+ fields: Record<string | symbol | number, FieldConfig<unknown>>;
62
+ get(...args: PKA): ModelInstance<FIELDS> | undefined;
63
+ getLazy(...args: PKA): ModelInstance<FIELDS>;
64
+ find(opts: FindOptions<PKA, 'first'>): ModelInstance<FIELDS> | undefined;
65
+ find(opts: FindOptions<PKA, 'single'>): ModelInstance<FIELDS>;
66
+ find(opts?: FindOptions<PKA>): IndexRangeIterator<any>;
67
+ batchProcess(opts?: FindOptions<PKA> & {
68
+ limitSeconds?: number;
69
+ limitRows?: number;
70
+ }, callback?: (row: ModelInstance<FIELDS>) => any): Promise<void>;
71
+ replaceInto(obj: Partial<FIELDS>): ModelInstance<FIELDS>;
72
+ } & {
73
+ [K in keyof UNIQUE]: UniqueFor<UNIQUE[K]>;
74
+ } & {
75
+ [K in keyof INDEX]: SecondaryFor<INDEX[K]>;
76
+ };
51
77
  /**
52
78
  * Register a model class with the Edinburgh ORM system.
53
79
  *
54
- * @template T - The model class type.
55
- * @param MyModel - The model class to register.
56
- * @returns The enhanced model class with ORM capabilities.
80
+ * Converts a plain class into a fully-featured model with database persistence,
81
+ * typed fields, primary key access, and optional secondary and unique indexes.
57
82
  *
58
- * @example
59
- * ```typescript
60
- * ⁣@E.registerModel
61
- * class User extends E.Model<User> {
62
- * static pk = E.index(User, ["id"], "primary");
63
- * id = E.field(E.identifier);
64
- * name = E.field(E.string);
65
- * }
66
- * ```
83
+ * @param cls - A plain class whose properties use E.field().
84
+ * @param opts - Registration options.
85
+ * @param opts.pk - Primary key field name or array of field names.
86
+ * @param opts.unique - Named unique index specifications (field name, field array, or compute function).
87
+ * @param opts.index - Named secondary index specifications (field name, field array, or compute function).
88
+ * @param opts.tableName - Explicit database table name.
89
+ * @param opts.override - Replace a previous model with the same table name.
90
+ * @returns The enhanced model constructor.
67
91
  */
68
- export declare function registerModel<T extends typeof Model<unknown>>(MyModel: T): T;
69
- export declare function getMockModel<T extends typeof Model<unknown>>(OrgModel: T): T;
92
+ export declare function defineModel<T extends new () => any, const PK extends (keyof FieldsOf<T> & string) | readonly (keyof FieldsOf<T> & string)[], const UNIQUE extends Record<string, (keyof FieldsOf<T> & string) | readonly (keyof FieldsOf<T> & string)[] | ((instance: any) => any)>, const INDEX extends Record<string, (keyof FieldsOf<T> & string) | readonly (keyof FieldsOf<T> & string)[] | ((instance: any) => any)>>(cls: T, opts?: {
93
+ pk?: PK;
94
+ unique?: UNIQUE;
95
+ index?: INDEX;
96
+ tableName?: string;
97
+ override?: boolean;
98
+ }): RegisteredModel<FieldsOf<T>, PKArgs<FieldsOf<T>, PK>, UNIQUE, INDEX>;
70
99
  /**
71
100
  * Model interface that ensures proper typing for the constructor property.
72
101
  * @template SUB - The concrete model subclass.
@@ -78,8 +107,8 @@ export interface Model<SUB> {
78
107
  * Base class for all database models in the Edinburgh ORM.
79
108
  *
80
109
  * Models represent database entities with typed fields, automatic serialization,
81
- * change tracking, and relationship management. All model classes should extend
82
- * this base class and be decorated with `@E.registerModel`.
110
+ * change tracking, and relationship management. Model classes are created using
111
+ * `E.defineModel()`.
83
112
  *
84
113
  * ### Schema Evolution
85
114
  *
@@ -115,28 +144,31 @@ export interface Model<SUB> {
115
144
  *
116
145
  * @example
117
146
  * ```typescript
118
- * ⁣@E.registerModel
119
- * class User extends E.Model<User> {
120
- * static pk = E.primary(User, "id");
121
- *
147
+ * const User = E.defineModel(class {
122
148
  * id = E.field(E.identifier);
123
149
  * name = E.field(E.string);
124
150
  * email = E.field(E.string);
125
- *
126
- * static byEmail = E.unique(User, "email");
127
- * }
151
+ * }, {
152
+ * pk: "id",
153
+ * unique: { byEmail: "email" },
154
+ * });
128
155
  * ```
129
156
  */
130
157
  export declare abstract class Model<SUB> {
131
158
  static _primary: PrimaryIndex<any, any>;
132
159
  /** @internal All non-primary indexes for this model. */
133
- static _secondaries?: BaseIndex<any, readonly (keyof any & string)[]>[];
160
+ static _secondaries?: NonPrimaryIndex<any, readonly (keyof any & string)[]>[];
134
161
  /** The database table name (defaults to class name). */
135
162
  static tableName: string;
136
- /** When true, registerModel replaces an existing model with the same tableName. */
163
+ /** When true, defineModel replaces an existing model with the same tableName. */
137
164
  static override?: boolean;
138
165
  /** Field configuration metadata. */
139
166
  static fields: Record<string | symbol | number, FieldConfig<unknown>>;
167
+ static get _indexId(): number | undefined;
168
+ static get _currentVersion(): number;
169
+ static get _pkFieldTypes(): Map<string, TypeWrapper<any>>;
170
+ static _loadVersionInfo(txnId: number, version: number): import("./indexes.js").VersionInfo;
171
+ static _writePrimary(txn: Transaction, pk: Uint8Array, data: Record<string, any>): void;
140
172
  /**
141
173
  * Optional migration function called when deserializing rows written with an older schema version.
142
174
  * Receives a plain record with all fields (primary key fields + value fields) and should mutate it
@@ -153,9 +185,7 @@ export declare abstract class Model<SUB> {
153
185
  *
154
186
  * @example
155
187
  * ```typescript
156
- * ⁣@E.registerModel
157
- * class User extends E.Model<User> {
158
- * static pk = E.primary(User, "id");
188
+ * const User = E.defineModel(class {
159
189
  * id = E.field(E.identifier);
160
190
  * name = E.field(E.string);
161
191
  * role = E.field(E.string); // new field
@@ -163,7 +193,7 @@ export declare abstract class Model<SUB> {
163
193
  * static migrate(record: Record<string, any>) {
164
194
  * record.role ??= "user"; // default for rows that predate the 'role' field
165
195
  * }
166
- * }
196
+ * }, { pk: "id" });
167
197
  * ```
168
198
  */
169
199
  static migrate?(record: Record<string, any>): void;
@@ -190,9 +220,7 @@ export declare abstract class Model<SUB> {
190
220
  *
191
221
  * @example
192
222
  * ```typescript
193
- * ⁣@E.registerModel
194
- * class Post extends E.Model<Post> {
195
- * static pk = E.primary(Post, "id");
223
+ * const Post = E.defineModel(class {
196
224
  * id = E.field(E.identifier);
197
225
  * title = E.field(E.string);
198
226
  * slug = E.field(E.string);
@@ -200,11 +228,12 @@ export declare abstract class Model<SUB> {
200
228
  * preCommit() {
201
229
  * this.slug = this.title.toLowerCase().replace(/\s+/g, "-");
202
230
  * }
203
- * }
231
+ * }, { pk: "id" });
204
232
  * ```
205
233
  */
206
234
  preCommit?(): void;
207
- static _delayedInit(cleared?: boolean): Promise<void>;
235
+ static _resetIndexes(): void;
236
+ static _loadCreateIndexes(): Promise<void>;
208
237
  _setLoadedField(fieldName: string, value: any): void;
209
238
  /**
210
239
  * @returns The primary key for this instance.
@@ -224,21 +253,16 @@ export declare abstract class Model<SUB> {
224
253
  *
225
254
  * @example
226
255
  * ```typescript
227
- * const user = User.load("user123");
256
+ * const user = User.get("user123");
228
257
  * user.name = "New Name";
229
258
  * user.preventPersist(); // Changes won't be saved
230
259
  * ```
231
260
  */
232
261
  preventPersist(): this;
233
- /**
234
- * Find all instances of this model in the database, ordered by primary key.
235
- * @param opts - Optional parameters.
236
- * @param opts.reverse - If true, iterate in reverse order.
237
- * @returns An iterator.
238
- */
239
- static findAll<T extends typeof Model<unknown>>(this: T, opts?: {
240
- reverse?: boolean;
241
- }): IndexRangeIterator<T>;
262
+ static get(...args: any[]): any;
263
+ static getLazy(...args: any[]): any;
264
+ static find(opts?: any): any;
265
+ static batchProcess(opts: any, callback?: any): any;
242
266
  /**
243
267
  * Load an existing instance by primary key and update it, or create a new one.
244
268
  *
@@ -249,7 +273,7 @@ export declare abstract class Model<SUB> {
249
273
  * @param obj - Partial model data that **must** include every primary key field.
250
274
  * @returns The loaded-and-updated or newly created instance.
251
275
  */
252
- static replaceInto<T extends typeof Model<any>>(this: T, obj: Partial<Omit<InstanceType<T>, "constructor">>): InstanceType<T>;
276
+ static replaceInto<T extends typeof Model<any>>(this: T, obj: Partial<Record<string, any>>): InstanceType<T>;
253
277
  /**
254
278
  * Delete this model instance from the database.
255
279
  *
@@ -257,7 +281,7 @@ export declare abstract class Model<SUB> {
257
281
  *
258
282
  * @example
259
283
  * ```typescript
260
- * const user = User.load("user123");
284
+ * const user = User.get("user123");
261
285
  * user.delete(); // Removes from database
262
286
  * ```
263
287
  */
@@ -291,3 +315,4 @@ export declare abstract class Model<SUB> {
291
315
  getState(): "deleted" | "created" | "loaded" | "lazy";
292
316
  toString(): string;
293
317
  }
318
+ export {};