effect-dynamodb 0.1.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/LICENSE +21 -0
- package/README.md +69 -0
- package/dist/Aggregate.d.ts +210 -0
- package/dist/Aggregate.d.ts.map +1 -0
- package/dist/Aggregate.js +1169 -0
- package/dist/Aggregate.js.map +1 -0
- package/dist/Batch.d.ts +62 -0
- package/dist/Batch.d.ts.map +1 -0
- package/dist/Batch.js +218 -0
- package/dist/Batch.js.map +1 -0
- package/dist/Collection.d.ts +58 -0
- package/dist/Collection.d.ts.map +1 -0
- package/dist/Collection.js +195 -0
- package/dist/Collection.js.map +1 -0
- package/dist/Collections.d.ts +121 -0
- package/dist/Collections.d.ts.map +1 -0
- package/dist/Collections.js +121 -0
- package/dist/Collections.js.map +1 -0
- package/dist/DynamoClient.d.ts +317 -0
- package/dist/DynamoClient.d.ts.map +1 -0
- package/dist/DynamoClient.js +653 -0
- package/dist/DynamoClient.js.map +1 -0
- package/dist/DynamoModel.d.ts +278 -0
- package/dist/DynamoModel.d.ts.map +1 -0
- package/dist/DynamoModel.js +453 -0
- package/dist/DynamoModel.js.map +1 -0
- package/dist/DynamoSchema.d.ts +137 -0
- package/dist/DynamoSchema.d.ts.map +1 -0
- package/dist/DynamoSchema.js +188 -0
- package/dist/DynamoSchema.js.map +1 -0
- package/dist/Entity.d.ts +628 -0
- package/dist/Entity.d.ts.map +1 -0
- package/dist/Entity.js +2371 -0
- package/dist/Entity.js.map +1 -0
- package/dist/Errors.d.ts +227 -0
- package/dist/Errors.d.ts.map +1 -0
- package/dist/Errors.js +93 -0
- package/dist/Errors.js.map +1 -0
- package/dist/EventStore.d.ts +208 -0
- package/dist/EventStore.d.ts.map +1 -0
- package/dist/EventStore.js +333 -0
- package/dist/EventStore.js.map +1 -0
- package/dist/Expression.d.ts +50 -0
- package/dist/Expression.d.ts.map +1 -0
- package/dist/Expression.js +170 -0
- package/dist/Expression.js.map +1 -0
- package/dist/KeyComposer.d.ts +125 -0
- package/dist/KeyComposer.d.ts.map +1 -0
- package/dist/KeyComposer.js +257 -0
- package/dist/KeyComposer.js.map +1 -0
- package/dist/Marshaller.d.ts +30 -0
- package/dist/Marshaller.d.ts.map +1 -0
- package/dist/Marshaller.js +115 -0
- package/dist/Marshaller.js.map +1 -0
- package/dist/Projection.d.ts +28 -0
- package/dist/Projection.d.ts.map +1 -0
- package/dist/Projection.js +39 -0
- package/dist/Projection.js.map +1 -0
- package/dist/Query.d.ts +214 -0
- package/dist/Query.d.ts.map +1 -0
- package/dist/Query.js +397 -0
- package/dist/Query.js.map +1 -0
- package/dist/Table.d.ts +178 -0
- package/dist/Table.d.ts.map +1 -0
- package/dist/Table.js +211 -0
- package/dist/Table.js.map +1 -0
- package/dist/Transaction.d.ts +79 -0
- package/dist/Transaction.d.ts.map +1 -0
- package/dist/Transaction.js +215 -0
- package/dist/Transaction.js.map +1 -0
- package/dist/_AggregateCursor.d.ts +44 -0
- package/dist/_AggregateCursor.d.ts.map +1 -0
- package/dist/_AggregateCursor.js +18 -0
- package/dist/_AggregateCursor.js.map +1 -0
- package/dist/_AggregateEdges.d.ts +77 -0
- package/dist/_AggregateEdges.d.ts.map +1 -0
- package/dist/_AggregateEdges.js +41 -0
- package/dist/_AggregateEdges.js.map +1 -0
- package/dist/_AggregateSchemas.d.ts +69 -0
- package/dist/_AggregateSchemas.d.ts.map +1 -0
- package/dist/_AggregateSchemas.js +194 -0
- package/dist/_AggregateSchemas.js.map +1 -0
- package/dist/_AggregateTypes.d.ts +94 -0
- package/dist/_AggregateTypes.d.ts.map +1 -0
- package/dist/_AggregateTypes.js +7 -0
- package/dist/_AggregateTypes.js.map +1 -0
- package/dist/_EntityCombinators.d.ts +155 -0
- package/dist/_EntityCombinators.d.ts.map +1 -0
- package/dist/_EntityCombinators.js +158 -0
- package/dist/_EntityCombinators.js.map +1 -0
- package/dist/_EntityConfig.d.ts +100 -0
- package/dist/_EntityConfig.d.ts.map +1 -0
- package/dist/_EntityConfig.js +7 -0
- package/dist/_EntityConfig.js.map +1 -0
- package/dist/_EntityOps.d.ts +205 -0
- package/dist/_EntityOps.d.ts.map +1 -0
- package/dist/_EntityOps.js +137 -0
- package/dist/_EntityOps.js.map +1 -0
- package/dist/_EntitySchemas.d.ts +57 -0
- package/dist/_EntitySchemas.d.ts.map +1 -0
- package/dist/_EntitySchemas.js +298 -0
- package/dist/_EntitySchemas.js.map +1 -0
- package/dist/_EntityTypes.d.ts +81 -0
- package/dist/_EntityTypes.d.ts.map +1 -0
- package/dist/_EntityTypes.js +7 -0
- package/dist/_EntityTypes.js.map +1 -0
- package/dist/_sparse_check.d.ts +2 -0
- package/dist/_sparse_check.d.ts.map +1 -0
- package/dist/_sparse_check.js +193 -0
- package/dist/_sparse_check.js.map +1 -0
- package/dist/index.d.ts +35 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/AggregateCursor.d.ts +44 -0
- package/dist/internal/AggregateCursor.d.ts.map +1 -0
- package/dist/internal/AggregateCursor.js +18 -0
- package/dist/internal/AggregateCursor.js.map +1 -0
- package/dist/internal/AggregateEdges.d.ts +77 -0
- package/dist/internal/AggregateEdges.d.ts.map +1 -0
- package/dist/internal/AggregateEdges.js +41 -0
- package/dist/internal/AggregateEdges.js.map +1 -0
- package/dist/internal/AggregateSchemas.d.ts +69 -0
- package/dist/internal/AggregateSchemas.d.ts.map +1 -0
- package/dist/internal/AggregateSchemas.js +193 -0
- package/dist/internal/AggregateSchemas.js.map +1 -0
- package/dist/internal/AggregateTypes.d.ts +94 -0
- package/dist/internal/AggregateTypes.d.ts.map +1 -0
- package/dist/internal/AggregateTypes.js +7 -0
- package/dist/internal/AggregateTypes.js.map +1 -0
- package/dist/internal/BoundQuery.d.ts +107 -0
- package/dist/internal/BoundQuery.d.ts.map +1 -0
- package/dist/internal/BoundQuery.js +111 -0
- package/dist/internal/BoundQuery.js.map +1 -0
- package/dist/internal/EntityCombinators.d.ts +173 -0
- package/dist/internal/EntityCombinators.d.ts.map +1 -0
- package/dist/internal/EntityCombinators.js +183 -0
- package/dist/internal/EntityCombinators.js.map +1 -0
- package/dist/internal/EntityConfig.d.ts +100 -0
- package/dist/internal/EntityConfig.d.ts.map +1 -0
- package/dist/internal/EntityConfig.js +7 -0
- package/dist/internal/EntityConfig.js.map +1 -0
- package/dist/internal/EntityOps.d.ts +268 -0
- package/dist/internal/EntityOps.d.ts.map +1 -0
- package/dist/internal/EntityOps.js +153 -0
- package/dist/internal/EntityOps.js.map +1 -0
- package/dist/internal/EntitySchemas.d.ts +57 -0
- package/dist/internal/EntitySchemas.d.ts.map +1 -0
- package/dist/internal/EntitySchemas.js +299 -0
- package/dist/internal/EntitySchemas.js.map +1 -0
- package/dist/internal/EntityTypes.d.ts +128 -0
- package/dist/internal/EntityTypes.d.ts.map +1 -0
- package/dist/internal/EntityTypes.js +7 -0
- package/dist/internal/EntityTypes.js.map +1 -0
- package/dist/internal/Expr.d.ts +141 -0
- package/dist/internal/Expr.d.ts.map +1 -0
- package/dist/internal/Expr.js +332 -0
- package/dist/internal/Expr.js.map +1 -0
- package/dist/internal/PathBuilder.d.ts +88 -0
- package/dist/internal/PathBuilder.d.ts.map +1 -0
- package/dist/internal/PathBuilder.js +100 -0
- package/dist/internal/PathBuilder.js.map +1 -0
- package/dist/internal/TransactableOps.d.ts +25 -0
- package/dist/internal/TransactableOps.d.ts.map +1 -0
- package/dist/internal/TransactableOps.js +58 -0
- package/dist/internal/TransactableOps.js.map +1 -0
- package/dist/internal/sparse_check.d.ts +2 -0
- package/dist/internal/sparse_check.d.ts.map +1 -0
- package/dist/internal/sparse_check.js +196 -0
- package/dist/internal/sparse_check.js.map +1 -0
- package/package.json +71 -0
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @internal Entity operation intermediates — lazy, pipeable, effectable.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from Entity.ts for decomposition. Not part of the public API.
|
|
5
|
+
*/
|
|
6
|
+
import { Pipeable, Utils } from "effect";
|
|
7
|
+
// ---------------------------------------------------------------------------
|
|
8
|
+
// TypeId symbols
|
|
9
|
+
// ---------------------------------------------------------------------------
|
|
10
|
+
/** @internal */
|
|
11
|
+
export const EntityOpTypeId = Symbol.for("effect-dynamodb/EntityOp");
|
|
12
|
+
/** @internal */
|
|
13
|
+
export const EntityUpdateTypeId = Symbol.for("effect-dynamodb/EntityUpdate");
|
|
14
|
+
/** @internal */
|
|
15
|
+
export const EntityDeleteTypeId = Symbol.for("effect-dynamodb/EntityDelete");
|
|
16
|
+
/** @internal Map from our mode names to DynamoDB ReturnValues strings */
|
|
17
|
+
export const returnValuesMap = {
|
|
18
|
+
none: "NONE",
|
|
19
|
+
allOld: "ALL_OLD",
|
|
20
|
+
allNew: "ALL_NEW",
|
|
21
|
+
updatedOld: "UPDATED_OLD",
|
|
22
|
+
updatedNew: "UPDATED_NEW",
|
|
23
|
+
};
|
|
24
|
+
export const emptyUpdateState = {
|
|
25
|
+
updates: undefined,
|
|
26
|
+
expectedVersion: undefined,
|
|
27
|
+
condition: undefined,
|
|
28
|
+
remove: undefined,
|
|
29
|
+
add: undefined,
|
|
30
|
+
subtract: undefined,
|
|
31
|
+
append: undefined,
|
|
32
|
+
deleteFromSet: undefined,
|
|
33
|
+
returnValues: undefined,
|
|
34
|
+
cascade: undefined,
|
|
35
|
+
pathSets: undefined,
|
|
36
|
+
pathRemoves: undefined,
|
|
37
|
+
pathAdds: undefined,
|
|
38
|
+
pathSubtracts: undefined,
|
|
39
|
+
pathAppends: undefined,
|
|
40
|
+
pathPrepends: undefined,
|
|
41
|
+
pathIfNotExists: undefined,
|
|
42
|
+
pathDeletes: undefined,
|
|
43
|
+
};
|
|
44
|
+
export class EntityGetImpl {
|
|
45
|
+
_builder;
|
|
46
|
+
[EntityOpTypeId] = EntityOpTypeId;
|
|
47
|
+
_opType = "get";
|
|
48
|
+
_entity;
|
|
49
|
+
_key;
|
|
50
|
+
_consistentRead;
|
|
51
|
+
_projection;
|
|
52
|
+
constructor(_builder, entity, key, consistentRead, projection) {
|
|
53
|
+
this._builder = _builder;
|
|
54
|
+
this._entity = entity;
|
|
55
|
+
this._key = key;
|
|
56
|
+
this._consistentRead = consistentRead ?? false;
|
|
57
|
+
this._projection = projection;
|
|
58
|
+
}
|
|
59
|
+
get _run() {
|
|
60
|
+
return (mode) => this._builder(this._projection ? "raw" : mode, {
|
|
61
|
+
consistentRead: this._consistentRead,
|
|
62
|
+
projection: this._projection,
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
asEffect() {
|
|
66
|
+
return this._run("model");
|
|
67
|
+
}
|
|
68
|
+
[Symbol.iterator]() {
|
|
69
|
+
return new Utils.SingleShotGen(this.asEffect());
|
|
70
|
+
}
|
|
71
|
+
pipe() {
|
|
72
|
+
return Pipeable.pipeArguments(this, arguments);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
export class EntityPutImpl {
|
|
76
|
+
_builder;
|
|
77
|
+
[EntityOpTypeId] = EntityOpTypeId;
|
|
78
|
+
_opType = "put";
|
|
79
|
+
_entity;
|
|
80
|
+
_input;
|
|
81
|
+
_condition;
|
|
82
|
+
constructor(_builder, entity, input, condition) {
|
|
83
|
+
this._builder = _builder;
|
|
84
|
+
this._entity = entity;
|
|
85
|
+
this._input = input;
|
|
86
|
+
this._condition = condition;
|
|
87
|
+
}
|
|
88
|
+
get _run() {
|
|
89
|
+
return (mode) => this._builder(mode, { condition: this._condition });
|
|
90
|
+
}
|
|
91
|
+
asEffect() {
|
|
92
|
+
return this._run("model");
|
|
93
|
+
}
|
|
94
|
+
[Symbol.iterator]() {
|
|
95
|
+
return new Utils.SingleShotGen(this.asEffect());
|
|
96
|
+
}
|
|
97
|
+
pipe() {
|
|
98
|
+
return Pipeable.pipeArguments(this, arguments);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
export class EntityUpdateImpl {
|
|
102
|
+
_builder;
|
|
103
|
+
_updateState;
|
|
104
|
+
[EntityOpTypeId] = EntityOpTypeId;
|
|
105
|
+
[EntityUpdateTypeId] = EntityUpdateTypeId;
|
|
106
|
+
_opType = "update";
|
|
107
|
+
_entity;
|
|
108
|
+
_key;
|
|
109
|
+
constructor(_builder, _updateState, entity, key) {
|
|
110
|
+
this._builder = _builder;
|
|
111
|
+
this._updateState = _updateState;
|
|
112
|
+
this._entity = entity;
|
|
113
|
+
this._key = key;
|
|
114
|
+
}
|
|
115
|
+
get _run() {
|
|
116
|
+
return (mode) => this._builder(mode, this._updateState);
|
|
117
|
+
}
|
|
118
|
+
asEffect() {
|
|
119
|
+
return this._run("model");
|
|
120
|
+
}
|
|
121
|
+
[Symbol.iterator]() {
|
|
122
|
+
return new Utils.SingleShotGen(this.asEffect());
|
|
123
|
+
}
|
|
124
|
+
pipe() {
|
|
125
|
+
return Pipeable.pipeArguments(this, arguments);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
export class EntityDeleteImpl {
|
|
129
|
+
_builder;
|
|
130
|
+
[EntityDeleteTypeId] = EntityDeleteTypeId;
|
|
131
|
+
_opType = "delete";
|
|
132
|
+
_entity;
|
|
133
|
+
_key;
|
|
134
|
+
_condition;
|
|
135
|
+
_returnValues;
|
|
136
|
+
constructor(_builder, entity, key, condition, returnValues) {
|
|
137
|
+
this._builder = _builder;
|
|
138
|
+
this._entity = entity;
|
|
139
|
+
this._key = key;
|
|
140
|
+
this._condition = condition;
|
|
141
|
+
this._returnValues = returnValues;
|
|
142
|
+
}
|
|
143
|
+
asEffect() {
|
|
144
|
+
return this._builder({ condition: this._condition, returnValues: this._returnValues });
|
|
145
|
+
}
|
|
146
|
+
[Symbol.iterator]() {
|
|
147
|
+
return new Utils.SingleShotGen(this.asEffect());
|
|
148
|
+
}
|
|
149
|
+
pipe() {
|
|
150
|
+
return Pipeable.pipeArguments(this, arguments);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=EntityOps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EntityOps.js","sourceRoot":"","sources":["../../src/internal/EntityOps.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @internal Entity schema building — derived schemas and system field resolution.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from Entity.ts for decomposition. Not part of the public API.
|
|
5
|
+
*/
|
|
6
|
+
import { Schema } from "effect";
|
|
7
|
+
import { type DynamoEncoding } from "../DynamoModel.js";
|
|
8
|
+
import type { IndexDefinition } from "../KeyComposer.js";
|
|
9
|
+
import type { TimestampsConfig, UniqueConstraintDef, VersionedConfig } from "./EntityConfig.js";
|
|
10
|
+
export interface ResolvedSystemFields {
|
|
11
|
+
readonly createdAt: string | null;
|
|
12
|
+
readonly createdAtEncoding: DynamoEncoding | null;
|
|
13
|
+
readonly updatedAt: string | null;
|
|
14
|
+
readonly updatedAtEncoding: DynamoEncoding | null;
|
|
15
|
+
readonly version: string | null;
|
|
16
|
+
}
|
|
17
|
+
export declare const resolveSystemFields: (timestamps?: TimestampsConfig | undefined, versioned?: VersionedConfig | undefined) => ResolvedSystemFields;
|
|
18
|
+
export declare const primaryKeyComposites: (indexes: globalThis.Record<string, IndexDefinition>) => ReadonlyArray<string>;
|
|
19
|
+
export declare const allKeyFieldNames: (indexes: globalThis.Record<string, IndexDefinition>) => ReadonlyArray<string>;
|
|
20
|
+
export declare const allCompositeAttributes: (indexes: globalThis.Record<string, IndexDefinition>) => ReadonlyArray<string>;
|
|
21
|
+
export type SchemaFields = globalThis.Record<string, Schema.Top>;
|
|
22
|
+
export declare const getFields: (model: Schema.Top) => SchemaFields;
|
|
23
|
+
/**
|
|
24
|
+
* Infer a default DynamoEncoding for standard Effect date schemas that lack
|
|
25
|
+
* an explicit DynamoEncoding annotation. This enables Pattern B (pure model
|
|
26
|
+
* with Schema.DateTimeUtcFromString etc.) to work without explicit storedAs.
|
|
27
|
+
*
|
|
28
|
+
* Detection uses the typeConstructor annotation from Effect's schema AST.
|
|
29
|
+
*/
|
|
30
|
+
export declare const inferDefaultEncoding: (schema: Schema.Top) => DynamoEncoding | undefined;
|
|
31
|
+
export interface DerivedSchemas {
|
|
32
|
+
/** Pure model fields schema (wire format — for input validation) */
|
|
33
|
+
readonly modelSchema: Schema.Codec<any>;
|
|
34
|
+
/** Model fields with fromSelf for date-annotated fields (for decode after deserialization) */
|
|
35
|
+
readonly modelDecodeSchema: Schema.Codec<any>;
|
|
36
|
+
/** Model + system fields schema */
|
|
37
|
+
readonly recordSchema: Schema.Codec<any>;
|
|
38
|
+
/** Same as model (system fields auto-managed) */
|
|
39
|
+
readonly inputSchema: Schema.Codec<any>;
|
|
40
|
+
/** Input fields minus primary key composites — the common "create" payload */
|
|
41
|
+
readonly createSchema: Schema.Codec<any>;
|
|
42
|
+
/** Optional model fields minus keys and immutable */
|
|
43
|
+
readonly updateSchema: Schema.Codec<any>;
|
|
44
|
+
/** Primary key composites only */
|
|
45
|
+
readonly keySchema: Schema.Codec<any>;
|
|
46
|
+
/** Record + key attrs + __edd_e__ */
|
|
47
|
+
readonly itemSchema: Schema.Codec<any>;
|
|
48
|
+
/** Record fields + deletedAt for soft-deleted items */
|
|
49
|
+
readonly deletedRecordSchema: Schema.Codec<any>;
|
|
50
|
+
}
|
|
51
|
+
export declare const buildDerivedSchemas: (modelFields: SchemaFields, indexes: globalThis.Record<string, IndexDefinition>, systemFields: ResolvedSystemFields, resolvedRefs?: ReadonlyArray<{
|
|
52
|
+
readonly fieldName: string;
|
|
53
|
+
readonly idFieldName: string;
|
|
54
|
+
readonly identifierSchema: Schema.Top;
|
|
55
|
+
}>, immutableFields?: ReadonlySet<string>, identifierField?: string | undefined) => DerivedSchemas;
|
|
56
|
+
export declare const resolveUniqueFields: (def: UniqueConstraintDef) => ReadonlyArray<string>;
|
|
57
|
+
//# sourceMappingURL=EntitySchemas.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EntitySchemas.d.ts","sourceRoot":"","sources":["../../src/internal/EntitySchemas.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @internal Entity schema building — derived schemas and system field resolution.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from Entity.ts for decomposition. Not part of the public API.
|
|
5
|
+
*/
|
|
6
|
+
import { Schema, SchemaAST } from "effect";
|
|
7
|
+
import { getEncoding, isHidden } from "../DynamoModel.js";
|
|
8
|
+
/** Check if a value is a Schema (has .ast property) vs a plain config object */
|
|
9
|
+
const isSchema = (value) => typeof value === "object" && value !== null && "ast" in value;
|
|
10
|
+
/**
|
|
11
|
+
* Resolve a single TimestampFieldConfig into field name + encoding.
|
|
12
|
+
* Returns [fieldName, encoding | null].
|
|
13
|
+
*/
|
|
14
|
+
const resolveTimestampField = (config, defaultName) => {
|
|
15
|
+
if (config === undefined)
|
|
16
|
+
return [defaultName, null];
|
|
17
|
+
if (typeof config === "string")
|
|
18
|
+
return [config, null];
|
|
19
|
+
if (isSchema(config)) {
|
|
20
|
+
const encoding = getEncoding(config);
|
|
21
|
+
return [defaultName, encoding ?? null];
|
|
22
|
+
}
|
|
23
|
+
// Object config: { field?, schema? }
|
|
24
|
+
const fieldName = config.field ?? defaultName;
|
|
25
|
+
const encoding = config.schema ? (getEncoding(config.schema) ?? null) : null;
|
|
26
|
+
return [fieldName, encoding];
|
|
27
|
+
};
|
|
28
|
+
export const resolveSystemFields = (timestamps, versioned) => {
|
|
29
|
+
let createdAt = null;
|
|
30
|
+
let createdAtEncoding = null;
|
|
31
|
+
let updatedAt = null;
|
|
32
|
+
let updatedAtEncoding = null;
|
|
33
|
+
let version = null;
|
|
34
|
+
if (timestamps === true) {
|
|
35
|
+
createdAt = "createdAt";
|
|
36
|
+
updatedAt = "updatedAt";
|
|
37
|
+
}
|
|
38
|
+
else if (typeof timestamps === "object" && timestamps !== null) {
|
|
39
|
+
;
|
|
40
|
+
[createdAt, createdAtEncoding] = resolveTimestampField(timestamps.created, "createdAt");
|
|
41
|
+
[updatedAt, updatedAtEncoding] = resolveTimestampField(timestamps.updated, "updatedAt");
|
|
42
|
+
}
|
|
43
|
+
if (versioned === true) {
|
|
44
|
+
version = "version";
|
|
45
|
+
}
|
|
46
|
+
else if (typeof versioned === "object" && versioned !== null) {
|
|
47
|
+
version = versioned.field ?? "version";
|
|
48
|
+
}
|
|
49
|
+
return { createdAt, createdAtEncoding, updatedAt, updatedAtEncoding, version };
|
|
50
|
+
};
|
|
51
|
+
// ---------------------------------------------------------------------------
|
|
52
|
+
// Helper: collect primary key composite attribute names
|
|
53
|
+
// ---------------------------------------------------------------------------
|
|
54
|
+
export const primaryKeyComposites = (indexes) => {
|
|
55
|
+
const primary = indexes.primary;
|
|
56
|
+
if (!primary)
|
|
57
|
+
return [];
|
|
58
|
+
const composites = new Set();
|
|
59
|
+
for (const attr of primary.pk.composite)
|
|
60
|
+
composites.add(attr);
|
|
61
|
+
for (const attr of primary.sk.composite)
|
|
62
|
+
composites.add(attr);
|
|
63
|
+
return Array.from(composites);
|
|
64
|
+
};
|
|
65
|
+
// ---------------------------------------------------------------------------
|
|
66
|
+
// Helper: collect all key field names across all indexes
|
|
67
|
+
// ---------------------------------------------------------------------------
|
|
68
|
+
export const allKeyFieldNames = (indexes) => {
|
|
69
|
+
const fields = new Set();
|
|
70
|
+
for (const key of Object.keys(indexes)) {
|
|
71
|
+
const index = indexes[key];
|
|
72
|
+
if (index) {
|
|
73
|
+
fields.add(index.pk.field);
|
|
74
|
+
fields.add(index.sk.field);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return Array.from(fields);
|
|
78
|
+
};
|
|
79
|
+
// ---------------------------------------------------------------------------
|
|
80
|
+
// Helper: collect all composite attribute names across all indexes
|
|
81
|
+
// ---------------------------------------------------------------------------
|
|
82
|
+
export const allCompositeAttributes = (indexes) => {
|
|
83
|
+
const attrs = new Set();
|
|
84
|
+
for (const key of Object.keys(indexes)) {
|
|
85
|
+
const index = indexes[key];
|
|
86
|
+
if (index) {
|
|
87
|
+
for (const attr of index.pk.composite)
|
|
88
|
+
attrs.add(attr);
|
|
89
|
+
for (const attr of index.sk.composite)
|
|
90
|
+
attrs.add(attr);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return Array.from(attrs);
|
|
94
|
+
};
|
|
95
|
+
const hasFields = (schema) => "fields" in schema && typeof schema.fields === "object";
|
|
96
|
+
export const getFields = (model) => {
|
|
97
|
+
if (hasFields(model))
|
|
98
|
+
return model.fields;
|
|
99
|
+
throw new Error("Entity model must be a Schema.Class or Schema.Struct with .fields");
|
|
100
|
+
};
|
|
101
|
+
/**
|
|
102
|
+
* Infer a default DynamoEncoding for standard Effect date schemas that lack
|
|
103
|
+
* an explicit DynamoEncoding annotation. This enables Pattern B (pure model
|
|
104
|
+
* with Schema.DateTimeUtcFromString etc.) to work without explicit storedAs.
|
|
105
|
+
*
|
|
106
|
+
* Detection uses the typeConstructor annotation from Effect's schema AST.
|
|
107
|
+
*/
|
|
108
|
+
export const inferDefaultEncoding = (schema) => {
|
|
109
|
+
const resolved = SchemaAST.resolve(schema.ast);
|
|
110
|
+
if (!resolved)
|
|
111
|
+
return undefined;
|
|
112
|
+
const tc = resolved.typeConstructor;
|
|
113
|
+
if (tc?._tag === "effect/DateTime.Utc")
|
|
114
|
+
return { storage: "string", domain: "DateTime.Utc" };
|
|
115
|
+
if (tc?._tag === "effect/DateTime.Zoned")
|
|
116
|
+
return { storage: "string", domain: "DateTime.Zoned" };
|
|
117
|
+
// Check for native Date via meta annotation
|
|
118
|
+
const meta = resolved.meta;
|
|
119
|
+
if (meta?._tag === "isDateValid")
|
|
120
|
+
return { storage: "string", domain: "Date" };
|
|
121
|
+
return undefined;
|
|
122
|
+
};
|
|
123
|
+
/**
|
|
124
|
+
* Map a DynamoEncoding domain type to its "from self" Schema.
|
|
125
|
+
* Used in record/item schemas so Schema.decode accepts domain values
|
|
126
|
+
* directly (after deserializeDateFields has converted storage→domain).
|
|
127
|
+
*/
|
|
128
|
+
const dateFromSelfSchema = (encoding) => {
|
|
129
|
+
switch (encoding.domain) {
|
|
130
|
+
case "DateTime.Utc":
|
|
131
|
+
return Schema.DateTimeUtc;
|
|
132
|
+
case "DateTime.Zoned":
|
|
133
|
+
return Schema.DateTimeZoned;
|
|
134
|
+
case "Date":
|
|
135
|
+
return Schema.DateValid;
|
|
136
|
+
}
|
|
137
|
+
};
|
|
138
|
+
export const buildDerivedSchemas = (modelFields, indexes, systemFields, resolvedRefs = [], immutableFields = new Set(), identifierField = undefined) => {
|
|
139
|
+
// --- Build fromSelf field map for date fields ---
|
|
140
|
+
// These replace transform schemas with their "from self" variants so
|
|
141
|
+
// Schema.decode accepts domain values after storage→domain conversion.
|
|
142
|
+
// Checks both explicit DynamoEncoding annotations AND inferred defaults
|
|
143
|
+
// from standard Effect date schemas (Pattern B: pure model).
|
|
144
|
+
const fromSelfFields = {};
|
|
145
|
+
for (const [fieldName, fieldSchema] of Object.entries(modelFields)) {
|
|
146
|
+
const encoding = getEncoding(fieldSchema) ?? inferDefaultEncoding(fieldSchema);
|
|
147
|
+
if (encoding) {
|
|
148
|
+
fromSelfFields[fieldName] = dateFromSelfSchema(encoding);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
// --- Model Schema: pure model fields (accepts wire format for input decode) ---
|
|
152
|
+
const modelSchema = Schema.Struct(modelFields);
|
|
153
|
+
// --- Model Decode Schema: model fields with fromSelf for date-annotated fields ---
|
|
154
|
+
// Used in decodeAs after deserializeDateFields has converted storage→domain.
|
|
155
|
+
const modelDecodeSchema = Object.keys(fromSelfFields).length > 0
|
|
156
|
+
? Schema.Struct({ ...modelFields, ...fromSelfFields })
|
|
157
|
+
: modelSchema;
|
|
158
|
+
// --- Record Schema: model + system fields ---
|
|
159
|
+
// For date-annotated fields, use "from self" schemas (accept domain values directly)
|
|
160
|
+
const systemSchemaFields = {};
|
|
161
|
+
if (systemFields.createdAt) {
|
|
162
|
+
// Custom encoding → use fromSelf (deserializeDateFields handles storage→domain)
|
|
163
|
+
// Default → use DateTimeUtcFromString (ISO string → DateTime.Utc)
|
|
164
|
+
systemSchemaFields[systemFields.createdAt] = systemFields.createdAtEncoding
|
|
165
|
+
? Schema.DateTimeUtc
|
|
166
|
+
: Schema.DateTimeUtcFromString;
|
|
167
|
+
}
|
|
168
|
+
if (systemFields.updatedAt) {
|
|
169
|
+
systemSchemaFields[systemFields.updatedAt] = systemFields.updatedAtEncoding
|
|
170
|
+
? Schema.DateTimeUtc
|
|
171
|
+
: Schema.DateTimeUtcFromString;
|
|
172
|
+
}
|
|
173
|
+
if (systemFields.version) {
|
|
174
|
+
systemSchemaFields[systemFields.version] = Schema.Number;
|
|
175
|
+
}
|
|
176
|
+
const recordSchema = Schema.Struct({
|
|
177
|
+
...modelFields,
|
|
178
|
+
...fromSelfFields,
|
|
179
|
+
...systemSchemaFields,
|
|
180
|
+
});
|
|
181
|
+
// --- Input Schema: ref-aware (swap ref fields for ID fields when refs present) ---
|
|
182
|
+
const refFieldSet = new Set(resolvedRefs.map((r) => r.fieldName));
|
|
183
|
+
const inputSchema = resolvedRefs.length > 0
|
|
184
|
+
? (() => {
|
|
185
|
+
const inputFields = {};
|
|
186
|
+
for (const [key, field] of Object.entries(modelFields)) {
|
|
187
|
+
if (refFieldSet.has(key))
|
|
188
|
+
continue; // skip ref fields
|
|
189
|
+
inputFields[key] = field;
|
|
190
|
+
}
|
|
191
|
+
// Add ID fields for each ref (uses the ref entity's identifier schema for branded types)
|
|
192
|
+
for (const ref of resolvedRefs) {
|
|
193
|
+
inputFields[ref.idFieldName] = ref.identifierSchema;
|
|
194
|
+
}
|
|
195
|
+
return Schema.Struct(inputFields);
|
|
196
|
+
})()
|
|
197
|
+
: modelSchema;
|
|
198
|
+
// --- Create Schema: input fields minus identifier (or PK composites as fallback) ---
|
|
199
|
+
const pkComposites = new Set(primaryKeyComposites(indexes));
|
|
200
|
+
const createOmitFields = identifierField ? new Set([identifierField]) : pkComposites;
|
|
201
|
+
const createFieldsAcc = {};
|
|
202
|
+
for (const [key, field] of Object.entries(modelFields)) {
|
|
203
|
+
if (createOmitFields.has(key))
|
|
204
|
+
continue; // skip identifier/PK composites (auto-generated)
|
|
205
|
+
if (refFieldSet.has(key))
|
|
206
|
+
continue; // skip ref fields (replaced by ID fields)
|
|
207
|
+
createFieldsAcc[key] = field;
|
|
208
|
+
}
|
|
209
|
+
// Add ID fields for each ref (skip if the ref field is an omitted field)
|
|
210
|
+
for (const ref of resolvedRefs) {
|
|
211
|
+
if (createOmitFields.has(ref.fieldName))
|
|
212
|
+
continue;
|
|
213
|
+
createFieldsAcc[ref.idFieldName] = ref.identifierSchema;
|
|
214
|
+
}
|
|
215
|
+
const createSchema = Schema.Struct(createFieldsAcc);
|
|
216
|
+
// --- Update Schema: optional model fields minus key composites & immutable ---
|
|
217
|
+
const updateFieldsAcc = {};
|
|
218
|
+
for (const [key, field] of Object.entries(modelFields)) {
|
|
219
|
+
if (pkComposites.has(key))
|
|
220
|
+
continue;
|
|
221
|
+
if (immutableFields.has(key))
|
|
222
|
+
continue;
|
|
223
|
+
if (refFieldSet.has(key))
|
|
224
|
+
continue; // skip ref fields in update (replaced by ID fields)
|
|
225
|
+
updateFieldsAcc[key] = Schema.optional(field);
|
|
226
|
+
}
|
|
227
|
+
// Add optional ID fields for each ref in update (uses ref entity's identifier schema)
|
|
228
|
+
for (const ref of resolvedRefs) {
|
|
229
|
+
if (pkComposites.has(ref.fieldName))
|
|
230
|
+
continue; // ref on PK composite — skip
|
|
231
|
+
if (immutableFields.has(ref.fieldName))
|
|
232
|
+
continue; // immutable ref — skip
|
|
233
|
+
updateFieldsAcc[ref.idFieldName] = Schema.optional(ref.identifierSchema);
|
|
234
|
+
}
|
|
235
|
+
const updateSchema = Schema.Struct(updateFieldsAcc);
|
|
236
|
+
// --- Key Schema: primary key composite attributes only ---
|
|
237
|
+
const keyCompositeNames = primaryKeyComposites(indexes);
|
|
238
|
+
const keyFields = {};
|
|
239
|
+
for (const name of keyCompositeNames) {
|
|
240
|
+
const field = modelFields[name];
|
|
241
|
+
if (field)
|
|
242
|
+
keyFields[name] = field;
|
|
243
|
+
}
|
|
244
|
+
const keySchema = Schema.Struct(keyFields);
|
|
245
|
+
// --- Item Schema: record + key attrs (pk, sk, gsi*) + __edd_e__ ---
|
|
246
|
+
const keyAttrFields = {};
|
|
247
|
+
for (const fieldName of allKeyFieldNames(indexes)) {
|
|
248
|
+
keyAttrFields[fieldName] = Schema.String;
|
|
249
|
+
}
|
|
250
|
+
const itemSchema = Schema.Struct({
|
|
251
|
+
...modelFields,
|
|
252
|
+
...fromSelfFields,
|
|
253
|
+
...systemSchemaFields,
|
|
254
|
+
...keyAttrFields,
|
|
255
|
+
__edd_e__: Schema.String,
|
|
256
|
+
});
|
|
257
|
+
// --- Deleted Record Schema: record + deletedAt ---
|
|
258
|
+
const deletedRecordSchema = Schema.Struct({
|
|
259
|
+
...modelFields,
|
|
260
|
+
...fromSelfFields,
|
|
261
|
+
...systemSchemaFields,
|
|
262
|
+
deletedAt: Schema.String,
|
|
263
|
+
});
|
|
264
|
+
// --- Hidden-aware decode schemas: strip DynamoModel.Hidden fields from model/record ---
|
|
265
|
+
// These are used for "model" and "record" decode modes. Hidden fields are
|
|
266
|
+
// still present in "item" and "native" modes.
|
|
267
|
+
const hiddenFieldNames = new Set();
|
|
268
|
+
for (const [fieldName, fieldSchema] of Object.entries(modelFields)) {
|
|
269
|
+
if (isHidden(fieldSchema))
|
|
270
|
+
hiddenFieldNames.add(fieldName);
|
|
271
|
+
}
|
|
272
|
+
const hasHiddenFields = hiddenFieldNames.size > 0;
|
|
273
|
+
const modelDecodeVisibleSchema = hasHiddenFields
|
|
274
|
+
? Schema.Struct(Object.fromEntries(Object.entries({ ...modelFields, ...fromSelfFields }).filter(([k]) => !hiddenFieldNames.has(k))))
|
|
275
|
+
: modelDecodeSchema;
|
|
276
|
+
const recordVisibleSchema = hasHiddenFields
|
|
277
|
+
? Schema.Struct(Object.fromEntries(Object.entries({
|
|
278
|
+
...modelFields,
|
|
279
|
+
...fromSelfFields,
|
|
280
|
+
...systemSchemaFields,
|
|
281
|
+
}).filter(([k]) => !hiddenFieldNames.has(k))))
|
|
282
|
+
: recordSchema;
|
|
283
|
+
return {
|
|
284
|
+
modelSchema: modelSchema,
|
|
285
|
+
modelDecodeSchema: modelDecodeVisibleSchema,
|
|
286
|
+
recordSchema: recordVisibleSchema,
|
|
287
|
+
inputSchema: inputSchema,
|
|
288
|
+
createSchema: createSchema,
|
|
289
|
+
updateSchema: updateSchema,
|
|
290
|
+
keySchema: keySchema,
|
|
291
|
+
itemSchema: itemSchema,
|
|
292
|
+
deletedRecordSchema: deletedRecordSchema,
|
|
293
|
+
};
|
|
294
|
+
};
|
|
295
|
+
// ---------------------------------------------------------------------------
|
|
296
|
+
// Unique constraint field resolver
|
|
297
|
+
// ---------------------------------------------------------------------------
|
|
298
|
+
export const resolveUniqueFields = (def) => Array.isArray(def) ? def : def.fields;
|
|
299
|
+
//# sourceMappingURL=EntitySchemas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EntitySchemas.js","sourceRoot":"","sources":["../../src/internal/EntitySchemas.ts"],"names":[],"mappings":"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"}
|