dyna-record 0.0.20 → 0.1.1
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 +17 -39
- package/dist/src/DynaRecord.d.ts +1 -1
- package/dist/src/DynaRecord.js +3 -3
- package/dist/src/decorators/attributes/BooleanAttribute.d.ts +28 -0
- package/dist/src/decorators/attributes/BooleanAttribute.d.ts.map +1 -0
- package/dist/src/decorators/attributes/{NullableAttribute.js → BooleanAttribute.js} +16 -11
- package/dist/src/decorators/attributes/DateAttribute.d.ts +11 -6
- package/dist/src/decorators/attributes/DateAttribute.d.ts.map +1 -1
- package/dist/src/decorators/attributes/DateAttribute.js +12 -5
- package/dist/src/decorators/attributes/ForeignKeyAttribute.d.ts +10 -4
- package/dist/src/decorators/attributes/ForeignKeyAttribute.d.ts.map +1 -1
- package/dist/src/decorators/attributes/ForeignKeyAttribute.js +10 -2
- package/dist/src/decorators/attributes/NumberAttribute.d.ts +28 -0
- package/dist/src/decorators/attributes/NumberAttribute.d.ts.map +1 -0
- package/dist/src/decorators/attributes/{DateNullableAttribute.js → NumberAttribute.js} +16 -13
- package/dist/src/decorators/attributes/PartitionKeyAttribute.d.ts +3 -3
- package/dist/src/decorators/attributes/PartitionKeyAttribute.d.ts.map +1 -1
- package/dist/src/decorators/attributes/PartitionKeyAttribute.js +3 -1
- package/dist/src/decorators/attributes/SortKeyAttribute.d.ts +3 -3
- package/dist/src/decorators/attributes/SortKeyAttribute.d.ts.map +1 -1
- package/dist/src/decorators/attributes/SortKeyAttribute.js +3 -1
- package/dist/src/decorators/attributes/StringAttribute.d.ts +28 -0
- package/dist/src/decorators/attributes/StringAttribute.d.ts.map +1 -0
- package/dist/src/decorators/attributes/{Attribute.js → StringAttribute.js} +15 -10
- package/dist/src/decorators/attributes/index.d.ts +3 -4
- package/dist/src/decorators/attributes/index.d.ts.map +1 -1
- package/dist/src/decorators/attributes/index.js +7 -9
- package/dist/src/decorators/attributes/serializers.d.ts +1 -1
- package/dist/src/decorators/attributes/serializers.d.ts.map +1 -1
- package/dist/src/decorators/attributes/serializers.js +1 -1
- package/dist/src/decorators/types.d.ts +9 -0
- package/dist/src/decorators/types.d.ts.map +1 -1
- package/dist/src/errors.d.ts +6 -0
- package/dist/src/errors.d.ts.map +1 -1
- package/dist/src/errors.js +8 -1
- package/dist/src/metadata/AttributeMetadata.d.ts +3 -0
- package/dist/src/metadata/AttributeMetadata.d.ts.map +1 -1
- package/dist/src/metadata/AttributeMetadata.js +9 -1
- package/dist/src/metadata/EntityMetadata.d.ts +16 -0
- package/dist/src/metadata/EntityMetadata.d.ts.map +1 -1
- package/dist/src/metadata/EntityMetadata.js +53 -0
- package/dist/src/metadata/TableMetadata.d.ts.map +1 -1
- package/dist/src/metadata/TableMetadata.js +7 -3
- package/dist/src/metadata/types.d.ts +3 -1
- package/dist/src/metadata/types.d.ts.map +1 -1
- package/dist/src/operations/Create/Create.d.ts.map +1 -1
- package/dist/src/operations/Create/Create.js +3 -0
- package/dist/src/operations/Update/Update.d.ts.map +1 -1
- package/dist/src/operations/Update/Update.js +3 -0
- package/dist/src/operations/types.d.ts +1 -1
- package/package.json +3 -2
- package/dist/src/decorators/attributes/Attribute.d.ts +0 -26
- package/dist/src/decorators/attributes/Attribute.d.ts.map +0 -1
- package/dist/src/decorators/attributes/DateNullableAttribute.d.ts +0 -26
- package/dist/src/decorators/attributes/DateNullableAttribute.d.ts.map +0 -1
- package/dist/src/decorators/attributes/NullableAttribute.d.ts +0 -27
- package/dist/src/decorators/attributes/NullableAttribute.d.ts.map +0 -1
- package/dist/src/decorators/attributes/NullableForeignKeyAttribute.d.ts +0 -30
- package/dist/src/decorators/attributes/NullableForeignKeyAttribute.d.ts.map +0 -1
- package/dist/src/decorators/attributes/NullableForeignKeyAttribute.js +0 -45
package/README.md
CHANGED
|
@@ -134,49 +134,35 @@ class Course extends MyTable {
|
|
|
134
134
|
|
|
135
135
|
### Attributes
|
|
136
136
|
|
|
137
|
-
|
|
137
|
+
Use the attribute decorators below to define attributes on a model. The decorator maps class properties to DynamoDB table attributes.
|
|
138
|
+
|
|
139
|
+
- Attribute decorators
|
|
140
|
+
|
|
141
|
+
- [@StringAttribute](https://dyna-record.com/functions/StringAttribute.html)
|
|
142
|
+
- [@NumberAttribute](https://dyna-record.com/functions/NumberAttribute.html)
|
|
143
|
+
- [@BooleanAttribute](https://dyna-record.com/functions/BooleanAttribute.html)
|
|
144
|
+
- [@DateAttribute](https://dyna-record.com/functions/DateAttribute.html)
|
|
138
145
|
|
|
139
146
|
- The [alias](https://dyna-record.com/interfaces/AttributeOptions.html#alias) option allows you to specify the attribute name as it appears in the DynamoDB table, different from your class property name.
|
|
140
147
|
- Set nullable attributes as optional for optimal type safety
|
|
141
148
|
- Attempting to remove a non-nullable attribute will result in a [NullConstrainViolationError](https://dyna-record.com/classes/NullConstraintViolationError.html)
|
|
142
149
|
|
|
143
150
|
```typescript
|
|
144
|
-
import { Entity, Attribute
|
|
151
|
+
import { Entity, Attribute } from "dyna-record";
|
|
145
152
|
|
|
146
153
|
@Entity
|
|
147
154
|
class Student extends MyTable {
|
|
148
|
-
@
|
|
155
|
+
@StringAttribute({ alias: "Username" }) // Sets alias if field in Dynamo is different then on the model
|
|
149
156
|
public username: string;
|
|
150
157
|
|
|
151
|
-
@
|
|
158
|
+
@StringAttribute() // Dynamo field and entity field are the same
|
|
152
159
|
public email: string;
|
|
153
160
|
|
|
154
|
-
@
|
|
161
|
+
@NumberAttribute({ nullable: true })
|
|
155
162
|
public someAttribute?: number; // Mark as optional
|
|
156
163
|
}
|
|
157
164
|
```
|
|
158
165
|
|
|
159
|
-
### Date Attributes
|
|
160
|
-
|
|
161
|
-
Dates are not natively supported in Dynamo. To define a date attribute use [@DateAttribute](https://dyna-record.com/functions/DateAttribute.html) or [@NullableDateAttribute](https://dyna-record.com/functions/DateNullableAttribute.html) decorators. dyna-record will save the values as ISO strings in Dynamo, but serialize them as JS date objects on the entity instance
|
|
162
|
-
|
|
163
|
-
- The [alias](https://dyna-record.com/interfaces/AttributeOptions.html#alias) option allows you to specify the attribute name as it appears in the DynamoDB table, different from your class property name.
|
|
164
|
-
- Set nullable attributes as optional for optimal type safety
|
|
165
|
-
- Attempting to remove a non-nullable attribute will result in a [NullConstrainViolationError](https://dyna-record.com/classes/NullConstraintViolationError.html)
|
|
166
|
-
|
|
167
|
-
```typescript
|
|
168
|
-
import { Entity, DateAttribute, NullableDateAttribute } from "dyna-record";
|
|
169
|
-
|
|
170
|
-
@Entity
|
|
171
|
-
class Student extends MyTable {
|
|
172
|
-
@DateAttribute()
|
|
173
|
-
public readonly signUpDate: Date;
|
|
174
|
-
|
|
175
|
-
@NullableDateAttribute({ alias: "LastLogin" })
|
|
176
|
-
public readonly lastLogin?: Date; // Set as optional
|
|
177
|
-
}
|
|
178
|
-
```
|
|
179
|
-
|
|
180
166
|
### Foreign Keys
|
|
181
167
|
|
|
182
168
|
Define foreign keys in order to support [@BelongsTo](https://dyna-record.com/functions/BelongsTo.html) relationships. A foreign key is required for [@HasOne](https://dyna-record.com/functions/HasOne.html) and [@HasMany](https://dyna-record.com/functions/HasMany.html) relationships.
|
|
@@ -190,7 +176,6 @@ import {
|
|
|
190
176
|
Entity,
|
|
191
177
|
ForeignKeyAttribute,
|
|
192
178
|
ForeignKey,
|
|
193
|
-
NullableForeignKeyAttribute,
|
|
194
179
|
NullableForeignKey,
|
|
195
180
|
BelongsTo
|
|
196
181
|
} from "dyna-record";
|
|
@@ -206,7 +191,7 @@ class Assignment extends MyTable {
|
|
|
206
191
|
|
|
207
192
|
@Entity
|
|
208
193
|
class Course extends MyTable {
|
|
209
|
-
@
|
|
194
|
+
@ForeignKeyAttribute({ nullable: true })
|
|
210
195
|
public readonly teacherId?: NullableForeignKey; // Set as optional
|
|
211
196
|
|
|
212
197
|
@BelongsTo(() => Teacher, { foreignKey: "teacherId" })
|
|
@@ -220,8 +205,7 @@ Dyna-Record supports defining relationships between entities such as [@HasOne](h
|
|
|
220
205
|
|
|
221
206
|
A relationship can be defined as nullable or non-nullable. Non-nullable relationships will be enforced via transactions and violations will result in [NullConstraintViolationError](https://dyna-record.com/classes/NullConstraintViolationError.html)
|
|
222
207
|
|
|
223
|
-
- [@ForeignKeyAttribute](https://dyna-record.com/functions/ForeignKeyAttribute.html) is used to define a foreign key that links to another entity
|
|
224
|
-
- [@NullableForeignKeyAttribute](https://dyna-record.com/functions/NullableForeignKeyAttribute.html) is used to define a foreign key that links to another entity and is nullable.
|
|
208
|
+
- [@ForeignKeyAttribute](https://dyna-record.com/functions/ForeignKeyAttribute.html) is used to define a foreign key that links to another entity
|
|
225
209
|
- Relationship decorators ([@HasOne](#hasone), [@HasMany](#hasmany), [@BelongsTo](https://dyna-record.com/functions/BelongsTo.html), [@HasAndBelongsToMany](#hasandbelongstomany)) define how entities relate to each other.
|
|
226
210
|
|
|
227
211
|
#### HasOne
|
|
@@ -260,13 +244,7 @@ class Grade extends MyTable {
|
|
|
260
244
|
[Docs](https://dyna-record.com/functions/HasMany.html)
|
|
261
245
|
|
|
262
246
|
```typescript
|
|
263
|
-
import {
|
|
264
|
-
Entity,
|
|
265
|
-
NullableForeignKeyAttribute,
|
|
266
|
-
NullableForeignKey,
|
|
267
|
-
BelongsTo,
|
|
268
|
-
HasMany
|
|
269
|
-
} from "dyna-record";
|
|
247
|
+
import { Entity, NullableForeignKey, BelongsTo, HasMany } from "dyna-record";
|
|
270
248
|
|
|
271
249
|
@Entity
|
|
272
250
|
class Teacher extends MyTable {
|
|
@@ -277,8 +255,8 @@ class Teacher extends MyTable {
|
|
|
277
255
|
|
|
278
256
|
@Entity
|
|
279
257
|
class Course extends MyTable {
|
|
280
|
-
@
|
|
281
|
-
public readonly teacherId?: NullableForeignKey;
|
|
258
|
+
@ForeignKeyAttribute({ nullable: true })
|
|
259
|
+
public readonly teacherId?: NullableForeignKey; // Mark as optional
|
|
282
260
|
|
|
283
261
|
// 'teacherId' Must be defined on self as ForeignKey or NullableForeignKey
|
|
284
262
|
@BelongsTo(() => Teacher, { foreignKey: "teacherId" })
|
package/dist/src/DynaRecord.d.ts
CHANGED
|
@@ -171,7 +171,7 @@ declare abstract class DynaRecord implements DynaRecordBase {
|
|
|
171
171
|
* Update an entity. If foreign keys are included in the attribute then:
|
|
172
172
|
* - BelongsToLinks will be created accordingly
|
|
173
173
|
* - If the entity already had a foreign key relationship, then those BelongsToLinks will be deleted
|
|
174
|
-
* - If the foreign key is not nullable then a {@link NullConstraintViolationError} is thrown.
|
|
174
|
+
* - If the foreign key is not nullable then a {@link NullConstraintViolationError} is thrown.
|
|
175
175
|
* - Validation errors will be thrown if the attribute being removed is not nullable
|
|
176
176
|
* @param id - The id of the entity to update
|
|
177
177
|
* @param attributes - Attributes to update
|
package/dist/src/DynaRecord.js
CHANGED
|
@@ -96,8 +96,8 @@ let DynaRecord = (() => {
|
|
|
96
96
|
return class DynaRecord {
|
|
97
97
|
static {
|
|
98
98
|
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
|
|
99
|
-
_id_decorators = [(0, decorators_1.
|
|
100
|
-
_type_decorators = [(0, decorators_1.
|
|
99
|
+
_id_decorators = [(0, decorators_1.StringAttribute)({ alias: metadata_1.tableDefaultFields.id.alias })];
|
|
100
|
+
_type_decorators = [(0, decorators_1.StringAttribute)({ alias: metadata_1.tableDefaultFields.type.alias })];
|
|
101
101
|
_createdAt_decorators = [(0, decorators_1.DateAttribute)({ alias: metadata_1.tableDefaultFields.createdAt.alias })];
|
|
102
102
|
_updatedAt_decorators = [(0, decorators_1.DateAttribute)({ alias: metadata_1.tableDefaultFields.updatedAt.alias })];
|
|
103
103
|
__esDecorate(null, null, _id_decorators, { kind: "field", name: "id", static: false, private: false, access: { has: obj => "id" in obj, get: obj => obj.id, set: (obj, value) => { obj.id = value; } }, metadata: _metadata }, _id_initializers, _instanceExtraInitializers);
|
|
@@ -163,7 +163,7 @@ let DynaRecord = (() => {
|
|
|
163
163
|
* Update an entity. If foreign keys are included in the attribute then:
|
|
164
164
|
* - BelongsToLinks will be created accordingly
|
|
165
165
|
* - If the entity already had a foreign key relationship, then those BelongsToLinks will be deleted
|
|
166
|
-
* - If the foreign key is not nullable then a {@link NullConstraintViolationError} is thrown.
|
|
166
|
+
* - If the foreign key is not nullable then a {@link NullConstraintViolationError} is thrown.
|
|
167
167
|
* - Validation errors will be thrown if the attribute being removed is not nullable
|
|
168
168
|
* @param id - The id of the entity to update
|
|
169
169
|
* @param attributes - Attributes to update
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type DynaRecord from "../../DynaRecord";
|
|
2
|
+
import type { AttributeDecoratorContext, AttributeOptions } from "../types";
|
|
3
|
+
/**
|
|
4
|
+
* A decorator for marking class fields as boolean attributes within the context of a single-table design entity
|
|
5
|
+
*
|
|
6
|
+
* Can be set to nullable via decorator props
|
|
7
|
+
*
|
|
8
|
+
* @template T The class type that the decorator is applied to, ensuring type safety and integration within specific class instances.
|
|
9
|
+
* @template K A type constraint extending `boolean`, ensuring that the decorator is only applied to class fields specifically intended to represent booleans.
|
|
10
|
+
* @param props An {@link AttributeOptions} object providing configuration options for the attribute, such as its `alias` which allows the attribute to be referred to by an alternative name in the database context. The `nullable` property is also set to `false` by default.
|
|
11
|
+
* @returns A class field decorator function that operates within the class field's context. It configures the field as a boolean attribute and defines how it should be serialized and deserialized to/from DynamoDB.
|
|
12
|
+
*
|
|
13
|
+
* Usage example:
|
|
14
|
+
* ```typescript
|
|
15
|
+
* class MyEntity extends MyTable {
|
|
16
|
+
* @BooleanAttribute({ alias: 'MyField' })
|
|
17
|
+
* public myField: boolean;
|
|
18
|
+
*
|
|
19
|
+
* @BooleanAttribute({ alias: 'MyNullableField', nullable: true })
|
|
20
|
+
* public myField?: boolean; // Set to Optional
|
|
21
|
+
* }
|
|
22
|
+
* ```
|
|
23
|
+
*
|
|
24
|
+
* Here, `@BooleanAttribute` decorates `myField` of `MyEntity`, marking it as an entity attribute with an alias 'MyField' for ORM purposes.
|
|
25
|
+
*/
|
|
26
|
+
declare function BooleanAttribute<T extends DynaRecord, K extends boolean, P extends AttributeOptions>(props?: P): (_value: undefined, context: AttributeDecoratorContext<T, K, P>) => void;
|
|
27
|
+
export default BooleanAttribute;
|
|
28
|
+
//# sourceMappingURL=BooleanAttribute.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BooleanAttribute.d.ts","sourceRoot":"","sources":["../../../../src/decorators/attributes/BooleanAttribute.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,UAAU,MAAM,kBAAkB,CAAC;AAE/C,OAAO,KAAK,EAAE,yBAAyB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5E;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,iBAAS,gBAAgB,CACvB,CAAC,SAAS,UAAU,EACpB,CAAC,SAAS,OAAO,EACjB,CAAC,SAAS,gBAAgB,EAC1B,KAAK,CAAC,EAAE,CAAC,YAEC,SAAS,WACR,0BAA0B,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,UAe9C;AAED,eAAe,gBAAgB,CAAC"}
|
|
@@ -3,39 +3,44 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const zod_1 = require("zod");
|
|
6
7
|
const metadata_1 = __importDefault(require("../../metadata"));
|
|
7
8
|
/**
|
|
8
|
-
*
|
|
9
|
+
* A decorator for marking class fields as boolean attributes within the context of a single-table design entity
|
|
9
10
|
*
|
|
10
|
-
*
|
|
11
|
+
* Can be set to nullable via decorator props
|
|
11
12
|
*
|
|
12
13
|
* @template T The class type that the decorator is applied to, ensuring type safety and integration within specific class instances.
|
|
13
|
-
* @template K A type constraint extending `
|
|
14
|
-
* @param props An {@link AttributeOptions} object providing configuration options for the attribute, such as its `alias` which allows the attribute to be referred to by an alternative name in the database context. The `nullable` property is also set to `
|
|
15
|
-
* @returns A class field decorator function that operates within the class field's context. It configures the field as a
|
|
14
|
+
* @template K A type constraint extending `boolean`, ensuring that the decorator is only applied to class fields specifically intended to represent booleans.
|
|
15
|
+
* @param props An {@link AttributeOptions} object providing configuration options for the attribute, such as its `alias` which allows the attribute to be referred to by an alternative name in the database context. The `nullable` property is also set to `false` by default.
|
|
16
|
+
* @returns A class field decorator function that operates within the class field's context. It configures the field as a boolean attribute and defines how it should be serialized and deserialized to/from DynamoDB.
|
|
16
17
|
*
|
|
17
18
|
* Usage example:
|
|
18
19
|
* ```typescript
|
|
19
20
|
* class MyEntity extends MyTable {
|
|
20
|
-
* @
|
|
21
|
-
* public myField
|
|
21
|
+
* @BooleanAttribute({ alias: 'MyField' })
|
|
22
|
+
* public myField: boolean;
|
|
23
|
+
*
|
|
24
|
+
* @BooleanAttribute({ alias: 'MyNullableField', nullable: true })
|
|
25
|
+
* public myField?: boolean; // Set to Optional
|
|
22
26
|
* }
|
|
23
27
|
* ```
|
|
24
28
|
*
|
|
25
|
-
* Here, `@
|
|
29
|
+
* Here, `@BooleanAttribute` decorates `myField` of `MyEntity`, marking it as an entity attribute with an alias 'MyField' for ORM purposes.
|
|
26
30
|
*/
|
|
27
|
-
function
|
|
31
|
+
function BooleanAttribute(props) {
|
|
28
32
|
return function (_value, context) {
|
|
29
33
|
if (context.kind === "field") {
|
|
30
34
|
context.addInitializer(function () {
|
|
31
35
|
const entity = Object.getPrototypeOf(this);
|
|
32
36
|
metadata_1.default.addEntityAttribute(entity.constructor.name, {
|
|
33
37
|
attributeName: context.name.toString(),
|
|
34
|
-
nullable:
|
|
38
|
+
nullable: props?.nullable,
|
|
39
|
+
type: zod_1.z.boolean(),
|
|
35
40
|
...props
|
|
36
41
|
});
|
|
37
42
|
});
|
|
38
43
|
}
|
|
39
44
|
};
|
|
40
45
|
}
|
|
41
|
-
exports.default =
|
|
46
|
+
exports.default = BooleanAttribute;
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import type DynaRecord from "../../DynaRecord";
|
|
2
|
-
import type { AttributeOptions } from "../types";
|
|
2
|
+
import type { AttributeDecoratorContext, AttributeOptions } from "../types";
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
4
|
+
* A decorator for marking class fields as date attributes within the context of a single-table design entity
|
|
5
5
|
*
|
|
6
|
-
*
|
|
6
|
+
* Because dates are not natively supported data types in dynamo, they will be converted to iso string's within dynamo, and serialized to date objects on the entity class
|
|
7
|
+
*
|
|
8
|
+
* Can be set to nullable via decorator props
|
|
7
9
|
*
|
|
8
10
|
* @template T The class type that the decorator is applied to, ensuring type safety and integration within specific class instances.
|
|
9
11
|
* @template K A type constraint extending `Date`, ensuring that the decorator is only applied to class fields specifically intended to represent dates.
|
|
10
|
-
* @param props An {@link AttributeOptions} object providing configuration options for the attribute, such as its `alias` which allows the attribute to be referred to by an alternative name in the database context. The `nullable` property is also set to `false` by default
|
|
12
|
+
* @param props An {@link AttributeOptions} object providing configuration options for the attribute, such as its `alias` which allows the attribute to be referred to by an alternative name in the database context. The `nullable` property is also set to `false` by default.
|
|
11
13
|
* @returns A class field decorator function that operates within the class field's context. It configures the field as a date attribute and defines how it should be serialized and deserialized to/from DynamoDB.
|
|
12
14
|
*
|
|
13
15
|
* Usage example:
|
|
@@ -15,11 +17,14 @@ import type { AttributeOptions } from "../types";
|
|
|
15
17
|
* class MyEntity extends MyTable {
|
|
16
18
|
* @DateAttribute({ alias: 'MyField' })
|
|
17
19
|
* public myField: Date;
|
|
20
|
+
*
|
|
21
|
+
* @DateAttribute({ alias: 'MyNullableField', nullable: true })
|
|
22
|
+
* public myField?: Date; // Set to Optional
|
|
18
23
|
* }
|
|
19
24
|
* ```
|
|
20
25
|
*
|
|
21
|
-
* Here, `@
|
|
26
|
+
* Here, `@DateAttribute` decorates `myField` of `MyEntity`, marking it as an entity attribute with an alias 'MyField' for ORM purposes.
|
|
22
27
|
*/
|
|
23
|
-
declare function DateAttribute<T extends DynaRecord, K extends Date>(props?:
|
|
28
|
+
declare function DateAttribute<T extends DynaRecord, K extends Date, P extends AttributeOptions>(props?: P): (_value: undefined, context: AttributeDecoratorContext<T, K, P>) => void;
|
|
24
29
|
export default DateAttribute;
|
|
25
30
|
//# sourceMappingURL=DateAttribute.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateAttribute.d.ts","sourceRoot":"","sources":["../../../../src/decorators/attributes/DateAttribute.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DateAttribute.d.ts","sourceRoot":"","sources":["../../../../src/decorators/attributes/DateAttribute.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,UAAU,MAAM,kBAAkB,CAAC;AAE/C,OAAO,KAAK,EAAE,yBAAyB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAG5E;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,iBAAS,aAAa,CACpB,CAAC,SAAS,UAAU,EACpB,CAAC,SAAS,IAAI,EACd,CAAC,SAAS,gBAAgB,EAC1B,KAAK,CAAC,EAAE,CAAC,YAEC,SAAS,WACR,0BAA0B,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,UAgB9C;AAED,eAAe,aAAa,CAAC"}
|
|
@@ -3,16 +3,19 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const zod_1 = require("zod");
|
|
6
7
|
const metadata_1 = __importDefault(require("../../metadata"));
|
|
7
8
|
const serializers_1 = require("./serializers");
|
|
8
9
|
/**
|
|
9
|
-
*
|
|
10
|
+
* A decorator for marking class fields as date attributes within the context of a single-table design entity
|
|
10
11
|
*
|
|
11
|
-
*
|
|
12
|
+
* Because dates are not natively supported data types in dynamo, they will be converted to iso string's within dynamo, and serialized to date objects on the entity class
|
|
13
|
+
*
|
|
14
|
+
* Can be set to nullable via decorator props
|
|
12
15
|
*
|
|
13
16
|
* @template T The class type that the decorator is applied to, ensuring type safety and integration within specific class instances.
|
|
14
17
|
* @template K A type constraint extending `Date`, ensuring that the decorator is only applied to class fields specifically intended to represent dates.
|
|
15
|
-
* @param props An {@link AttributeOptions} object providing configuration options for the attribute, such as its `alias` which allows the attribute to be referred to by an alternative name in the database context. The `nullable` property is also set to `false` by default
|
|
18
|
+
* @param props An {@link AttributeOptions} object providing configuration options for the attribute, such as its `alias` which allows the attribute to be referred to by an alternative name in the database context. The `nullable` property is also set to `false` by default.
|
|
16
19
|
* @returns A class field decorator function that operates within the class field's context. It configures the field as a date attribute and defines how it should be serialized and deserialized to/from DynamoDB.
|
|
17
20
|
*
|
|
18
21
|
* Usage example:
|
|
@@ -20,10 +23,13 @@ const serializers_1 = require("./serializers");
|
|
|
20
23
|
* class MyEntity extends MyTable {
|
|
21
24
|
* @DateAttribute({ alias: 'MyField' })
|
|
22
25
|
* public myField: Date;
|
|
26
|
+
*
|
|
27
|
+
* @DateAttribute({ alias: 'MyNullableField', nullable: true })
|
|
28
|
+
* public myField?: Date; // Set to Optional
|
|
23
29
|
* }
|
|
24
30
|
* ```
|
|
25
31
|
*
|
|
26
|
-
* Here, `@
|
|
32
|
+
* Here, `@DateAttribute` decorates `myField` of `MyEntity`, marking it as an entity attribute with an alias 'MyField' for ORM purposes.
|
|
27
33
|
*/
|
|
28
34
|
function DateAttribute(props) {
|
|
29
35
|
return function (_value, context) {
|
|
@@ -32,8 +38,9 @@ function DateAttribute(props) {
|
|
|
32
38
|
const entity = Object.getPrototypeOf(this);
|
|
33
39
|
metadata_1.default.addEntityAttribute(entity.constructor.name, {
|
|
34
40
|
attributeName: context.name.toString(),
|
|
35
|
-
nullable:
|
|
41
|
+
nullable: props?.nullable,
|
|
36
42
|
serializers: serializers_1.dateSerializer,
|
|
43
|
+
type: zod_1.z.date(),
|
|
37
44
|
...props
|
|
38
45
|
});
|
|
39
46
|
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type DynaRecord from "../../DynaRecord";
|
|
2
|
-
import type { ForeignKey } from "../../types";
|
|
3
|
-
import type { AttributeOptions } from "../types";
|
|
2
|
+
import type { ForeignKey, NullableForeignKey } from "../../types";
|
|
3
|
+
import type { AttributeDecoratorContext, AttributeOptions } from "../types";
|
|
4
4
|
/**
|
|
5
5
|
* A decorator for annotating class fields as foreign keys within the context of a single-table design entity, aimed at establishing and managing relationships between different entities in a relational manner. This decorator enables the clear and explicit declaration of foreign key relationships, contributing to the ORM's ability to navigate and resolve these associations efficiently.
|
|
6
6
|
*
|
|
@@ -16,15 +16,21 @@ import type { AttributeOptions } from "../types";
|
|
|
16
16
|
* ```typescript
|
|
17
17
|
* class Order extends BaseEntity {
|
|
18
18
|
* @ForeignKeyAttribute({ alias: 'UserID' })
|
|
19
|
-
* public userId: ForeignKey; // Foreign key to the User entity. Cannot be optional.
|
|
19
|
+
* public userId: ForeignKey; // Foreign key to the User entity. Cannot be optional.
|
|
20
20
|
*
|
|
21
21
|
* @BelongsTo(() => User, { foreignKey: "userId" })
|
|
22
22
|
* public readonly user: User; // Cannot be optional
|
|
23
|
+
*
|
|
24
|
+
* @ForeignKeyAttribute({ alias: 'ProfileId', nullable: true })
|
|
25
|
+
* public profileId?: NullableForeignKey; // Set to optional. Nullable foreign key to another entity (e.g., UserProfile)
|
|
26
|
+
*
|
|
27
|
+
* @BelongsTo(() => Profile, { foreignKey: "profileId" })
|
|
28
|
+
* public readonly profile?: Profile; // Set to optional because its linked via a NullableForeignKey
|
|
23
29
|
* }
|
|
24
30
|
* ```
|
|
25
31
|
*
|
|
26
32
|
* Here, `@ForeignKeyAttribute` decorates `userId` of `Order`, designating it as a foreign key that references the `User` entity. This decoration not only clarifies the nature of the relationship but also empowers the ORM to enforce relational integrity and facilitate entity association operations.
|
|
27
33
|
*/
|
|
28
|
-
declare function ForeignKeyAttribute<T extends DynaRecord>(props?:
|
|
34
|
+
declare function ForeignKeyAttribute<T extends DynaRecord, P extends AttributeOptions>(props?: P): (_value: undefined, context: AttributeDecoratorContext<T, P["nullable"] extends true ? NullableForeignKey : ForeignKey, P>) => void;
|
|
29
35
|
export default ForeignKeyAttribute;
|
|
30
36
|
//# sourceMappingURL=ForeignKeyAttribute.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ForeignKeyAttribute.d.ts","sourceRoot":"","sources":["../../../../src/decorators/attributes/ForeignKeyAttribute.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ForeignKeyAttribute.d.ts","sourceRoot":"","sources":["../../../../src/decorators/attributes/ForeignKeyAttribute.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,UAAU,MAAM,kBAAkB,CAAC;AAE/C,OAAO,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,KAAK,EAAE,yBAAyB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,iBAAS,mBAAmB,CAAC,CAAC,SAAS,UAAU,EAAE,CAAC,SAAS,gBAAgB,EAC3E,KAAK,CAAC,EAAE,CAAC,YAGC,SAAS,WACR,0BACP,CAAC,EACD,CAAC,CAAC,UAAU,CAAC,SAAS,IAAI,GAAG,kBAAkB,GAAG,UAAU,EAC5D,CAAC,CACF,UAeJ;AAED,eAAe,mBAAmB,CAAC"}
|
|
@@ -3,6 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const zod_1 = require("zod");
|
|
6
7
|
const metadata_1 = __importDefault(require("../../metadata"));
|
|
7
8
|
/**
|
|
8
9
|
* A decorator for annotating class fields as foreign keys within the context of a single-table design entity, aimed at establishing and managing relationships between different entities in a relational manner. This decorator enables the clear and explicit declaration of foreign key relationships, contributing to the ORM's ability to navigate and resolve these associations efficiently.
|
|
@@ -19,10 +20,16 @@ const metadata_1 = __importDefault(require("../../metadata"));
|
|
|
19
20
|
* ```typescript
|
|
20
21
|
* class Order extends BaseEntity {
|
|
21
22
|
* @ForeignKeyAttribute({ alias: 'UserID' })
|
|
22
|
-
* public userId: ForeignKey; // Foreign key to the User entity. Cannot be optional.
|
|
23
|
+
* public userId: ForeignKey; // Foreign key to the User entity. Cannot be optional.
|
|
23
24
|
*
|
|
24
25
|
* @BelongsTo(() => User, { foreignKey: "userId" })
|
|
25
26
|
* public readonly user: User; // Cannot be optional
|
|
27
|
+
*
|
|
28
|
+
* @ForeignKeyAttribute({ alias: 'ProfileId', nullable: true })
|
|
29
|
+
* public profileId?: NullableForeignKey; // Set to optional. Nullable foreign key to another entity (e.g., UserProfile)
|
|
30
|
+
*
|
|
31
|
+
* @BelongsTo(() => Profile, { foreignKey: "profileId" })
|
|
32
|
+
* public readonly profile?: Profile; // Set to optional because its linked via a NullableForeignKey
|
|
26
33
|
* }
|
|
27
34
|
* ```
|
|
28
35
|
*
|
|
@@ -35,7 +42,8 @@ function ForeignKeyAttribute(props) {
|
|
|
35
42
|
const entity = Object.getPrototypeOf(this);
|
|
36
43
|
metadata_1.default.addEntityAttribute(entity.constructor.name, {
|
|
37
44
|
attributeName: context.name.toString(),
|
|
38
|
-
nullable:
|
|
45
|
+
nullable: props?.nullable,
|
|
46
|
+
type: zod_1.z.string(),
|
|
39
47
|
...props
|
|
40
48
|
});
|
|
41
49
|
});
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type DynaRecord from "../../DynaRecord";
|
|
2
|
+
import type { AttributeDecoratorContext, AttributeOptions } from "../types";
|
|
3
|
+
/**
|
|
4
|
+
* A decorator for marking class fields as number attributes within the context of a single-table design entity
|
|
5
|
+
*
|
|
6
|
+
* Can be set to nullable via decorator props
|
|
7
|
+
*
|
|
8
|
+
* @template T The class type that the decorator is applied to, ensuring type safety and integration within specific class instances.
|
|
9
|
+
* @template K A type constraint extending `number`, ensuring that the decorator is only applied to class fields specifically intended to represent numbers.
|
|
10
|
+
* @param props An {@link AttributeOptions} object providing configuration options for the attribute, such as its `alias` which allows the attribute to be referred to by an alternative name in the database context. The `nullable` property is also set to `false` by default.
|
|
11
|
+
* @returns A class field decorator function that operates within the class field's context. It configures the field as a number attribute and defines how it should be serialized and deserialized to/from DynamoDB.
|
|
12
|
+
*
|
|
13
|
+
* Usage example:
|
|
14
|
+
* ```typescript
|
|
15
|
+
* class MyEntity extends MyTable {
|
|
16
|
+
* @NumberAttribute({ alias: 'MyField' })
|
|
17
|
+
* public myField: number;
|
|
18
|
+
*
|
|
19
|
+
* @NumberAttribute({ alias: 'MyNullableField', nullable: true })
|
|
20
|
+
* public myField?: number; // Set to Optional
|
|
21
|
+
* }
|
|
22
|
+
* ```
|
|
23
|
+
*
|
|
24
|
+
* Here, `@NumberAttribute` decorates `myField` of `MyEntity`, marking it as an entity attribute with an alias 'MyField' for ORM purposes.
|
|
25
|
+
*/
|
|
26
|
+
declare function NumberAttribute<T extends DynaRecord, K extends number, P extends AttributeOptions>(props?: P): (_value: undefined, context: AttributeDecoratorContext<T, K, P>) => void;
|
|
27
|
+
export default NumberAttribute;
|
|
28
|
+
//# sourceMappingURL=NumberAttribute.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NumberAttribute.d.ts","sourceRoot":"","sources":["../../../../src/decorators/attributes/NumberAttribute.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,UAAU,MAAM,kBAAkB,CAAC;AAE/C,OAAO,KAAK,EAAE,yBAAyB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5E;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,iBAAS,eAAe,CACtB,CAAC,SAAS,UAAU,EACpB,CAAC,SAAS,MAAM,EAChB,CAAC,SAAS,gBAAgB,EAC1B,KAAK,CAAC,EAAE,CAAC,YAEC,SAAS,WACR,0BAA0B,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,UAe9C;AAED,eAAe,eAAe,CAAC"}
|
|
@@ -3,41 +3,44 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const zod_1 = require("zod");
|
|
6
7
|
const metadata_1 = __importDefault(require("../../metadata"));
|
|
7
|
-
const serializers_1 = require("./serializers");
|
|
8
8
|
/**
|
|
9
|
-
*
|
|
9
|
+
* A decorator for marking class fields as number attributes within the context of a single-table design entity
|
|
10
10
|
*
|
|
11
|
-
*
|
|
11
|
+
* Can be set to nullable via decorator props
|
|
12
12
|
*
|
|
13
13
|
* @template T The class type that the decorator is applied to, ensuring type safety and integration within specific class instances.
|
|
14
|
-
* @template K A type constraint extending `
|
|
15
|
-
* @param props An {@link AttributeOptions} object providing configuration options for the attribute, such as its `alias` which allows the attribute to be referred to by an alternative name in the database context. The `nullable` property is also set to `false` by default
|
|
16
|
-
* @returns A class field decorator function that operates within the class field's context. It configures the field as a
|
|
14
|
+
* @template K A type constraint extending `number`, ensuring that the decorator is only applied to class fields specifically intended to represent numbers.
|
|
15
|
+
* @param props An {@link AttributeOptions} object providing configuration options for the attribute, such as its `alias` which allows the attribute to be referred to by an alternative name in the database context. The `nullable` property is also set to `false` by default.
|
|
16
|
+
* @returns A class field decorator function that operates within the class field's context. It configures the field as a number attribute and defines how it should be serialized and deserialized to/from DynamoDB.
|
|
17
17
|
*
|
|
18
18
|
* Usage example:
|
|
19
19
|
* ```typescript
|
|
20
20
|
* class MyEntity extends MyTable {
|
|
21
|
-
* @
|
|
22
|
-
* public myField
|
|
21
|
+
* @NumberAttribute({ alias: 'MyField' })
|
|
22
|
+
* public myField: number;
|
|
23
|
+
*
|
|
24
|
+
* @NumberAttribute({ alias: 'MyNullableField', nullable: true })
|
|
25
|
+
* public myField?: number; // Set to Optional
|
|
23
26
|
* }
|
|
24
27
|
* ```
|
|
25
28
|
*
|
|
26
|
-
* Here, `@
|
|
29
|
+
* Here, `@NumberAttribute` decorates `myField` of `MyEntity`, marking it as an entity attribute with an alias 'MyField' for ORM purposes.
|
|
27
30
|
*/
|
|
28
|
-
function
|
|
31
|
+
function NumberAttribute(props) {
|
|
29
32
|
return function (_value, context) {
|
|
30
33
|
if (context.kind === "field") {
|
|
31
34
|
context.addInitializer(function () {
|
|
32
35
|
const entity = Object.getPrototypeOf(this);
|
|
33
36
|
metadata_1.default.addEntityAttribute(entity.constructor.name, {
|
|
34
37
|
attributeName: context.name.toString(),
|
|
35
|
-
nullable:
|
|
36
|
-
|
|
38
|
+
nullable: props?.nullable,
|
|
39
|
+
type: zod_1.z.number(),
|
|
37
40
|
...props
|
|
38
41
|
});
|
|
39
42
|
});
|
|
40
43
|
}
|
|
41
44
|
};
|
|
42
45
|
}
|
|
43
|
-
exports.default =
|
|
46
|
+
exports.default = NumberAttribute;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import type DynaRecord from "../../DynaRecord";
|
|
2
2
|
import { type PartitionKey } from "../../types";
|
|
3
|
-
import type {
|
|
3
|
+
import type { NonNullAttributeOptions } from "../types";
|
|
4
4
|
/**
|
|
5
5
|
* A decorator for designating the field for the partition key on the dynamo table.
|
|
6
6
|
*
|
|
7
7
|
* @template T The entity to which the decorator is applied.
|
|
8
8
|
* @template K The type constraint ensuring the field is suitable to be a partition key.
|
|
9
|
-
* @param props An optional object of {@link
|
|
9
|
+
* @param props An optional object of {@link NonNullAttributeOptions}, providing additional configuration for the partition key attribute, such as custom metadata.
|
|
10
10
|
* @returns A class field decorator function that targets and initializes the class's prototype to register the partition key with the ORM's metadata system.
|
|
11
11
|
*
|
|
12
12
|
* Usage example:
|
|
@@ -19,6 +19,6 @@ import type { AttributeOptions } from "../types";
|
|
|
19
19
|
*
|
|
20
20
|
* In this example, `@PartitionKeyAttribute` decorates the `pk` field of `User`, marking it as the entity's partition key.
|
|
21
21
|
*/
|
|
22
|
-
declare function PartitionKeyAttribute<T extends DynaRecord, K extends PartitionKey>(props?:
|
|
22
|
+
declare function PartitionKeyAttribute<T extends DynaRecord, K extends PartitionKey>(props?: NonNullAttributeOptions): (_value: undefined, context: ClassFieldDecoratorContext<T, K>) => void;
|
|
23
23
|
export default PartitionKeyAttribute;
|
|
24
24
|
//# sourceMappingURL=PartitionKeyAttribute.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PartitionKeyAttribute.d.ts","sourceRoot":"","sources":["../../../../src/decorators/attributes/PartitionKeyAttribute.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PartitionKeyAttribute.d.ts","sourceRoot":"","sources":["../../../../src/decorators/attributes/PartitionKeyAttribute.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,UAAU,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAExD;;;;;;;;;;;;;;;;;GAiBG;AACH,iBAAS,qBAAqB,CAAC,CAAC,SAAS,UAAU,EAAE,CAAC,SAAS,YAAY,EACzE,KAAK,CAAC,EAAE,uBAAuB,YAGrB,SAAS,WACR,2BAA2B,CAAC,EAAE,CAAC,CAAC,UAc5C;AAED,eAAe,qBAAqB,CAAC"}
|
|
@@ -3,13 +3,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const zod_1 = require("zod");
|
|
6
7
|
const metadata_1 = __importDefault(require("../../metadata"));
|
|
7
8
|
/**
|
|
8
9
|
* A decorator for designating the field for the partition key on the dynamo table.
|
|
9
10
|
*
|
|
10
11
|
* @template T The entity to which the decorator is applied.
|
|
11
12
|
* @template K The type constraint ensuring the field is suitable to be a partition key.
|
|
12
|
-
* @param props An optional object of {@link
|
|
13
|
+
* @param props An optional object of {@link NonNullAttributeOptions}, providing additional configuration for the partition key attribute, such as custom metadata.
|
|
13
14
|
* @returns A class field decorator function that targets and initializes the class's prototype to register the partition key with the ORM's metadata system.
|
|
14
15
|
*
|
|
15
16
|
* Usage example:
|
|
@@ -29,6 +30,7 @@ function PartitionKeyAttribute(props) {
|
|
|
29
30
|
const entity = Object.getPrototypeOf(this);
|
|
30
31
|
metadata_1.default.addPartitionKeyAttribute(entity, {
|
|
31
32
|
attributeName: context.name.toString(),
|
|
33
|
+
type: zod_1.z.string(),
|
|
32
34
|
...props
|
|
33
35
|
});
|
|
34
36
|
});
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import type DynaRecord from "../../DynaRecord";
|
|
2
2
|
import { type SortKey } from "../../types";
|
|
3
|
-
import type {
|
|
3
|
+
import type { NonNullAttributeOptions } from "../types";
|
|
4
4
|
/**
|
|
5
5
|
* A decorator for designating the field for the sort key on the dynamo table.
|
|
6
6
|
*
|
|
7
7
|
* @template T The entity to which the decorator is applied.
|
|
8
8
|
* @template K The type constraint ensuring the field is suitable to be a partition key.
|
|
9
|
-
* @param props An optional object of {@link
|
|
9
|
+
* @param props An optional object of {@link NonNullAttributeOptions}, providing additional configuration for the sort key attribute, such as custom metadata.
|
|
10
10
|
* @returns A class field decorator function that targets and initializes the class's prototype to register the sort key with the ORM's metadata system.
|
|
11
11
|
*
|
|
12
12
|
* Usage example:
|
|
@@ -19,6 +19,6 @@ import type { AttributeOptions } from "../types";
|
|
|
19
19
|
*
|
|
20
20
|
* In this example, `@SortKeyAttribute` decorates the `sk` field of `User`, marking it as the entity's sort key.
|
|
21
21
|
*/
|
|
22
|
-
declare function SortKeyAttribute<T extends DynaRecord, K extends SortKey>(props?:
|
|
22
|
+
declare function SortKeyAttribute<T extends DynaRecord, K extends SortKey>(props?: NonNullAttributeOptions): (_value: undefined, context: ClassFieldDecoratorContext<T, K>) => void;
|
|
23
23
|
export default SortKeyAttribute;
|
|
24
24
|
//# sourceMappingURL=SortKeyAttribute.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SortKeyAttribute.d.ts","sourceRoot":"","sources":["../../../../src/decorators/attributes/SortKeyAttribute.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SortKeyAttribute.d.ts","sourceRoot":"","sources":["../../../../src/decorators/attributes/SortKeyAttribute.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,UAAU,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAExD;;;;;;;;;;;;;;;;;GAiBG;AACH,iBAAS,gBAAgB,CAAC,CAAC,SAAS,UAAU,EAAE,CAAC,SAAS,OAAO,EAC/D,KAAK,CAAC,EAAE,uBAAuB,YAGrB,SAAS,WACR,2BAA2B,CAAC,EAAE,CAAC,CAAC,UAc5C;AAED,eAAe,gBAAgB,CAAC"}
|
|
@@ -3,13 +3,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const zod_1 = require("zod");
|
|
6
7
|
const metadata_1 = __importDefault(require("../../metadata"));
|
|
7
8
|
/**
|
|
8
9
|
* A decorator for designating the field for the sort key on the dynamo table.
|
|
9
10
|
*
|
|
10
11
|
* @template T The entity to which the decorator is applied.
|
|
11
12
|
* @template K The type constraint ensuring the field is suitable to be a partition key.
|
|
12
|
-
* @param props An optional object of {@link
|
|
13
|
+
* @param props An optional object of {@link NonNullAttributeOptions}, providing additional configuration for the sort key attribute, such as custom metadata.
|
|
13
14
|
* @returns A class field decorator function that targets and initializes the class's prototype to register the sort key with the ORM's metadata system.
|
|
14
15
|
*
|
|
15
16
|
* Usage example:
|
|
@@ -29,6 +30,7 @@ function SortKeyAttribute(props) {
|
|
|
29
30
|
const entity = Object.getPrototypeOf(this);
|
|
30
31
|
metadata_1.default.addSortKeyAttribute(entity, {
|
|
31
32
|
attributeName: context.name.toString(),
|
|
33
|
+
type: zod_1.z.string(),
|
|
32
34
|
...props
|
|
33
35
|
});
|
|
34
36
|
});
|