edinburgh 0.5.0 → 0.6.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 +322 -262
- package/build/src/datapack.d.ts +9 -9
- package/build/src/datapack.js +9 -9
- package/build/src/edinburgh.d.ts +18 -7
- package/build/src/edinburgh.js +30 -51
- package/build/src/edinburgh.js.map +1 -1
- package/build/src/indexes.d.ts +85 -205
- package/build/src/indexes.js +150 -503
- package/build/src/indexes.js.map +1 -1
- package/build/src/migrate.js +8 -10
- package/build/src/migrate.js.map +1 -1
- package/build/src/models.d.ts +152 -107
- package/build/src/models.js +433 -144
- package/build/src/models.js.map +1 -1
- package/build/src/types.d.ts +30 -48
- package/build/src/types.js +25 -24
- package/build/src/types.js.map +1 -1
- package/build/src/utils.d.ts +4 -4
- package/build/src/utils.js +4 -4
- package/package.json +1 -1
- package/skill/AnyModelClass.md +7 -0
- package/skill/FindOptions.md +37 -0
- package/skill/Lifecycle Hooks.md +24 -0
- package/skill/{Model_delete.md → Lifecycle Hooks_delete.md } +1 -1
- package/skill/{Model_getPrimaryKeyHash.md → Lifecycle Hooks_getPrimaryKeyHash.md } +1 -1
- package/skill/{Model_isValid.md → Lifecycle Hooks_isValid.md } +1 -1
- package/skill/Lifecycle Hooks_migrate.md +26 -0
- package/skill/{Model_preCommit.md → Lifecycle Hooks_preCommit.md } +2 -2
- package/skill/{Model_preventPersist.md → Lifecycle Hooks_preventPersist.md } +1 -1
- package/skill/{Model_validate.md → Lifecycle Hooks_validate.md } +2 -2
- package/skill/ModelBase.md +7 -0
- package/skill/ModelClass.md +8 -0
- package/skill/SKILL.md +180 -132
- package/skill/Schema Evolution.md +19 -0
- package/skill/TypeWrapper_containsNull.md +11 -0
- package/skill/TypeWrapper_deserialize.md +9 -0
- package/skill/TypeWrapper_getError.md +11 -0
- package/skill/TypeWrapper_serialize.md +10 -0
- package/skill/TypeWrapper_serializeType.md +9 -0
- package/skill/array.md +2 -2
- package/skill/defineModel.md +3 -2
- package/skill/deleteEverything.md +8 -0
- package/skill/field.md +3 -3
- package/skill/link.md +3 -3
- package/skill/literal.md +1 -1
- package/skill/opt.md +1 -1
- package/skill/or.md +1 -1
- package/skill/record.md +1 -1
- package/skill/set.md +2 -2
- package/skill/setOnSaveCallback.md +2 -2
- package/skill/transact.md +1 -1
- package/src/datapack.ts +9 -9
- package/src/edinburgh.ts +43 -52
- package/src/indexes.ts +251 -599
- package/src/migrate.ts +9 -10
- package/src/models.ts +528 -231
- package/src/types.ts +36 -34
- package/src/utils.ts +4 -4
- package/skill/BaseIndex.md +0 -16
- package/skill/BaseIndex_batchProcess.md +0 -10
- package/skill/BaseIndex_find.md +0 -7
- package/skill/BaseIndex_find_2.md +0 -7
- package/skill/BaseIndex_find_3.md +0 -7
- package/skill/BaseIndex_find_4.md +0 -7
- package/skill/Model.md +0 -20
- package/skill/Model_batchProcess.md +0 -8
- package/skill/Model_migrate.md +0 -32
- package/skill/Model_replaceInto.md +0 -16
- package/skill/NonPrimaryIndex.md +0 -10
- package/skill/SecondaryIndex.md +0 -9
- package/skill/UniqueIndex.md +0 -9
- package/skill/dump.md +0 -8
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
### Lifecycle Hooks
|
|
2
|
+
|
|
3
|
+
- **`static migrate(record)`**: Called when deserializing rows written with an older schema
|
|
4
|
+
version. Receives a plain record object; mutate it in-place to match the current schema.
|
|
5
|
+
|
|
6
|
+
- **`preCommit()`**: Called on each modified instance right before the transaction commits.
|
|
7
|
+
Useful for computing derived fields, enforcing cross-field invariants, or creating related
|
|
8
|
+
instances.
|
|
9
|
+
|
|
10
|
+
**Examples:**
|
|
11
|
+
|
|
12
|
+
```typescript
|
|
13
|
+
const User = E.defineModel("User", class {
|
|
14
|
+
id = E.field(E.identifier);
|
|
15
|
+
name = E.field(E.string);
|
|
16
|
+
email = E.field(E.string);
|
|
17
|
+
}, {
|
|
18
|
+
pk: "id",
|
|
19
|
+
unique: { email: "email" },
|
|
20
|
+
});
|
|
21
|
+
// Optional: declare a companion type so `let u: User` works.
|
|
22
|
+
// Not needed if you only use `new User()`, `User.find()`, etc.
|
|
23
|
+
type User = InstanceType<typeof User>;
|
|
24
|
+
```
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
#### ModelBase.migrate · static method
|
|
2
|
+
|
|
3
|
+
Optional migration function called when deserializing rows written with an older schema version.
|
|
4
|
+
Receives a plain record with all fields and should mutate it in-place to match the current schema.
|
|
5
|
+
It runs during lazy loading and during `runMigration()`. Changing this method creates a new schema version.
|
|
6
|
+
If it updates values used by secondary or unique indexes, those index entries are refreshed only by `runMigration()`.
|
|
7
|
+
|
|
8
|
+
**Signature:** `(record: Record<string, any>) => void`
|
|
9
|
+
|
|
10
|
+
**Parameters:**
|
|
11
|
+
|
|
12
|
+
- `record: Record<string, any>` - A plain object containing the row's field values from the older schema version.
|
|
13
|
+
|
|
14
|
+
**Examples:**
|
|
15
|
+
|
|
16
|
+
```typescript
|
|
17
|
+
const User = E.defineModel("User", class {
|
|
18
|
+
id = E.field(E.identifier);
|
|
19
|
+
name = E.field(E.string);
|
|
20
|
+
role = E.field(E.string);
|
|
21
|
+
|
|
22
|
+
static migrate(record: Record<string, any>) {
|
|
23
|
+
record.role ??= "user";
|
|
24
|
+
}
|
|
25
|
+
}, { pk: "id" });
|
|
26
|
+
```
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
####
|
|
1
|
+
#### modelBase.preCommit · method
|
|
2
2
|
|
|
3
3
|
Optional hook called on each modified instance right before the transaction commits.
|
|
4
4
|
Runs before data is written to disk, so changes made here are included in the commit.
|
|
@@ -14,7 +14,7 @@ Common use cases:
|
|
|
14
14
|
**Examples:**
|
|
15
15
|
|
|
16
16
|
```typescript
|
|
17
|
-
const Post = E.defineModel(class {
|
|
17
|
+
const Post = E.defineModel("Post", class {
|
|
18
18
|
id = E.field(E.identifier);
|
|
19
19
|
title = E.field(E.string);
|
|
20
20
|
slug = E.field(E.string);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
####
|
|
1
|
+
#### modelBase.validate · method
|
|
2
2
|
|
|
3
3
|
Validate all fields in this model instance.
|
|
4
4
|
|
|
@@ -6,7 +6,7 @@ Validate all fields in this model instance.
|
|
|
6
6
|
|
|
7
7
|
**Parameters:**
|
|
8
8
|
|
|
9
|
-
- `raise: boolean` (optional) -
|
|
9
|
+
- `raise: boolean` (optional) - If true, throw on first validation error.
|
|
10
10
|
|
|
11
11
|
**Returns:** Array of validation errors (empty if valid).
|
|
12
12
|
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
### ModelBase · abstract class
|
|
2
|
+
|
|
3
|
+
Base class for all database models in the Edinburgh ORM.
|
|
4
|
+
|
|
5
|
+
Models represent database entities with typed fields, automatic serialization,
|
|
6
|
+
change tracking, and relationship management. Model classes are created using
|
|
7
|
+
`E.defineModel()`.
|