orm-dynamodb 1.0.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 +181 -0
- package/dist/BaseEntity.d.ts +21 -0
- package/dist/BaseEntity.d.ts.map +1 -0
- package/dist/BaseEntity.js +533 -0
- package/dist/BaseEntity.js.map +1 -0
- package/dist/client.d.ts +8 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +41 -0
- package/dist/client.js.map +1 -0
- package/dist/decorators.d.ts +14 -0
- package/dist/decorators.d.ts.map +1 -0
- package/dist/decorators.js +80 -0
- package/dist/decorators.js.map +1 -0
- package/dist/dynamoDbORM.d.ts +3 -0
- package/dist/dynamoDbORM.d.ts.map +1 -0
- package/dist/dynamoDbORM.js +14 -0
- package/dist/dynamoDbORM.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -0
- package/dist/symbols.d.ts +6 -0
- package/dist/symbols.d.ts.map +1 -0
- package/dist/symbols.js +9 -0
- package/dist/symbols.js.map +1 -0
- package/dist/types.d.ts +43 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/package.json +49 -0
package/README.md
ADDED
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
# orm-dynamodb
|
|
2
|
+
|
|
3
|
+
Lightweight TypeScript decorators for modeling DynamoDB items as classes.
|
|
4
|
+
|
|
5
|
+
## Install
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install orm-dynamodb
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
The package depends on `@aws-sdk/client-dynamodb` and `@aws-sdk/lib-dynamodb`.
|
|
12
|
+
|
|
13
|
+
Your TypeScript config must enable decorators:
|
|
14
|
+
|
|
15
|
+
```json
|
|
16
|
+
{
|
|
17
|
+
"compilerOptions": {
|
|
18
|
+
"experimentalDecorators": true,
|
|
19
|
+
"emitDecoratorMetadata": true
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Quick Start
|
|
25
|
+
|
|
26
|
+
```ts
|
|
27
|
+
import { DynamoDBClient } from '@aws-sdk/client-dynamodb';
|
|
28
|
+
import {
|
|
29
|
+
BaseEntity,
|
|
30
|
+
Entity,
|
|
31
|
+
FromDbModel,
|
|
32
|
+
HashKeyValue,
|
|
33
|
+
Link,
|
|
34
|
+
SortKeyValue,
|
|
35
|
+
ToDbModel
|
|
36
|
+
} from 'orm-dynamodb';
|
|
37
|
+
|
|
38
|
+
BaseEntity.configure(new DynamoDBClient({ region: process.env.AWS_REGION || 'us-east-1' }));
|
|
39
|
+
|
|
40
|
+
@Entity('content', 'pk', 'sk')
|
|
41
|
+
class Author extends BaseEntity {
|
|
42
|
+
@HashKeyValue
|
|
43
|
+
get hashKey() {
|
|
44
|
+
return 'AUTHOR';
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
@SortKeyValue
|
|
48
|
+
get sortKey() {
|
|
49
|
+
return this.authorId;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
authorId: string;
|
|
53
|
+
displayName: string;
|
|
54
|
+
|
|
55
|
+
constructor(authorId: string = '', displayName: string = '') {
|
|
56
|
+
super();
|
|
57
|
+
this.authorId = authorId;
|
|
58
|
+
this.displayName = displayName;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
@Entity('content', 'pk', 'sk')
|
|
63
|
+
class Post extends BaseEntity {
|
|
64
|
+
@HashKeyValue
|
|
65
|
+
get hashKey() {
|
|
66
|
+
return 'POST';
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
@SortKeyValue
|
|
70
|
+
get sortKey() {
|
|
71
|
+
return this.slug;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
slug: string;
|
|
75
|
+
title: string;
|
|
76
|
+
publishedAt: Date | null;
|
|
77
|
+
|
|
78
|
+
@Link(Author)
|
|
79
|
+
author: Author | undefined;
|
|
80
|
+
|
|
81
|
+
constructor(slug: string = '', title: string = '', publishedAt: Date | null = null) {
|
|
82
|
+
super();
|
|
83
|
+
this.slug = slug;
|
|
84
|
+
this.title = title;
|
|
85
|
+
this.publishedAt = publishedAt;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
@ToDbModel
|
|
89
|
+
static toDbModel(post: Post) {
|
|
90
|
+
return {
|
|
91
|
+
publishedAt: post.publishedAt ? post.publishedAt.toISOString() : null
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
@FromDbModel
|
|
96
|
+
static fromDbModel(item: { publishedAt?: string | null }) {
|
|
97
|
+
return {
|
|
98
|
+
publishedAt: item.publishedAt ? new Date(item.publishedAt) : null
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
async function run() {
|
|
104
|
+
const post = new Post('decorators-with-dynamodb', 'Decorators With DynamoDB', new Date());
|
|
105
|
+
post.author = new Author('ada-lovelace', 'Ada Lovelace');
|
|
106
|
+
|
|
107
|
+
await post.save();
|
|
108
|
+
|
|
109
|
+
const loaded = await Post.get('decorators-with-dynamodb');
|
|
110
|
+
await loaded?.loadLinks();
|
|
111
|
+
|
|
112
|
+
console.log(loaded?.author?.displayName);
|
|
113
|
+
}
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
## API
|
|
117
|
+
|
|
118
|
+
The package exports:
|
|
119
|
+
|
|
120
|
+
- `BaseEntity`
|
|
121
|
+
- `Entity`
|
|
122
|
+
- `HashKeyValue`
|
|
123
|
+
- `SortKeyValue`
|
|
124
|
+
- `Link`
|
|
125
|
+
- `ToDbModel`
|
|
126
|
+
- `FromDbModel`
|
|
127
|
+
|
|
128
|
+
Core capabilities:
|
|
129
|
+
|
|
130
|
+
- explicit DynamoDB client configuration via `BaseEntity.configure(...)` or `@Entity(..., dbClient)`
|
|
131
|
+
- `save()`, `update()`, and `delete()` instance methods
|
|
132
|
+
- `get()`, `query()`, and common query helpers on the entity class
|
|
133
|
+
- linked entity references with `@Link(...)` and `loadLinks()`
|
|
134
|
+
- custom read/write mapping with `@ToDbModel` and `@FromDbModel`
|
|
135
|
+
- automatic `createdAt` and `updatedAt` timestamps
|
|
136
|
+
|
|
137
|
+
## Local Development
|
|
138
|
+
|
|
139
|
+
Install dependencies:
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
pnpm install
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
Build the package:
|
|
146
|
+
|
|
147
|
+
```bash
|
|
148
|
+
pnpm build
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
Run the local example:
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
pnpm exec tsx examples.ts
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
Check what will be published:
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
npm run pack:check
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
## Publish
|
|
164
|
+
|
|
165
|
+
Make sure the package name in `package.json` is the one you want to publish and is available on npm, then:
|
|
166
|
+
|
|
167
|
+
```bash
|
|
168
|
+
npm login
|
|
169
|
+
npm publish
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
If you rename the package, update the import path in this README to match.
|
|
173
|
+
|
|
174
|
+
## Notes
|
|
175
|
+
|
|
176
|
+
- Static lookups assume the hash key can be derived from a default-constructed instance.
|
|
177
|
+
- Query helpers all operate within a single partition key value.
|
|
178
|
+
- Link loading currently issues individual `GetCommand` calls per linked record.
|
|
179
|
+
- This is a lightweight utility, not a schema or migration system.
|
|
180
|
+
|
|
181
|
+
See [examples.ts](./examples.ts) for a fuller usage example.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { DynamoDBClient } from '@aws-sdk/client-dynamodb';
|
|
2
|
+
import type { QueryOptions, EntityMetadata } from './types';
|
|
3
|
+
export declare class BaseEntity {
|
|
4
|
+
protected getMetadata(): EntityMetadata;
|
|
5
|
+
protected getKey(): any;
|
|
6
|
+
protected toItem(): any;
|
|
7
|
+
insert(): Promise<this>;
|
|
8
|
+
update(attributes: Partial<this>): Promise<this>;
|
|
9
|
+
delete(): Promise<void>;
|
|
10
|
+
loadLinks(): Promise<this>;
|
|
11
|
+
static configure(dynamoDBClient: DynamoDBClient, documentClientConfig?: any): void;
|
|
12
|
+
static get<T extends BaseEntity>(this: new (...args: any[]) => T, sortKeyValue: any): Promise<T | null>;
|
|
13
|
+
static query<T extends BaseEntity>(this: new (...args: any[]) => T, options?: QueryOptions): Promise<T[]>;
|
|
14
|
+
static queryAll<T extends BaseEntity>(this: new (...args: any[]) => T, limit?: number): Promise<T[]>;
|
|
15
|
+
static queryStartsWith<T extends BaseEntity>(this: new (...args: any[]) => T, sortKeyPrefix: string, limit?: number): Promise<T[]>;
|
|
16
|
+
static queryBetween<T extends BaseEntity>(this: new (...args: any[]) => T, start: any, end: any, limit?: number): Promise<T[]>;
|
|
17
|
+
static queryGreaterThan<T extends BaseEntity>(this: new (...args: any[]) => T, sortKeyValue: any, limit?: number): Promise<T[]>;
|
|
18
|
+
static queryLessThan<T extends BaseEntity>(this: new (...args: any[]) => T, sortKeyValue: any, limit?: number): Promise<T[]>;
|
|
19
|
+
static queryEquals<T extends BaseEntity>(this: new (...args: any[]) => T, sortKeyValue: any, limit?: number): Promise<T[]>;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=BaseEntity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseEntity.d.ts","sourceRoot":"","sources":["../BaseEntity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAS1D,OAAO,KAAK,EAAgB,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAG1E,qBAAa,UAAU;IAEnB,SAAS,CAAC,WAAW,IAAI,cAAc;IAIvC,SAAS,CAAC,MAAM;IAehB,SAAS,CAAC,MAAM;IA4DV,MAAM;IAuIN,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC;IAiChC,MAAM;IAyFN,SAAS;IAmGf,MAAM,CAAC,SAAS,CAAC,cAAc,EAAE,cAAc,EAAE,oBAAoB,CAAC,EAAE,GAAG;WAI9D,GAAG,CAAC,CAAC,SAAS,UAAU,EAAE,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,YAAY,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;WAmChG,KAAK,CAAC,CAAC,SAAS,UAAU,EAAE,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;WAwFlG,QAAQ,CAAC,CAAC,SAAS,UAAU,EAAE,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;WAI7F,eAAe,CAAC,CAAC,SAAS,UAAU,EAAE,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;WAO3H,YAAY,CAAC,CAAC,SAAS,UAAU,EAAE,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;WAOvH,gBAAgB,CAAC,CAAC,SAAS,UAAU,EAAE,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;WAOxH,aAAa,CAAC,CAAC,SAAS,UAAU,EAAE,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;WAOrH,WAAW,CAAC,CAAC,SAAS,UAAU,EAAE,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;CAMnI"}
|
|
@@ -0,0 +1,533 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BaseEntity = void 0;
|
|
4
|
+
const lib_dynamodb_1 = require("@aws-sdk/lib-dynamodb");
|
|
5
|
+
const symbols_1 = require("./symbols");
|
|
6
|
+
const client_1 = require("./client");
|
|
7
|
+
class BaseEntity {
|
|
8
|
+
getMetadata() {
|
|
9
|
+
return this.constructor.__entityMetadata__;
|
|
10
|
+
}
|
|
11
|
+
getKey() {
|
|
12
|
+
const metadata = this.getMetadata();
|
|
13
|
+
const key = {};
|
|
14
|
+
if (metadata.hashKeyGetter) {
|
|
15
|
+
key[metadata.hashKeyName] = this[metadata.hashKeyGetter];
|
|
16
|
+
}
|
|
17
|
+
if (metadata.sortKeyName && metadata.sortKeyGetter) {
|
|
18
|
+
key[metadata.sortKeyName] = this[metadata.sortKeyGetter];
|
|
19
|
+
}
|
|
20
|
+
return key;
|
|
21
|
+
}
|
|
22
|
+
toItem() {
|
|
23
|
+
const item = { ...this };
|
|
24
|
+
const metadata = this.getMetadata();
|
|
25
|
+
const key = this.getKey();
|
|
26
|
+
// Apply custom toDbModel mapper if defined
|
|
27
|
+
const toDbModelMapper = this.constructor[symbols_1.TO_DB_MODEL_METADATA];
|
|
28
|
+
if (toDbModelMapper) {
|
|
29
|
+
const mappedData = this.constructor[toDbModelMapper](this);
|
|
30
|
+
Object.assign(item, mappedData);
|
|
31
|
+
}
|
|
32
|
+
// Handle linked entities
|
|
33
|
+
const links = this.constructor.prototype[symbols_1.LINKS_METADATA] || [];
|
|
34
|
+
for (const link of links) {
|
|
35
|
+
const value = this[link.propertyKey];
|
|
36
|
+
const isInline = link.inline ?? false;
|
|
37
|
+
if (isInline) {
|
|
38
|
+
if (value !== undefined && value !== null) {
|
|
39
|
+
if (link.isArray) {
|
|
40
|
+
item[`__${link.propertyKey}ID`] = value.map((linkedItem) => {
|
|
41
|
+
const linkedKey = linkedItem.getKey();
|
|
42
|
+
const linkedMetadata = linkedItem.getMetadata();
|
|
43
|
+
const result = {
|
|
44
|
+
[linkedMetadata.hashKeyName]: linkedKey[linkedMetadata.hashKeyName]
|
|
45
|
+
};
|
|
46
|
+
if (linkedMetadata.sortKeyName) {
|
|
47
|
+
result[linkedMetadata.sortKeyName] = linkedKey[linkedMetadata.sortKeyName];
|
|
48
|
+
}
|
|
49
|
+
return result;
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
const linkedItem = value;
|
|
54
|
+
const linkedKey = linkedItem.getKey();
|
|
55
|
+
const linkedMetadata = linkedItem.getMetadata();
|
|
56
|
+
const result = {
|
|
57
|
+
[linkedMetadata.hashKeyName]: linkedKey[linkedMetadata.hashKeyName]
|
|
58
|
+
};
|
|
59
|
+
if (linkedMetadata.sortKeyName) {
|
|
60
|
+
result[linkedMetadata.sortKeyName] = linkedKey[linkedMetadata.sortKeyName];
|
|
61
|
+
}
|
|
62
|
+
item[`__${link.propertyKey}ID`] = result;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
// Non-inline: ensure no stale __propertyID from a previous loadLinks() is persisted
|
|
68
|
+
delete item[`__${link.propertyKey}ID`];
|
|
69
|
+
}
|
|
70
|
+
// Remove the actual linked entity instances from being saved
|
|
71
|
+
delete item[link.propertyKey];
|
|
72
|
+
}
|
|
73
|
+
return {
|
|
74
|
+
...key,
|
|
75
|
+
...item
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
async insert() {
|
|
79
|
+
const metadata = this.getMetadata();
|
|
80
|
+
// Save linked entities first (cascade save)
|
|
81
|
+
const links = this.constructor.prototype[symbols_1.LINKS_METADATA] || [];
|
|
82
|
+
for (const link of links) {
|
|
83
|
+
const value = this[link.propertyKey];
|
|
84
|
+
if (value !== undefined && value !== null) {
|
|
85
|
+
if (Array.isArray(value)) {
|
|
86
|
+
// Save all linked entities in parallel
|
|
87
|
+
await Promise.all(value.map((linkedItem) => linkedItem.insert()));
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
// Save single linked entity
|
|
91
|
+
await value.insert();
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
const item = this.toItem();
|
|
96
|
+
await (0, client_1.getDocClient)().send(new lib_dynamodb_1.PutCommand({
|
|
97
|
+
TableName: metadata.tableName,
|
|
98
|
+
Item: item
|
|
99
|
+
}));
|
|
100
|
+
// Write separate link records for non-inline links.
|
|
101
|
+
// Record shape: { [hashKey]: '__link', [sortKey]: '{parentHK}#{parentSK}#{property}#{linkedHK}#{linkedSK}',
|
|
102
|
+
// linkedHashKey, linkedSortKey, isArray }
|
|
103
|
+
// Requires the parent entity table to have a sort key.
|
|
104
|
+
const nonInlineLinks = links.filter(link => {
|
|
105
|
+
const isInline = link.inline ?? false;
|
|
106
|
+
return !isInline;
|
|
107
|
+
});
|
|
108
|
+
if (nonInlineLinks.length > 0 && !metadata.sortKeyName) {
|
|
109
|
+
throw new Error(`Entity "${metadata.tableName}" has non-inline @Link properties ` +
|
|
110
|
+
`(${nonInlineLinks.map(l => l.propertyKey).join(', ')}) but no sort key. ` +
|
|
111
|
+
`Non-inline links require a sort key. Use @Link(..., { inline: true }) or add a sort key.`);
|
|
112
|
+
}
|
|
113
|
+
if (metadata.sortKeyName && nonInlineLinks.length > 0) {
|
|
114
|
+
const parentKey = this.getKey();
|
|
115
|
+
const parentHKVal = String(parentKey[metadata.hashKeyName]);
|
|
116
|
+
const parentSKVal = String(parentKey[metadata.sortKeyName]);
|
|
117
|
+
for (const link of nonInlineLinks) {
|
|
118
|
+
const value = this[link.propertyKey];
|
|
119
|
+
// Delete all existing link records for this property before writing new ones.
|
|
120
|
+
// Runs even when value is null/undefined so clearing a link removes stale records.
|
|
121
|
+
const skPrefix = `${(0, client_1.encodeLinkSegment)(parentHKVal)}#${(0, client_1.encodeLinkSegment)(parentSKVal)}#${(0, client_1.encodeLinkSegment)(link.propertyKey)}#`;
|
|
122
|
+
const existingItems = await (0, client_1.paginatedQuery)({
|
|
123
|
+
TableName: metadata.tableName,
|
|
124
|
+
KeyConditionExpression: '#pk = :pkval AND begins_with(#sk, :skprefix)',
|
|
125
|
+
ExpressionAttributeNames: {
|
|
126
|
+
'#pk': metadata.hashKeyName,
|
|
127
|
+
'#sk': metadata.sortKeyName
|
|
128
|
+
},
|
|
129
|
+
ExpressionAttributeValues: {
|
|
130
|
+
':pkval': '__link',
|
|
131
|
+
':skprefix': skPrefix
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
if (existingItems.length > 0) {
|
|
135
|
+
const linkedEntityMetadata = link.entityClass.__entityMetadata__;
|
|
136
|
+
await Promise.all(existingItems.map(async (rec) => {
|
|
137
|
+
await (0, client_1.getDocClient)().send(new lib_dynamodb_1.DeleteCommand({
|
|
138
|
+
TableName: metadata.tableName,
|
|
139
|
+
Key: {
|
|
140
|
+
[metadata.hashKeyName]: rec[metadata.hashKeyName],
|
|
141
|
+
[metadata.sortKeyName]: rec[metadata.sortKeyName]
|
|
142
|
+
}
|
|
143
|
+
}));
|
|
144
|
+
// Delete corresponding back-reference from child's table
|
|
145
|
+
if (linkedEntityMetadata.sortKeyName) {
|
|
146
|
+
await (0, client_1.getDocClient)().send(new lib_dynamodb_1.DeleteCommand({
|
|
147
|
+
TableName: linkedEntityMetadata.tableName,
|
|
148
|
+
Key: {
|
|
149
|
+
[linkedEntityMetadata.hashKeyName]: '__backlink',
|
|
150
|
+
[linkedEntityMetadata.sortKeyName]: `${(0, client_1.encodeLinkSegment)(rec.linkedHashKey)}#${(0, client_1.encodeLinkSegment)(rec.linkedSortKey)}#${(0, client_1.encodeLinkSegment)(metadata.tableName)}#${(0, client_1.encodeLinkSegment)(parentHKVal)}#${(0, client_1.encodeLinkSegment)(parentSKVal)}#${(0, client_1.encodeLinkSegment)(link.propertyKey)}`
|
|
151
|
+
}
|
|
152
|
+
}));
|
|
153
|
+
}
|
|
154
|
+
}));
|
|
155
|
+
}
|
|
156
|
+
if (value == null)
|
|
157
|
+
continue;
|
|
158
|
+
const linkedItems = link.isArray ? value : [value];
|
|
159
|
+
await Promise.all(linkedItems.map(async (linkedItem) => {
|
|
160
|
+
const linkedKey = linkedItem.getKey();
|
|
161
|
+
const linkedMeta = linkedItem.getMetadata();
|
|
162
|
+
const linkedHKVal = String(linkedKey[linkedMeta.hashKeyName]);
|
|
163
|
+
const linkedSKVal = linkedMeta.sortKeyName
|
|
164
|
+
? String(linkedKey[linkedMeta.sortKeyName])
|
|
165
|
+
: '';
|
|
166
|
+
const linkRecord = {
|
|
167
|
+
[metadata.hashKeyName]: '__link',
|
|
168
|
+
[metadata.sortKeyName]: `${(0, client_1.encodeLinkSegment)(parentHKVal)}#${(0, client_1.encodeLinkSegment)(parentSKVal)}#${(0, client_1.encodeLinkSegment)(link.propertyKey)}#${(0, client_1.encodeLinkSegment)(linkedHKVal)}#${(0, client_1.encodeLinkSegment)(linkedSKVal)}`,
|
|
169
|
+
linkedHashKey: linkedHKVal,
|
|
170
|
+
linkedSortKey: linkedSKVal,
|
|
171
|
+
isArray: link.isArray
|
|
172
|
+
};
|
|
173
|
+
await (0, client_1.getDocClient)().send(new lib_dynamodb_1.PutCommand({
|
|
174
|
+
TableName: metadata.tableName,
|
|
175
|
+
Item: linkRecord
|
|
176
|
+
}));
|
|
177
|
+
// Write back-reference in child's table so child deletions can clean up this forward link.
|
|
178
|
+
if (linkedMeta.sortKeyName) {
|
|
179
|
+
await (0, client_1.getDocClient)().send(new lib_dynamodb_1.PutCommand({
|
|
180
|
+
TableName: linkedMeta.tableName,
|
|
181
|
+
Item: {
|
|
182
|
+
[linkedMeta.hashKeyName]: '__backlink',
|
|
183
|
+
[linkedMeta.sortKeyName]: `${(0, client_1.encodeLinkSegment)(linkedHKVal)}#${(0, client_1.encodeLinkSegment)(linkedSKVal)}#${(0, client_1.encodeLinkSegment)(metadata.tableName)}#${(0, client_1.encodeLinkSegment)(parentHKVal)}#${(0, client_1.encodeLinkSegment)(parentSKVal)}#${(0, client_1.encodeLinkSegment)(link.propertyKey)}`,
|
|
184
|
+
parentTableName: metadata.tableName,
|
|
185
|
+
parentHashKeyName: metadata.hashKeyName,
|
|
186
|
+
parentSortKeyName: metadata.sortKeyName,
|
|
187
|
+
parentHashKey: parentHKVal,
|
|
188
|
+
parentSortKey: parentSKVal,
|
|
189
|
+
propertyKey: link.propertyKey
|
|
190
|
+
}
|
|
191
|
+
}));
|
|
192
|
+
}
|
|
193
|
+
}));
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
return this;
|
|
197
|
+
}
|
|
198
|
+
async update(attributes) {
|
|
199
|
+
const metadata = this.getMetadata();
|
|
200
|
+
const key = this.getKey();
|
|
201
|
+
const updateExpressions = [];
|
|
202
|
+
const expressionAttributeNames = {};
|
|
203
|
+
const expressionAttributeValues = {};
|
|
204
|
+
let index = 0;
|
|
205
|
+
for (const [attrName, attrValue] of Object.entries(attributes)) {
|
|
206
|
+
updateExpressions.push(`#attr${index} = :val${index}`);
|
|
207
|
+
expressionAttributeNames[`#attr${index}`] = attrName;
|
|
208
|
+
expressionAttributeValues[`:val${index}`] = attrValue;
|
|
209
|
+
index++;
|
|
210
|
+
}
|
|
211
|
+
updateExpressions.push(`#updatedAt = :updatedAt`);
|
|
212
|
+
expressionAttributeNames['#updatedAt'] = 'updatedAt';
|
|
213
|
+
expressionAttributeValues[':updatedAt'] = new Date().toISOString();
|
|
214
|
+
await (0, client_1.getDocClient)().send(new lib_dynamodb_1.UpdateCommand({
|
|
215
|
+
TableName: metadata.tableName,
|
|
216
|
+
Key: key,
|
|
217
|
+
UpdateExpression: `SET ${updateExpressions.join(', ')}`,
|
|
218
|
+
ExpressionAttributeNames: expressionAttributeNames,
|
|
219
|
+
ExpressionAttributeValues: expressionAttributeValues
|
|
220
|
+
}));
|
|
221
|
+
Object.assign(this, attributes);
|
|
222
|
+
return this;
|
|
223
|
+
}
|
|
224
|
+
async delete() {
|
|
225
|
+
const metadata = this.getMetadata();
|
|
226
|
+
const key = this.getKey();
|
|
227
|
+
// Clean up non-inline link records before deleting the parent to prevent orphans.
|
|
228
|
+
if (metadata.sortKeyName) {
|
|
229
|
+
const links = this.constructor.prototype[symbols_1.LINKS_METADATA] || [];
|
|
230
|
+
const parentHKVal = String(key[metadata.hashKeyName]);
|
|
231
|
+
const parentSKVal = String(key[metadata.sortKeyName]);
|
|
232
|
+
for (const link of links) {
|
|
233
|
+
const isInline = link.inline ?? false;
|
|
234
|
+
if (isInline)
|
|
235
|
+
continue;
|
|
236
|
+
const existingItems = await (0, client_1.paginatedQuery)({
|
|
237
|
+
TableName: metadata.tableName,
|
|
238
|
+
KeyConditionExpression: '#pk = :pkval AND begins_with(#sk, :skprefix)',
|
|
239
|
+
ExpressionAttributeNames: { '#pk': metadata.hashKeyName, '#sk': metadata.sortKeyName },
|
|
240
|
+
ExpressionAttributeValues: {
|
|
241
|
+
':pkval': '__link',
|
|
242
|
+
':skprefix': `${(0, client_1.encodeLinkSegment)(parentHKVal)}#${(0, client_1.encodeLinkSegment)(parentSKVal)}#${(0, client_1.encodeLinkSegment)(link.propertyKey)}#`
|
|
243
|
+
}
|
|
244
|
+
});
|
|
245
|
+
const linkedEntityMetadata = link.entityClass.__entityMetadata__;
|
|
246
|
+
await Promise.all(existingItems.map(async (rec) => {
|
|
247
|
+
await (0, client_1.getDocClient)().send(new lib_dynamodb_1.DeleteCommand({
|
|
248
|
+
TableName: metadata.tableName,
|
|
249
|
+
Key: {
|
|
250
|
+
[metadata.hashKeyName]: rec[metadata.hashKeyName],
|
|
251
|
+
[metadata.sortKeyName]: rec[metadata.sortKeyName]
|
|
252
|
+
}
|
|
253
|
+
}));
|
|
254
|
+
// Delete corresponding back-reference from child's table
|
|
255
|
+
if (linkedEntityMetadata.sortKeyName) {
|
|
256
|
+
await (0, client_1.getDocClient)().send(new lib_dynamodb_1.DeleteCommand({
|
|
257
|
+
TableName: linkedEntityMetadata.tableName,
|
|
258
|
+
Key: {
|
|
259
|
+
[linkedEntityMetadata.hashKeyName]: '__backlink',
|
|
260
|
+
[linkedEntityMetadata.sortKeyName]: `${(0, client_1.encodeLinkSegment)(rec.linkedHashKey)}#${(0, client_1.encodeLinkSegment)(rec.linkedSortKey)}#${(0, client_1.encodeLinkSegment)(metadata.tableName)}#${(0, client_1.encodeLinkSegment)(parentHKVal)}#${(0, client_1.encodeLinkSegment)(parentSKVal)}#${(0, client_1.encodeLinkSegment)(link.propertyKey)}`
|
|
261
|
+
}
|
|
262
|
+
}));
|
|
263
|
+
}
|
|
264
|
+
}));
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
// Clean up forward link records pointing TO this item (child-side cleanup via back-references).
|
|
268
|
+
if (metadata.sortKeyName) {
|
|
269
|
+
const itemHKVal = String(key[metadata.hashKeyName]);
|
|
270
|
+
const itemSKVal = String(key[metadata.sortKeyName]);
|
|
271
|
+
const backlinkPrefix = `${(0, client_1.encodeLinkSegment)(itemHKVal)}#${(0, client_1.encodeLinkSegment)(itemSKVal)}#`;
|
|
272
|
+
const backlinks = await (0, client_1.paginatedQuery)({
|
|
273
|
+
TableName: metadata.tableName,
|
|
274
|
+
KeyConditionExpression: '#pk = :pkval AND begins_with(#sk, :skprefix)',
|
|
275
|
+
ExpressionAttributeNames: { '#pk': metadata.hashKeyName, '#sk': metadata.sortKeyName },
|
|
276
|
+
ExpressionAttributeValues: {
|
|
277
|
+
':pkval': '__backlink',
|
|
278
|
+
':skprefix': backlinkPrefix
|
|
279
|
+
}
|
|
280
|
+
});
|
|
281
|
+
await Promise.all(backlinks.map(async (backlink) => {
|
|
282
|
+
// Delete the forward link record in the parent's table
|
|
283
|
+
const fwdSKVal = `${(0, client_1.encodeLinkSegment)(backlink.parentHashKey)}#${(0, client_1.encodeLinkSegment)(backlink.parentSortKey)}#${(0, client_1.encodeLinkSegment)(backlink.propertyKey)}#${(0, client_1.encodeLinkSegment)(itemHKVal)}#${(0, client_1.encodeLinkSegment)(itemSKVal)}`;
|
|
284
|
+
await (0, client_1.getDocClient)().send(new lib_dynamodb_1.DeleteCommand({
|
|
285
|
+
TableName: backlink.parentTableName,
|
|
286
|
+
Key: {
|
|
287
|
+
[backlink.parentHashKeyName]: '__link',
|
|
288
|
+
[backlink.parentSortKeyName]: fwdSKVal
|
|
289
|
+
}
|
|
290
|
+
}));
|
|
291
|
+
// Delete the back-reference record itself
|
|
292
|
+
await (0, client_1.getDocClient)().send(new lib_dynamodb_1.DeleteCommand({
|
|
293
|
+
TableName: metadata.tableName,
|
|
294
|
+
Key: {
|
|
295
|
+
[metadata.hashKeyName]: backlink[metadata.hashKeyName],
|
|
296
|
+
[metadata.sortKeyName]: backlink[metadata.sortKeyName]
|
|
297
|
+
}
|
|
298
|
+
}));
|
|
299
|
+
}));
|
|
300
|
+
}
|
|
301
|
+
await (0, client_1.getDocClient)().send(new lib_dynamodb_1.DeleteCommand({
|
|
302
|
+
TableName: metadata.tableName,
|
|
303
|
+
Key: key
|
|
304
|
+
}));
|
|
305
|
+
}
|
|
306
|
+
async loadLinks() {
|
|
307
|
+
const parentMetadata = this.getMetadata();
|
|
308
|
+
const parentKey = this.getKey();
|
|
309
|
+
const links = this.constructor.prototype[symbols_1.LINKS_METADATA] || [];
|
|
310
|
+
for (const link of links) {
|
|
311
|
+
if (!link.entityClass)
|
|
312
|
+
continue;
|
|
313
|
+
const EntityClass = link.entityClass;
|
|
314
|
+
const entityMetadata = EntityClass.__entityMetadata__;
|
|
315
|
+
const fromDbModelMapper = EntityClass[symbols_1.FROM_DB_MODEL_METADATA];
|
|
316
|
+
const instantiate = (raw) => {
|
|
317
|
+
let itemData = raw;
|
|
318
|
+
if (fromDbModelMapper) {
|
|
319
|
+
itemData = { ...raw, ...EntityClass[fromDbModelMapper](raw) };
|
|
320
|
+
}
|
|
321
|
+
const instance = new EntityClass();
|
|
322
|
+
Object.assign(instance, itemData);
|
|
323
|
+
return instance;
|
|
324
|
+
};
|
|
325
|
+
const idField = `__${link.propertyKey}ID`;
|
|
326
|
+
const idValue = this[idField];
|
|
327
|
+
if (idValue != null) {
|
|
328
|
+
// ── Inline path: IDs embedded on the parent item ──
|
|
329
|
+
if (Array.isArray(idValue)) {
|
|
330
|
+
const loaded = await Promise.all(idValue.map(async (keyObj) => {
|
|
331
|
+
const result = await (0, client_1.getDocClient)().send(new lib_dynamodb_1.GetCommand({
|
|
332
|
+
TableName: entityMetadata.tableName,
|
|
333
|
+
Key: keyObj
|
|
334
|
+
}));
|
|
335
|
+
return result.Item ? instantiate(result.Item) : null;
|
|
336
|
+
}));
|
|
337
|
+
this[link.propertyKey] = loaded.filter(e => e !== null);
|
|
338
|
+
}
|
|
339
|
+
else {
|
|
340
|
+
const result = await (0, client_1.getDocClient)().send(new lib_dynamodb_1.GetCommand({
|
|
341
|
+
TableName: entityMetadata.tableName,
|
|
342
|
+
Key: idValue
|
|
343
|
+
}));
|
|
344
|
+
if (result.Item) {
|
|
345
|
+
this[link.propertyKey] = instantiate(result.Item);
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
else if (parentMetadata.sortKeyName) {
|
|
350
|
+
// ── Non-inline path: look up separate link records, then fetch each entity ──
|
|
351
|
+
const parentHKVal = String(parentKey[parentMetadata.hashKeyName]);
|
|
352
|
+
const parentSKVal = String(parentKey[parentMetadata.sortKeyName]);
|
|
353
|
+
const skPrefix = `${(0, client_1.encodeLinkSegment)(parentHKVal)}#${(0, client_1.encodeLinkSegment)(parentSKVal)}#${(0, client_1.encodeLinkSegment)(link.propertyKey)}#`;
|
|
354
|
+
const linkItems = await (0, client_1.paginatedQuery)({
|
|
355
|
+
TableName: parentMetadata.tableName,
|
|
356
|
+
KeyConditionExpression: '#pk = :pkval AND begins_with(#sk, :skprefix)',
|
|
357
|
+
ExpressionAttributeNames: {
|
|
358
|
+
'#pk': parentMetadata.hashKeyName,
|
|
359
|
+
'#sk': parentMetadata.sortKeyName
|
|
360
|
+
},
|
|
361
|
+
ExpressionAttributeValues: {
|
|
362
|
+
':pkval': '__link',
|
|
363
|
+
':skprefix': skPrefix
|
|
364
|
+
}
|
|
365
|
+
});
|
|
366
|
+
if (linkItems.length === 0) {
|
|
367
|
+
// For array links with no records, set to empty array instead of leaving undefined
|
|
368
|
+
if (link.isArray) {
|
|
369
|
+
this[link.propertyKey] = [];
|
|
370
|
+
}
|
|
371
|
+
continue;
|
|
372
|
+
}
|
|
373
|
+
const loaded = await Promise.all(linkItems.map(async (linkRecord) => {
|
|
374
|
+
const linkedKey = {
|
|
375
|
+
[entityMetadata.hashKeyName]: linkRecord.linkedHashKey
|
|
376
|
+
};
|
|
377
|
+
if (entityMetadata.sortKeyName) {
|
|
378
|
+
linkedKey[entityMetadata.sortKeyName] = linkRecord.linkedSortKey;
|
|
379
|
+
}
|
|
380
|
+
const result = await (0, client_1.getDocClient)().send(new lib_dynamodb_1.GetCommand({
|
|
381
|
+
TableName: entityMetadata.tableName,
|
|
382
|
+
Key: linkedKey
|
|
383
|
+
}));
|
|
384
|
+
return result.Item ? instantiate(result.Item) : null;
|
|
385
|
+
}));
|
|
386
|
+
const filtered = loaded.filter(e => e !== null);
|
|
387
|
+
// Use stored link.isArray (from decoration time) to reconstruct the original shape
|
|
388
|
+
this[link.propertyKey] = link.isArray ? filtered : (filtered[0] ?? null);
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
return this;
|
|
392
|
+
}
|
|
393
|
+
static configure(dynamoDBClient, documentClientConfig) {
|
|
394
|
+
(0, client_1.configureClient)(dynamoDBClient, documentClientConfig);
|
|
395
|
+
}
|
|
396
|
+
static async get(sortKeyValue) {
|
|
397
|
+
const metadata = this.__entityMetadata__;
|
|
398
|
+
const tempInstance = new this();
|
|
399
|
+
const hashKeyValue = metadata.hashKeyGetter ? tempInstance[metadata.hashKeyGetter] : undefined;
|
|
400
|
+
const key = {
|
|
401
|
+
[metadata.hashKeyName]: hashKeyValue
|
|
402
|
+
};
|
|
403
|
+
if (metadata.sortKeyName && sortKeyValue !== undefined) {
|
|
404
|
+
key[metadata.sortKeyName] = sortKeyValue;
|
|
405
|
+
}
|
|
406
|
+
const result = await (0, client_1.getDocClient)().send(new lib_dynamodb_1.GetCommand({
|
|
407
|
+
TableName: metadata.tableName,
|
|
408
|
+
Key: key
|
|
409
|
+
}));
|
|
410
|
+
if (!result.Item) {
|
|
411
|
+
return null;
|
|
412
|
+
}
|
|
413
|
+
const fromDbModelMapper = this[symbols_1.FROM_DB_MODEL_METADATA];
|
|
414
|
+
let itemData = result.Item;
|
|
415
|
+
if (fromDbModelMapper) {
|
|
416
|
+
const mappedData = this[fromDbModelMapper](result.Item);
|
|
417
|
+
itemData = { ...result.Item, ...mappedData };
|
|
418
|
+
}
|
|
419
|
+
const instance = new this();
|
|
420
|
+
Object.assign(instance, itemData);
|
|
421
|
+
return instance;
|
|
422
|
+
}
|
|
423
|
+
static async query(options) {
|
|
424
|
+
const metadata = this.__entityMetadata__;
|
|
425
|
+
const tempInstance = new this();
|
|
426
|
+
const hashKeyValue = metadata.hashKeyGetter ? tempInstance[metadata.hashKeyGetter] : undefined;
|
|
427
|
+
let keyConditionExpression = `#hk = :hkval`;
|
|
428
|
+
const expressionAttributeNames = {
|
|
429
|
+
'#hk': metadata.hashKeyName
|
|
430
|
+
};
|
|
431
|
+
const expressionAttributeValues = {
|
|
432
|
+
':hkval': hashKeyValue
|
|
433
|
+
};
|
|
434
|
+
if (options?.sortKeyCondition && metadata.sortKeyName) {
|
|
435
|
+
const sk = metadata.sortKeyName;
|
|
436
|
+
expressionAttributeNames['#sk'] = sk;
|
|
437
|
+
const condition = options.sortKeyCondition;
|
|
438
|
+
switch (condition.type) {
|
|
439
|
+
case 'equals':
|
|
440
|
+
keyConditionExpression += ` AND #sk = :skval`;
|
|
441
|
+
expressionAttributeValues[':skval'] = condition.value;
|
|
442
|
+
break;
|
|
443
|
+
case 'lessThan':
|
|
444
|
+
keyConditionExpression += ` AND #sk < :skval`;
|
|
445
|
+
expressionAttributeValues[':skval'] = condition.value;
|
|
446
|
+
break;
|
|
447
|
+
case 'lessThanOrEqual':
|
|
448
|
+
keyConditionExpression += ` AND #sk <= :skval`;
|
|
449
|
+
expressionAttributeValues[':skval'] = condition.value;
|
|
450
|
+
break;
|
|
451
|
+
case 'greaterThan':
|
|
452
|
+
keyConditionExpression += ` AND #sk > :skval`;
|
|
453
|
+
expressionAttributeValues[':skval'] = condition.value;
|
|
454
|
+
break;
|
|
455
|
+
case 'greaterThanOrEqual':
|
|
456
|
+
keyConditionExpression += ` AND #sk >= :skval`;
|
|
457
|
+
expressionAttributeValues[':skval'] = condition.value;
|
|
458
|
+
break;
|
|
459
|
+
case 'between':
|
|
460
|
+
keyConditionExpression += ` AND #sk BETWEEN :skstart AND :skend`;
|
|
461
|
+
expressionAttributeValues[':skstart'] = condition.start;
|
|
462
|
+
expressionAttributeValues[':skend'] = condition.end;
|
|
463
|
+
break;
|
|
464
|
+
case 'startsWith':
|
|
465
|
+
keyConditionExpression += ` AND begins_with(#sk, :skval)`;
|
|
466
|
+
expressionAttributeValues[':skval'] = condition.value;
|
|
467
|
+
break;
|
|
468
|
+
}
|
|
469
|
+
}
|
|
470
|
+
const queryParams = {
|
|
471
|
+
TableName: metadata.tableName,
|
|
472
|
+
KeyConditionExpression: keyConditionExpression,
|
|
473
|
+
ExpressionAttributeNames: expressionAttributeNames,
|
|
474
|
+
ExpressionAttributeValues: expressionAttributeValues
|
|
475
|
+
};
|
|
476
|
+
if (options?.limit) {
|
|
477
|
+
queryParams.Limit = options.limit;
|
|
478
|
+
}
|
|
479
|
+
if (options?.scanIndexForward !== undefined) {
|
|
480
|
+
queryParams.ScanIndexForward = options.scanIndexForward;
|
|
481
|
+
}
|
|
482
|
+
const result = await (0, client_1.getDocClient)().send(new lib_dynamodb_1.QueryCommand(queryParams));
|
|
483
|
+
if (!result.Items || result.Items.length === 0) {
|
|
484
|
+
return [];
|
|
485
|
+
}
|
|
486
|
+
const fromDbModelMapper = this[symbols_1.FROM_DB_MODEL_METADATA];
|
|
487
|
+
return result.Items.map(item => {
|
|
488
|
+
let itemData = item;
|
|
489
|
+
if (fromDbModelMapper) {
|
|
490
|
+
const mappedData = this[fromDbModelMapper](item);
|
|
491
|
+
itemData = { ...item, ...mappedData };
|
|
492
|
+
}
|
|
493
|
+
const instance = new this();
|
|
494
|
+
Object.assign(instance, itemData);
|
|
495
|
+
return instance;
|
|
496
|
+
});
|
|
497
|
+
}
|
|
498
|
+
static async queryAll(limit) {
|
|
499
|
+
return this.query({ limit });
|
|
500
|
+
}
|
|
501
|
+
static async queryStartsWith(sortKeyPrefix, limit) {
|
|
502
|
+
return this.query({
|
|
503
|
+
sortKeyCondition: { type: 'startsWith', value: sortKeyPrefix },
|
|
504
|
+
limit
|
|
505
|
+
});
|
|
506
|
+
}
|
|
507
|
+
static async queryBetween(start, end, limit) {
|
|
508
|
+
return this.query({
|
|
509
|
+
sortKeyCondition: { type: 'between', start, end },
|
|
510
|
+
limit
|
|
511
|
+
});
|
|
512
|
+
}
|
|
513
|
+
static async queryGreaterThan(sortKeyValue, limit) {
|
|
514
|
+
return this.query({
|
|
515
|
+
sortKeyCondition: { type: 'greaterThan', value: sortKeyValue },
|
|
516
|
+
limit
|
|
517
|
+
});
|
|
518
|
+
}
|
|
519
|
+
static async queryLessThan(sortKeyValue, limit) {
|
|
520
|
+
return this.query({
|
|
521
|
+
sortKeyCondition: { type: 'lessThan', value: sortKeyValue },
|
|
522
|
+
limit
|
|
523
|
+
});
|
|
524
|
+
}
|
|
525
|
+
static async queryEquals(sortKeyValue, limit) {
|
|
526
|
+
return this.query({
|
|
527
|
+
sortKeyCondition: { type: 'equals', value: sortKeyValue },
|
|
528
|
+
limit
|
|
529
|
+
});
|
|
530
|
+
}
|
|
531
|
+
}
|
|
532
|
+
exports.BaseEntity = BaseEntity;
|
|
533
|
+
//# sourceMappingURL=BaseEntity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseEntity.js","sourceRoot":"","sources":["../BaseEntity.ts"],"names":[],"mappings":"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"}
|
package/dist/client.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { DynamoDBClient } from '@aws-sdk/client-dynamodb';
|
|
2
|
+
import { DynamoDBDocumentClient } from '@aws-sdk/lib-dynamodb';
|
|
3
|
+
export declare function configureClient(dynamoDBClient: DynamoDBClient, documentClientConfig?: any): void;
|
|
4
|
+
export declare function isClientConfigured(): boolean;
|
|
5
|
+
export declare function getDocClient(): DynamoDBDocumentClient;
|
|
6
|
+
export declare function paginatedQuery(params: any): Promise<any[]>;
|
|
7
|
+
export declare function encodeLinkSegment(v: string): string;
|
|
8
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAgB,MAAM,uBAAuB,CAAC;AAI7E,wBAAgB,eAAe,CAAC,cAAc,EAAE,cAAc,EAAE,oBAAoB,CAAC,EAAE,GAAG,GAAG,IAAI,CAEhG;AAED,wBAAgB,kBAAkB,IAAI,OAAO,CAE5C;AAED,wBAAgB,YAAY,IAAI,sBAAsB,CAOrD;AAGD,wBAAsB,cAAc,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAYhE;AAGD,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAEnD"}
|
package/dist/client.js
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.configureClient = configureClient;
|
|
4
|
+
exports.isClientConfigured = isClientConfigured;
|
|
5
|
+
exports.getDocClient = getDocClient;
|
|
6
|
+
exports.paginatedQuery = paginatedQuery;
|
|
7
|
+
exports.encodeLinkSegment = encodeLinkSegment;
|
|
8
|
+
const lib_dynamodb_1 = require("@aws-sdk/lib-dynamodb");
|
|
9
|
+
let _docClient;
|
|
10
|
+
function configureClient(dynamoDBClient, documentClientConfig) {
|
|
11
|
+
_docClient = lib_dynamodb_1.DynamoDBDocumentClient.from(dynamoDBClient, documentClientConfig);
|
|
12
|
+
}
|
|
13
|
+
function isClientConfigured() {
|
|
14
|
+
return _docClient !== undefined;
|
|
15
|
+
}
|
|
16
|
+
function getDocClient() {
|
|
17
|
+
if (!_docClient) {
|
|
18
|
+
throw new Error('DynamoDB client not configured. Call BaseEntity.configure(new DynamoDBClient({...})) before using the ORM.');
|
|
19
|
+
}
|
|
20
|
+
return _docClient;
|
|
21
|
+
}
|
|
22
|
+
// Exhaustively pages through a DynamoDB query, returning all matching items.
|
|
23
|
+
async function paginatedQuery(params) {
|
|
24
|
+
const items = [];
|
|
25
|
+
let lastKey = undefined;
|
|
26
|
+
do {
|
|
27
|
+
const result = await getDocClient().send(new lib_dynamodb_1.QueryCommand({
|
|
28
|
+
...params,
|
|
29
|
+
...(lastKey ? { ExclusiveStartKey: lastKey } : {})
|
|
30
|
+
}));
|
|
31
|
+
if (result.Items)
|
|
32
|
+
items.push(...result.Items);
|
|
33
|
+
lastKey = result.LastEvaluatedKey;
|
|
34
|
+
} while (lastKey);
|
|
35
|
+
return items;
|
|
36
|
+
}
|
|
37
|
+
// Escapes '#' in composite sort key segments to avoid prefix ambiguity.
|
|
38
|
+
function encodeLinkSegment(v) {
|
|
39
|
+
return v.replace(/#/g, '%23');
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../client.ts"],"names":[],"mappings":";;AAKA,0CAEC;AAED,gDAEC;AAED,oCAOC;AAGD,wCAYC;AAGD,8CAEC;AAvCD,wDAA6E;AAE7E,IAAI,UAA8C,CAAC;AAEnD,SAAgB,eAAe,CAAC,cAA8B,EAAE,oBAA0B;IACtF,UAAU,GAAG,qCAAsB,CAAC,IAAI,CAAC,cAAc,EAAE,oBAAoB,CAAC,CAAC;AACnF,CAAC;AAED,SAAgB,kBAAkB;IAC9B,OAAO,UAAU,KAAK,SAAS,CAAC;AACpC,CAAC;AAED,SAAgB,YAAY;IACxB,IAAI,CAAC,UAAU,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CACX,4GAA4G,CAC/G,CAAC;IACN,CAAC;IACD,OAAO,UAAU,CAAC;AACtB,CAAC;AAED,6EAA6E;AACtE,KAAK,UAAU,cAAc,CAAC,MAAW;IAC5C,MAAM,KAAK,GAAU,EAAE,CAAC;IACxB,IAAI,OAAO,GAAoC,SAAS,CAAC;IACzD,GAAG,CAAC;QACA,MAAM,MAAM,GAA8D,MAAM,YAAY,EAAE,CAAC,IAAI,CAAC,IAAI,2BAAY,CAAC;YACjH,GAAG,MAAM;YACT,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACrD,CAAC,CAAC,CAAC;QACJ,IAAI,MAAM,CAAC,KAAK;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC9C,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC;IACtC,CAAC,QAAQ,OAAO,EAAE;IAClB,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,wEAAwE;AACxE,SAAgB,iBAAiB,CAAC,CAAS;IACvC,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAClC,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { DynamoDBClient } from '@aws-sdk/client-dynamodb';
|
|
2
|
+
import { BaseEntity } from './BaseEntity';
|
|
3
|
+
export declare function Entity(tableName: string, hashKeyName: string, sortKeyName?: string, dbClient?: DynamoDBClient): <T extends new (...args: any[]) => BaseEntity>(constructor: T) => T;
|
|
4
|
+
export declare function HashKeyValue(target: object, propertyKey: string, descriptor?: PropertyDescriptor): PropertyDescriptor | undefined;
|
|
5
|
+
export declare function SortKeyValue(target: object, propertyKey: string, descriptor?: PropertyDescriptor): PropertyDescriptor | undefined;
|
|
6
|
+
export declare function LinkObject(entityClass: new (...args: any[]) => BaseEntity, options?: {
|
|
7
|
+
inline?: boolean;
|
|
8
|
+
}): (target: object, propertyKey: string) => void;
|
|
9
|
+
export declare function LinkArray(entityClass: new (...args: any[]) => BaseEntity, options?: {
|
|
10
|
+
inline?: boolean;
|
|
11
|
+
}): (target: object, propertyKey: string) => void;
|
|
12
|
+
export declare function ToDbModel(target: any, propertyKey: string, descriptor?: PropertyDescriptor): PropertyDescriptor | undefined;
|
|
13
|
+
export declare function FromDbModel(target: any, propertyKey: string, descriptor?: PropertyDescriptor): PropertyDescriptor | undefined;
|
|
14
|
+
//# sourceMappingURL=decorators.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../decorators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG1C,wBAAgB,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,cAAc,IACzF,CAAC,SAAS,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,UAAU,EAAE,aAAa,CAAC,KA2BnD,CAAC,CAE9B;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,kBAAkB,kCAGhG;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,kBAAkB,kCAGhG;AAED,wBAAgB,UAAU,CAAC,WAAW,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,UAAU,EAAE,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,IACrF,QAAQ,MAAM,EAAE,aAAa,MAAM,UAWvD;AAED,wBAAgB,SAAS,CAAC,WAAW,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,UAAU,EAAE,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,IACpF,QAAQ,MAAM,EAAE,aAAa,MAAM,UAWvD;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,kBAAkB,kCAG1F;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,kBAAkB,kCAG5F"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Entity = Entity;
|
|
4
|
+
exports.HashKeyValue = HashKeyValue;
|
|
5
|
+
exports.SortKeyValue = SortKeyValue;
|
|
6
|
+
exports.LinkObject = LinkObject;
|
|
7
|
+
exports.LinkArray = LinkArray;
|
|
8
|
+
exports.ToDbModel = ToDbModel;
|
|
9
|
+
exports.FromDbModel = FromDbModel;
|
|
10
|
+
const symbols_1 = require("./symbols");
|
|
11
|
+
const client_1 = require("./client");
|
|
12
|
+
function Entity(tableName, hashKeyName, sortKeyName, dbClient) {
|
|
13
|
+
return function (constructor) {
|
|
14
|
+
// Configure DynamoDB client from the decorator only when explicitly provided.
|
|
15
|
+
if (!(0, client_1.isClientConfigured)() && dbClient) {
|
|
16
|
+
(0, client_1.configureClient)(dbClient);
|
|
17
|
+
}
|
|
18
|
+
// Guard against using the reserved '__link' / '__backlink' hash key values.
|
|
19
|
+
const hkGetter = constructor.prototype[symbols_1.HASH_KEY_METADATA];
|
|
20
|
+
if (hkGetter) {
|
|
21
|
+
const tempInstance = new constructor();
|
|
22
|
+
if (tempInstance[hkGetter] === '__link' || tempInstance[hkGetter] === '__backlink') {
|
|
23
|
+
throw new Error(`Entity "${constructor.name}" uses reserved hash key value "${tempInstance[hkGetter]}". ` +
|
|
24
|
+
`This value is reserved for internal ORM records.`);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
// Store metadata on the constructor
|
|
28
|
+
constructor.__entityMetadata__ = {
|
|
29
|
+
tableName: tableName || constructor.name,
|
|
30
|
+
hashKeyName,
|
|
31
|
+
sortKeyName,
|
|
32
|
+
hashKeyGetter: constructor.prototype[symbols_1.HASH_KEY_METADATA],
|
|
33
|
+
sortKeyGetter: constructor.prototype[symbols_1.SORT_KEY_METADATA]
|
|
34
|
+
};
|
|
35
|
+
return constructor;
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
function HashKeyValue(target, propertyKey, descriptor) {
|
|
39
|
+
target[symbols_1.HASH_KEY_METADATA] = propertyKey;
|
|
40
|
+
return descriptor;
|
|
41
|
+
}
|
|
42
|
+
function SortKeyValue(target, propertyKey, descriptor) {
|
|
43
|
+
target[symbols_1.SORT_KEY_METADATA] = propertyKey;
|
|
44
|
+
return descriptor;
|
|
45
|
+
}
|
|
46
|
+
function LinkObject(entityClass, options) {
|
|
47
|
+
return function (target, propertyKey) {
|
|
48
|
+
if (!target[symbols_1.LINKS_METADATA]) {
|
|
49
|
+
target[symbols_1.LINKS_METADATA] = [];
|
|
50
|
+
}
|
|
51
|
+
target[symbols_1.LINKS_METADATA].push({
|
|
52
|
+
propertyKey,
|
|
53
|
+
entityClass,
|
|
54
|
+
inline: options?.inline,
|
|
55
|
+
isArray: false
|
|
56
|
+
});
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
function LinkArray(entityClass, options) {
|
|
60
|
+
return function (target, propertyKey) {
|
|
61
|
+
if (!target[symbols_1.LINKS_METADATA]) {
|
|
62
|
+
target[symbols_1.LINKS_METADATA] = [];
|
|
63
|
+
}
|
|
64
|
+
target[symbols_1.LINKS_METADATA].push({
|
|
65
|
+
propertyKey,
|
|
66
|
+
entityClass,
|
|
67
|
+
inline: options?.inline,
|
|
68
|
+
isArray: true
|
|
69
|
+
});
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
function ToDbModel(target, propertyKey, descriptor) {
|
|
73
|
+
target[symbols_1.TO_DB_MODEL_METADATA] = propertyKey;
|
|
74
|
+
return descriptor;
|
|
75
|
+
}
|
|
76
|
+
function FromDbModel(target, propertyKey, descriptor) {
|
|
77
|
+
target[symbols_1.FROM_DB_MODEL_METADATA] = propertyKey;
|
|
78
|
+
return descriptor;
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=decorators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decorators.js","sourceRoot":"","sources":["../decorators.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dynamoDbORM.d.ts","sourceRoot":"","sources":["../dynamoDbORM.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EACH,MAAM,EACN,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,SAAS,EACT,SAAS,EACT,WAAW,GACd,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FromDbModel = exports.ToDbModel = exports.LinkArray = exports.LinkObject = exports.SortKeyValue = exports.HashKeyValue = exports.Entity = exports.BaseEntity = void 0;
|
|
4
|
+
var BaseEntity_1 = require("./BaseEntity");
|
|
5
|
+
Object.defineProperty(exports, "BaseEntity", { enumerable: true, get: function () { return BaseEntity_1.BaseEntity; } });
|
|
6
|
+
var decorators_1 = require("./decorators");
|
|
7
|
+
Object.defineProperty(exports, "Entity", { enumerable: true, get: function () { return decorators_1.Entity; } });
|
|
8
|
+
Object.defineProperty(exports, "HashKeyValue", { enumerable: true, get: function () { return decorators_1.HashKeyValue; } });
|
|
9
|
+
Object.defineProperty(exports, "SortKeyValue", { enumerable: true, get: function () { return decorators_1.SortKeyValue; } });
|
|
10
|
+
Object.defineProperty(exports, "LinkObject", { enumerable: true, get: function () { return decorators_1.LinkObject; } });
|
|
11
|
+
Object.defineProperty(exports, "LinkArray", { enumerable: true, get: function () { return decorators_1.LinkArray; } });
|
|
12
|
+
Object.defineProperty(exports, "ToDbModel", { enumerable: true, get: function () { return decorators_1.ToDbModel; } });
|
|
13
|
+
Object.defineProperty(exports, "FromDbModel", { enumerable: true, get: function () { return decorators_1.FromDbModel; } });
|
|
14
|
+
//# sourceMappingURL=dynamoDbORM.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dynamoDbORM.js","sourceRoot":"","sources":["../dynamoDbORM.ts"],"names":[],"mappings":";;;AAAA,2CAA0C;AAAjC,wGAAA,UAAU,OAAA;AACnB,2CAQsB;AAPlB,oGAAA,MAAM,OAAA;AACN,0GAAA,YAAY,OAAA;AACZ,0GAAA,YAAY,OAAA;AACZ,wGAAA,UAAU,OAAA;AACV,uGAAA,SAAS,OAAA;AACT,uGAAA,SAAS,OAAA;AACT,yGAAA,WAAW,OAAA"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./dynamoDbORM"), exports);
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare const HASH_KEY_METADATA: unique symbol;
|
|
2
|
+
export declare const SORT_KEY_METADATA: unique symbol;
|
|
3
|
+
export declare const LINKS_METADATA: unique symbol;
|
|
4
|
+
export declare const TO_DB_MODEL_METADATA: unique symbol;
|
|
5
|
+
export declare const FROM_DB_MODEL_METADATA: unique symbol;
|
|
6
|
+
//# sourceMappingURL=symbols.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"symbols.d.ts","sourceRoot":"","sources":["../symbols.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,eAAoB,CAAC;AACnD,eAAO,MAAM,iBAAiB,eAAoB,CAAC;AACnD,eAAO,MAAM,cAAc,eAAkB,CAAC;AAC9C,eAAO,MAAM,oBAAoB,eAAsB,CAAC;AACxD,eAAO,MAAM,sBAAsB,eAAwB,CAAC"}
|
package/dist/symbols.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FROM_DB_MODEL_METADATA = exports.TO_DB_MODEL_METADATA = exports.LINKS_METADATA = exports.SORT_KEY_METADATA = exports.HASH_KEY_METADATA = void 0;
|
|
4
|
+
exports.HASH_KEY_METADATA = Symbol('hashKey');
|
|
5
|
+
exports.SORT_KEY_METADATA = Symbol('sortKey');
|
|
6
|
+
exports.LINKS_METADATA = Symbol('links');
|
|
7
|
+
exports.TO_DB_MODEL_METADATA = Symbol('toDbModel');
|
|
8
|
+
exports.FROM_DB_MODEL_METADATA = Symbol('fromDbModel');
|
|
9
|
+
//# sourceMappingURL=symbols.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"symbols.js","sourceRoot":"","sources":["../symbols.ts"],"names":[],"mappings":";;;AAAa,QAAA,iBAAiB,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;AACtC,QAAA,iBAAiB,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;AACtC,QAAA,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;AACjC,QAAA,oBAAoB,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AAC3C,QAAA,sBAAsB,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { BaseEntity } from './BaseEntity';
|
|
2
|
+
export interface LinkMetadata {
|
|
3
|
+
propertyKey: string;
|
|
4
|
+
entityClass: new (...args: any[]) => BaseEntity;
|
|
5
|
+
inline?: boolean;
|
|
6
|
+
isArray: boolean;
|
|
7
|
+
}
|
|
8
|
+
export type SortKeyCondition = {
|
|
9
|
+
type: 'equals';
|
|
10
|
+
value: any;
|
|
11
|
+
} | {
|
|
12
|
+
type: 'lessThan';
|
|
13
|
+
value: any;
|
|
14
|
+
} | {
|
|
15
|
+
type: 'lessThanOrEqual';
|
|
16
|
+
value: any;
|
|
17
|
+
} | {
|
|
18
|
+
type: 'greaterThan';
|
|
19
|
+
value: any;
|
|
20
|
+
} | {
|
|
21
|
+
type: 'greaterThanOrEqual';
|
|
22
|
+
value: any;
|
|
23
|
+
} | {
|
|
24
|
+
type: 'between';
|
|
25
|
+
start: any;
|
|
26
|
+
end: any;
|
|
27
|
+
} | {
|
|
28
|
+
type: 'startsWith';
|
|
29
|
+
value: string;
|
|
30
|
+
};
|
|
31
|
+
export interface QueryOptions {
|
|
32
|
+
sortKeyCondition?: SortKeyCondition;
|
|
33
|
+
limit?: number;
|
|
34
|
+
scanIndexForward?: boolean;
|
|
35
|
+
}
|
|
36
|
+
export interface EntityMetadata {
|
|
37
|
+
tableName?: string;
|
|
38
|
+
hashKeyName: string;
|
|
39
|
+
sortKeyName?: string;
|
|
40
|
+
hashKeyGetter?: string;
|
|
41
|
+
sortKeyGetter?: string;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../types.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,WAAW,YAAY;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,UAAU,CAAC;IAChD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,MAAM,gBAAgB,GACtB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,GAAG,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,GAAG,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,KAAK,EAAE,GAAG,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,GAAG,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,oBAAoB,CAAC;IAAC,KAAK,EAAE,GAAG,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,GAAG,CAAC;IAAC,GAAG,EAAE,GAAG,CAAA;CAAE,GACzC;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAE5C,MAAM,WAAW,YAAY;IACzB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,MAAM,WAAW,cAAc;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../types.ts"],"names":[],"mappings":""}
|
package/package.json
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "orm-dynamodb",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Lightweight TypeScript decorators for modeling DynamoDB items as classes",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"types": "./dist/index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"default": "./dist/index.js"
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
"files": [
|
|
14
|
+
"dist",
|
|
15
|
+
"README.md"
|
|
16
|
+
],
|
|
17
|
+
"sideEffects": false,
|
|
18
|
+
"scripts": {
|
|
19
|
+
"clean": "rm -rf dist",
|
|
20
|
+
"build": "npm run clean && tsc -p tsconfig.build.json",
|
|
21
|
+
"dev": "tsx examples.ts",
|
|
22
|
+
"test": "vitest run",
|
|
23
|
+
"test:watch": "vitest",
|
|
24
|
+
"test:ui": "vitest --ui",
|
|
25
|
+
"prepack": "npm run build",
|
|
26
|
+
"pack:check": "npm pack --dry-run"
|
|
27
|
+
},
|
|
28
|
+
"keywords": [
|
|
29
|
+
"dynamodb",
|
|
30
|
+
"orm-dynamodb",
|
|
31
|
+
"decorators",
|
|
32
|
+
"orm",
|
|
33
|
+
"typescript"
|
|
34
|
+
],
|
|
35
|
+
"license": "ISC",
|
|
36
|
+
"dependencies": {
|
|
37
|
+
"@aws-sdk/client-dynamodb": "^3.0.0",
|
|
38
|
+
"@aws-sdk/lib-dynamodb": "^3.0.0",
|
|
39
|
+
"dotenv": "^17.4.2"
|
|
40
|
+
},
|
|
41
|
+
"devDependencies": {
|
|
42
|
+
"@types/node": "^20.0.0",
|
|
43
|
+
"@vitest/ui": "^4.1.4",
|
|
44
|
+
"tsx": "^4.21.0",
|
|
45
|
+
"typescript": "^5.0.0",
|
|
46
|
+
"vitest": "^4.1.4"
|
|
47
|
+
},
|
|
48
|
+
"packageManager": "pnpm@10.11.0+sha512.6540583f41cc5f628eb3d9773ecee802f4f9ef9923cc45b69890fb47991d4b092964694ec3a4f738a420c918a333062c8b925d312f42e4f0c263eb603551f977"
|
|
49
|
+
}
|