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.
- package/README.md +268 -374
- 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 +8 -7
- package/build/src/edinburgh.js.map +1 -1
- package/build/src/indexes.d.ts +46 -116
- package/build/src/indexes.js +148 -180
- 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 +74 -49
- package/build/src/models.js +112 -165
- package/build/src/models.js.map +1 -1
- package/build/src/types.d.ts +30 -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 +146 -144
- 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 +8 -9
- package/src/indexes.ts +157 -276
- package/src/migrate.ts +9 -30
- package/src/models.ts +188 -174
- 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/src/edinburgh.ts
CHANGED
|
@@ -9,8 +9,9 @@ export function scheduleInit() { initNeeded = true; }
|
|
|
9
9
|
// Re-export public API from models
|
|
10
10
|
export {
|
|
11
11
|
Model,
|
|
12
|
-
|
|
12
|
+
defineModel,
|
|
13
13
|
field,
|
|
14
|
+
currentTxn,
|
|
14
15
|
} from "./models.js";
|
|
15
16
|
|
|
16
17
|
import type { Transaction, Change, Model } from "./models.js";
|
|
@@ -37,13 +38,10 @@ export {
|
|
|
37
38
|
|
|
38
39
|
// Re-export public API from indexes
|
|
39
40
|
export {
|
|
40
|
-
index,
|
|
41
|
-
primary,
|
|
42
|
-
unique,
|
|
43
41
|
dump,
|
|
44
42
|
} from "./indexes.js";
|
|
45
43
|
|
|
46
|
-
export { BaseIndex,
|
|
44
|
+
export { BaseIndex, NonPrimaryIndex, UniqueIndex, SecondaryIndex } from './indexes.js';
|
|
47
45
|
|
|
48
46
|
export { type Change } from './models.js';
|
|
49
47
|
export type { Transaction } from './models.js';
|
|
@@ -99,7 +97,7 @@ const STALE_INSTANCE_DESCRIPTOR = {
|
|
|
99
97
|
* @example
|
|
100
98
|
* ```typescript
|
|
101
99
|
* const paid = await E.transact(() => {
|
|
102
|
-
* const user = User.
|
|
100
|
+
* const user = User.get("john_doe");
|
|
103
101
|
* if (user.credits > 0) {
|
|
104
102
|
* user.credits--;
|
|
105
103
|
* return true;
|
|
@@ -110,7 +108,7 @@ const STALE_INSTANCE_DESCRIPTOR = {
|
|
|
110
108
|
* ```typescript
|
|
111
109
|
* // Transaction with automatic retry on conflicts
|
|
112
110
|
* await E.transact(() => {
|
|
113
|
-
* const counter = Counter.
|
|
111
|
+
* const counter = Counter.get("global") || new Counter({id: "global", value: 0});
|
|
114
112
|
* counter.value++;
|
|
115
113
|
* });
|
|
116
114
|
* ```
|
|
@@ -126,7 +124,7 @@ export async function transact<T>(fn: () => T): Promise<T> {
|
|
|
126
124
|
olmdbReady = true;
|
|
127
125
|
initNeeded = false;
|
|
128
126
|
for (const model of Object.values(modelRegistry)) {
|
|
129
|
-
await model.
|
|
127
|
+
await model._loadCreateIndexes();
|
|
130
128
|
}
|
|
131
129
|
})();
|
|
132
130
|
await pendingInit;
|
|
@@ -247,6 +245,7 @@ export async function deleteEverything(): Promise<void> {
|
|
|
247
245
|
// Re-init indexes since metadata was deleted
|
|
248
246
|
for (const model of Object.values(modelRegistry)) {
|
|
249
247
|
if (!model.fields) continue;
|
|
250
|
-
|
|
248
|
+
model._resetIndexes();
|
|
249
|
+
await model._loadCreateIndexes();
|
|
251
250
|
}
|
|
252
251
|
}
|