@turystack/nestjs-database 1.0.0 → 2.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.
Files changed (124) hide show
  1. package/README.md +35 -4
  2. package/dist/database.adapter.interface.d.ts +17 -0
  3. package/dist/database.adapter.interface.d.ts.map +1 -0
  4. package/dist/database.adapter.interface.js +2 -0
  5. package/dist/database.adapter.interface.js.map +1 -0
  6. package/dist/database.constants.d.ts +2 -0
  7. package/dist/database.constants.d.ts.map +1 -1
  8. package/dist/database.constants.js +2 -0
  9. package/dist/database.constants.js.map +1 -1
  10. package/dist/database.helpers.d.ts +2 -0
  11. package/dist/database.helpers.d.ts.map +1 -1
  12. package/dist/database.helpers.js +3 -0
  13. package/dist/database.helpers.js.map +1 -1
  14. package/dist/database.module.d.ts +1 -0
  15. package/dist/database.module.d.ts.map +1 -1
  16. package/dist/database.module.js +41 -23
  17. package/dist/database.module.js.map +1 -1
  18. package/dist/database.service.d.ts +2 -2
  19. package/dist/database.service.d.ts.map +1 -1
  20. package/dist/database.service.js +8 -5
  21. package/dist/database.service.js.map +1 -1
  22. package/dist/database.types.d.ts +28 -1
  23. package/dist/database.types.d.ts.map +1 -1
  24. package/dist/drizzle/client.drizzle.d.ts +2 -2
  25. package/dist/drizzle/client.drizzle.d.ts.map +1 -1
  26. package/dist/drizzle/client.drizzle.js +1 -1
  27. package/dist/drizzle/client.drizzle.js.map +1 -1
  28. package/dist/drizzle/postgresql.adapter.d.ts +4 -0
  29. package/dist/drizzle/postgresql.adapter.d.ts.map +1 -0
  30. package/dist/drizzle/postgresql.adapter.js +42 -0
  31. package/dist/drizzle/postgresql.adapter.js.map +1 -0
  32. package/dist/dynamodb/client.dynamodb.d.ts +22 -0
  33. package/dist/dynamodb/client.dynamodb.d.ts.map +1 -0
  34. package/dist/dynamodb/client.dynamodb.js +39 -0
  35. package/dist/dynamodb/client.dynamodb.js.map +1 -0
  36. package/dist/dynamodb/dynamodb.adapter.d.ts +4 -0
  37. package/dist/dynamodb/dynamodb.adapter.d.ts.map +1 -0
  38. package/dist/dynamodb/dynamodb.adapter.js +20 -0
  39. package/dist/dynamodb/dynamodb.adapter.js.map +1 -0
  40. package/dist/dynamodb/dynamodb.repository.d.ts +37 -0
  41. package/dist/dynamodb/dynamodb.repository.d.ts.map +1 -0
  42. package/dist/dynamodb/dynamodb.repository.js +266 -0
  43. package/dist/dynamodb/dynamodb.repository.js.map +1 -0
  44. package/dist/dynamodb/dynamodb.repository.types.d.ts +55 -0
  45. package/dist/dynamodb/dynamodb.repository.types.d.ts.map +1 -0
  46. package/dist/dynamodb/dynamodb.repository.types.js +2 -0
  47. package/dist/dynamodb/dynamodb.repository.types.js.map +1 -0
  48. package/dist/dynamodb/dynamodb.transaction.d.ts +7 -0
  49. package/dist/dynamodb/dynamodb.transaction.d.ts.map +1 -0
  50. package/dist/dynamodb/dynamodb.transaction.js +28 -0
  51. package/dist/dynamodb/dynamodb.transaction.js.map +1 -0
  52. package/dist/dynamodb/schema-builder.dynamodb.d.ts +4 -0
  53. package/dist/dynamodb/schema-builder.dynamodb.d.ts.map +1 -0
  54. package/dist/dynamodb/schema-builder.dynamodb.js +58 -0
  55. package/dist/dynamodb/schema-builder.dynamodb.js.map +1 -0
  56. package/dist/dynamodb/schema-builder.types.dynamodb.d.ts +63 -0
  57. package/dist/dynamodb/schema-builder.types.dynamodb.d.ts.map +1 -0
  58. package/dist/dynamodb/schema-builder.types.dynamodb.js +2 -0
  59. package/dist/dynamodb/schema-builder.types.dynamodb.js.map +1 -0
  60. package/dist/dynamodb.d.ts +3 -0
  61. package/dist/dynamodb.d.ts.map +1 -0
  62. package/dist/dynamodb.js +3 -0
  63. package/dist/dynamodb.js.map +1 -0
  64. package/dist/index.d.ts +5 -11
  65. package/dist/index.d.ts.map +1 -1
  66. package/dist/index.js +3 -5
  67. package/dist/index.js.map +1 -1
  68. package/dist/postgresql.d.ts +3 -0
  69. package/dist/postgresql.d.ts.map +1 -0
  70. package/dist/postgresql.js +3 -0
  71. package/dist/postgresql.js.map +1 -0
  72. package/dist/{drizzle/transaction-context.drizzle.d.ts → transaction.context.d.ts} +10 -3
  73. package/dist/transaction.context.d.ts.map +1 -0
  74. package/dist/{drizzle/transaction-context.drizzle.js → transaction.context.js} +11 -8
  75. package/dist/transaction.context.js.map +1 -0
  76. package/dist/{drizzle/transactional.drizzle.d.ts → transactional.d.ts} +3 -2
  77. package/dist/transactional.d.ts.map +1 -0
  78. package/dist/{drizzle/transactional.drizzle.js → transactional.js} +6 -5
  79. package/dist/transactional.js.map +1 -0
  80. package/package.json +31 -7
  81. package/dist/drizzle/client.d.ts +0 -12
  82. package/dist/drizzle/client.d.ts.map +0 -1
  83. package/dist/drizzle/client.js +0 -34
  84. package/dist/drizzle/client.js.map +0 -1
  85. package/dist/drizzle/index.d.ts +0 -4
  86. package/dist/drizzle/index.d.ts.map +0 -1
  87. package/dist/drizzle/index.js +0 -4
  88. package/dist/drizzle/index.js.map +0 -1
  89. package/dist/drizzle/transaction-context.d.ts +0 -9
  90. package/dist/drizzle/transaction-context.d.ts.map +0 -1
  91. package/dist/drizzle/transaction-context.drizzle.d.ts.map +0 -1
  92. package/dist/drizzle/transaction-context.drizzle.js.map +0 -1
  93. package/dist/drizzle/transaction-context.js +0 -15
  94. package/dist/drizzle/transaction-context.js.map +0 -1
  95. package/dist/drizzle/transactional.decorator.d.ts +0 -3
  96. package/dist/drizzle/transactional.decorator.d.ts.map +0 -1
  97. package/dist/drizzle/transactional.decorator.js +0 -15
  98. package/dist/drizzle/transactional.decorator.js.map +0 -1
  99. package/dist/drizzle/transactional.drizzle.d.ts.map +0 -1
  100. package/dist/drizzle/transactional.drizzle.js.map +0 -1
  101. package/dist/prisma/index.d.ts +0 -3
  102. package/dist/prisma/index.d.ts.map +0 -1
  103. package/dist/prisma/index.js +0 -3
  104. package/dist/prisma/index.js.map +0 -1
  105. package/dist/prisma/prisma.client.d.ts +0 -2
  106. package/dist/prisma/prisma.client.d.ts.map +0 -1
  107. package/dist/prisma/prisma.client.js +0 -13
  108. package/dist/prisma/prisma.client.js.map +0 -1
  109. package/dist/prisma/transactional.decorator.d.ts +0 -2
  110. package/dist/prisma/transactional.decorator.d.ts.map +0 -1
  111. package/dist/prisma/transactional.decorator.js +0 -3
  112. package/dist/prisma/transactional.decorator.js.map +0 -1
  113. package/dist/schema-builder.d.ts +0 -7
  114. package/dist/schema-builder.d.ts.map +0 -1
  115. package/dist/schema-builder.js +0 -32
  116. package/dist/schema-builder.js.map +0 -1
  117. package/dist/schema-builder.types.d.ts +0 -8
  118. package/dist/schema-builder.types.d.ts.map +0 -1
  119. package/dist/schema-builder.types.js +0 -2
  120. package/dist/schema-builder.types.js.map +0 -1
  121. package/dist/utils/uuid-v7.d.ts +0 -2
  122. package/dist/utils/uuid-v7.d.ts.map +0 -1
  123. package/dist/utils/uuid-v7.js +0 -2
  124. package/dist/utils/uuid-v7.js.map +0 -1
@@ -0,0 +1,37 @@
1
+ import type { DynamoPage, DynamoUpdateOptions, SortCondition } from '../dynamodb/dynamodb.repository.types.js';
2
+ import type { DynamoHandle } from '../dynamodb/dynamodb.transaction.js';
3
+ import type { DynamoTable } from '../dynamodb/schema-builder.types.dynamodb.js';
4
+ type Row = Record<string, unknown>;
5
+ export declare class DynamoRepository {
6
+ private readonly _getHandle;
7
+ private readonly _table;
8
+ constructor(_getHandle: () => DynamoHandle, _table: DynamoTable);
9
+ findById(key: Row): Promise<Row | undefined>;
10
+ exists(key: Row): Promise<boolean>;
11
+ query(input: {
12
+ cursor?: string;
13
+ direction?: 'asc' | 'desc';
14
+ index?: string;
15
+ limit?: number;
16
+ partition: number | string;
17
+ sort?: SortCondition;
18
+ }): Promise<DynamoPage<Row>>;
19
+ count(input: {
20
+ index?: string;
21
+ partition: number | string;
22
+ sort?: SortCondition;
23
+ }): Promise<number>;
24
+ create(data: Row): Promise<Row>;
25
+ upsert(data: Row): Promise<Row>;
26
+ createMany(rows: Row[]): Promise<Row[]>;
27
+ updateById(key: Row, data: Row, options?: DynamoUpdateOptions): Promise<Row>;
28
+ deleteById(key: Row): Promise<Row>;
29
+ private _stamp;
30
+ private _put;
31
+ private _explainConditionFailure;
32
+ private _keyCondition;
33
+ private _keyFor;
34
+ private _tableName;
35
+ }
36
+ export {};
37
+ //# sourceMappingURL=dynamodb.repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dynamodb.repository.d.ts","sourceRoot":"","sources":["../../src/dynamodb/dynamodb.repository.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACX,UAAU,EACV,mBAAmB,EACnB,aAAa,EACb,MAAM,yCAAyC,CAAA;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAA;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6CAA6C,CAAA;AAO9E,KAAK,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAsDlC,qBAAa,gBAAgB;IAE3B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFxB,YACkB,UAAU,EAAE,MAAM,YAAY,EAC9B,MAAM,EAAE,WAAW,EACjC;IAEE,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,GAAG,SAAS,CAAC,CAUjD;IAEK,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,CAEvC;IAEK,KAAK,CAAC,KAAK,EAAE;QAClB,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,CAAA;QAC1B,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,SAAS,EAAE,MAAM,GAAG,MAAM,CAAA;QAC1B,IAAI,CAAC,EAAE,aAAa,CAAA;KACpB,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAiC3B;IAEK,KAAK,CAAC,KAAK,EAAE;QAClB,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,SAAS,EAAE,MAAM,GAAG,MAAM,CAAA;QAC1B,IAAI,CAAC,EAAE,aAAa,CAAA;KACpB,GAAG,OAAO,CAAC,MAAM,CAAC,CAgBlB;IAEK,MAAM,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAEpC;IAEK,MAAM,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAEpC;IAEK,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAkC5C;IAEK,UAAU,CACf,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,GAAG,EACT,OAAO,CAAC,EAAE,mBAAmB,GAC3B,OAAO,CAAC,GAAG,CAAC,CA4Dd;IAEK,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAsBvC;IASD,OAAO,CAAC,MAAM;YAIA,IAAI;IA8BlB,OAAO,CAAC,wBAAwB;IA6BhC,OAAO,CAAC,aAAa;IAiCrB,OAAO,CAAC,OAAO;IAgBf,OAAO,CAAC,UAAU;CAGlB"}
@@ -0,0 +1,266 @@
1
+ import { ConcurrentUpdateError } from '@turystack/exceptions';
2
+ import { CREATED_BY_COLUMN, UPDATED_BY_COLUMN, withAuditActor, } from '../audit.context.js';
3
+ import { RecordNotFoundError } from '../repository/table-repository.errors.js';
4
+ const DEFAULT_VERSION_ATTRIBUTE = 'version';
5
+ const DEFAULT_LIMIT = 25;
6
+ const BATCH_WRITE_MAX = 25;
7
+ function encodeCursor(key) {
8
+ return Buffer.from(JSON.stringify(key), 'utf8').toString('base64url');
9
+ }
10
+ function decodeCursor(cursor) {
11
+ try {
12
+ return JSON.parse(Buffer.from(cursor, 'base64url').toString('utf8'));
13
+ }
14
+ catch {
15
+ throw new Error('[DynamoRepository] cursor is not a cursor this table issued');
16
+ }
17
+ }
18
+ function sortExpression(condition, values) {
19
+ if ('beginsWith' in condition) {
20
+ values[':sort'] = condition.beginsWith;
21
+ return `begins_with(#sort, :sort)`;
22
+ }
23
+ if ('between' in condition) {
24
+ values[':sortFrom'] = condition.between[0];
25
+ values[':sortTo'] = condition.between[1];
26
+ return `#sort BETWEEN :sortFrom AND :sortTo`;
27
+ }
28
+ const [operator, value] = Object.entries(condition)[0];
29
+ const symbols = {
30
+ eq: '=',
31
+ gt: '>',
32
+ gte: '>=',
33
+ lt: '<',
34
+ lte: '<=',
35
+ };
36
+ values[':sort'] = value;
37
+ return `#sort ${symbols[operator] ?? '='} :sort`;
38
+ }
39
+ export class DynamoRepository {
40
+ _getHandle;
41
+ _table;
42
+ constructor(_getHandle, _table) {
43
+ this._getHandle = _getHandle;
44
+ this._table = _table;
45
+ }
46
+ async findById(key) {
47
+ const handle = this._getHandle();
48
+ const result = await handle.client.send(new handle.sdk.GetCommand({
49
+ Key: key,
50
+ TableName: this._tableName(handle),
51
+ }));
52
+ return result.Item;
53
+ }
54
+ async exists(key) {
55
+ return (await this.findById(key)) !== undefined;
56
+ }
57
+ async query(input) {
58
+ const handle = this._getHandle();
59
+ const limit = input.limit ?? DEFAULT_LIMIT;
60
+ const result = await handle.client.send(new handle.sdk.QueryCommand({
61
+ ...this._keyCondition(input),
62
+ ...(input.cursor
63
+ ? {
64
+ ExclusiveStartKey: decodeCursor(input.cursor),
65
+ }
66
+ : {}),
67
+ ...(input.index
68
+ ? {
69
+ IndexName: input.index,
70
+ }
71
+ : {}),
72
+ Limit: limit,
73
+ ScanIndexForward: input.direction !== 'desc',
74
+ TableName: this._tableName(handle),
75
+ }));
76
+ const last = result.LastEvaluatedKey;
77
+ return {
78
+ hasMore: last !== undefined,
79
+ items: (result.Items ?? []),
80
+ ...(last
81
+ ? {
82
+ nextCursor: encodeCursor(last),
83
+ }
84
+ : {}),
85
+ };
86
+ }
87
+ async count(input) {
88
+ const handle = this._getHandle();
89
+ const result = await handle.client.send(new handle.sdk.QueryCommand({
90
+ ...this._keyCondition(input),
91
+ ...(input.index
92
+ ? {
93
+ IndexName: input.index,
94
+ }
95
+ : {}),
96
+ Select: 'COUNT',
97
+ TableName: this._tableName(handle),
98
+ }));
99
+ return result.Count ?? 0;
100
+ }
101
+ async create(data) {
102
+ return this._put(this._stamp(data, CREATED_BY_COLUMN));
103
+ }
104
+ async upsert(data) {
105
+ return this._put(this._stamp(data, CREATED_BY_COLUMN));
106
+ }
107
+ async createMany(rows) {
108
+ const handle = this._getHandle();
109
+ const data = rows.map((row) => this._stamp(row, CREATED_BY_COLUMN));
110
+ if (handle.enqueue) {
111
+ for (const item of data) {
112
+ handle.enqueue({
113
+ Put: {
114
+ Item: item,
115
+ TableName: this._tableName(handle),
116
+ },
117
+ });
118
+ }
119
+ return data;
120
+ }
121
+ for (let index = 0; index < data.length; index += BATCH_WRITE_MAX) {
122
+ const chunk = data.slice(index, index + BATCH_WRITE_MAX);
123
+ await handle.client.send(new handle.sdk.BatchWriteCommand({
124
+ RequestItems: {
125
+ [this._tableName(handle)]: chunk.map((item) => ({
126
+ PutRequest: {
127
+ Item: item,
128
+ },
129
+ })),
130
+ },
131
+ }));
132
+ }
133
+ return data;
134
+ }
135
+ async updateById(key, data, options) {
136
+ const handle = this._getHandle();
137
+ if (handle.enqueue) {
138
+ throw new Error('[DynamoRepository] updateById cannot run inside @Transactional: the write is only sent at commit, so there is no resulting item to return. Use create/upsert, or move the update outside the transaction.');
139
+ }
140
+ const versionAttribute = options?.versionAttribute ?? DEFAULT_VERSION_ATTRIBUTE;
141
+ const patch = this._stamp(data, UPDATED_BY_COLUMN);
142
+ if (options?.expectedVersion !== undefined) {
143
+ patch[versionAttribute] = options.expectedVersion + 1;
144
+ }
145
+ const names = {};
146
+ const values = {};
147
+ const sets = [];
148
+ for (const [attribute, value] of Object.entries(patch)) {
149
+ names[`#${attribute}`] = attribute;
150
+ values[`:${attribute}`] = value;
151
+ sets.push(`#${attribute} = :${attribute}`);
152
+ }
153
+ if (sets.length === 0) {
154
+ throw new Error('[DynamoRepository] updateById needs at least one attribute');
155
+ }
156
+ if (options?.expectedVersion !== undefined) {
157
+ names['#expectedVersion'] = versionAttribute;
158
+ values[':expectedVersion'] = options.expectedVersion;
159
+ }
160
+ try {
161
+ const result = await handle.client.send(new handle.sdk.UpdateCommand({
162
+ ...(options?.expectedVersion !== undefined
163
+ ? {
164
+ ConditionExpression: '#expectedVersion = :expectedVersion',
165
+ }
166
+ : {}),
167
+ ExpressionAttributeNames: names,
168
+ ExpressionAttributeValues: values,
169
+ Key: key,
170
+ ReturnValues: 'ALL_NEW',
171
+ ReturnValuesOnConditionCheckFailure: 'ALL_OLD',
172
+ TableName: this._tableName(handle),
173
+ UpdateExpression: `SET ${sets.join(', ')}`,
174
+ }));
175
+ return result.Attributes;
176
+ }
177
+ catch (error) {
178
+ throw this._explainConditionFailure(error, key, options, versionAttribute);
179
+ }
180
+ }
181
+ async deleteById(key) {
182
+ const handle = this._getHandle();
183
+ if (handle.enqueue) {
184
+ throw new Error('[DynamoRepository] deleteById cannot run inside @Transactional: the write is only sent at commit, so the deleted item cannot be returned. Move the delete outside the transaction.');
185
+ }
186
+ const result = await handle.client.send(new handle.sdk.DeleteCommand({
187
+ Key: key,
188
+ ReturnValues: 'ALL_OLD',
189
+ TableName: this._tableName(handle),
190
+ }));
191
+ if (!result.Attributes) {
192
+ throw new RecordNotFoundError(this._table.name);
193
+ }
194
+ return result.Attributes;
195
+ }
196
+ _stamp(data, attribute) {
197
+ return withAuditActor(data, this._table.attributes, attribute);
198
+ }
199
+ async _put(data) {
200
+ const handle = this._getHandle();
201
+ if (handle.enqueue) {
202
+ handle.enqueue({
203
+ Put: {
204
+ Item: data,
205
+ TableName: this._tableName(handle),
206
+ },
207
+ });
208
+ return data;
209
+ }
210
+ await handle.client.send(new handle.sdk.PutCommand({
211
+ Item: data,
212
+ TableName: this._tableName(handle),
213
+ }));
214
+ return data;
215
+ }
216
+ _explainConditionFailure(error, _key, options, versionAttribute) {
217
+ const failure = error;
218
+ if (failure.name !== 'ConditionalCheckFailedException') {
219
+ return error;
220
+ }
221
+ if (!failure.Item) {
222
+ return new RecordNotFoundError(this._table.name);
223
+ }
224
+ return new ConcurrentUpdateError(`[DynamoRepository] "${this._table.name}" was updated by another writer`, {
225
+ actualVersion: failure.Item[versionAttribute],
226
+ expectedVersion: options?.expectedVersion,
227
+ table: this._table.name,
228
+ });
229
+ }
230
+ _keyCondition(input) {
231
+ const key = this._keyFor(input.index);
232
+ const names = {
233
+ '#partition': key.partition,
234
+ };
235
+ const values = {
236
+ ':partition': input.partition,
237
+ };
238
+ let expression = '#partition = :partition';
239
+ if (input.sort) {
240
+ if (!key.sort) {
241
+ throw new Error(`[DynamoRepository] "${input.index ?? this._table.name}" has no sort key, so a sort condition cannot be applied`);
242
+ }
243
+ names['#sort'] = key.sort;
244
+ expression = `${expression} AND ${sortExpression(input.sort, values)}`;
245
+ }
246
+ return {
247
+ ExpressionAttributeNames: names,
248
+ ExpressionAttributeValues: values,
249
+ KeyConditionExpression: expression,
250
+ };
251
+ }
252
+ _keyFor(index) {
253
+ if (!index) {
254
+ return this._table.key;
255
+ }
256
+ const declared = this._table.indexes?.[index];
257
+ if (!declared) {
258
+ throw new Error(`[DynamoRepository] table "${this._table.name}" declares no index "${index}"`);
259
+ }
260
+ return declared;
261
+ }
262
+ _tableName(handle) {
263
+ return `${handle.tablePrefix}${this._table.name}`;
264
+ }
265
+ }
266
+ //# sourceMappingURL=dynamodb.repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dynamodb.repository.js","sourceRoot":"","sources":["../../src/dynamodb/dynamodb.repository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AAE7D,OAAO,EACN,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,GACd,MAAM,oBAAoB,CAAA;AAS3B,OAAO,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAA;AAE7E,MAAM,yBAAyB,GAAG,SAAS,CAAA;AAC3C,MAAM,aAAa,GAAG,EAAE,CAAA;AACxB,MAAM,eAAe,GAAG,EAAE,CAAA;AAK1B,SAAS,YAAY,CAAC,GAAQ;IAC7B,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;AACtE,CAAC;AAED,SAAS,YAAY,CAAC,MAAc;IACnC,IAAI,CAAC;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAQ,CAAA;IAC5E,CAAC;IAAC,MAAM,CAAC;QACR,MAAM,IAAI,KAAK,CACd,6DAA6D,CAC7D,CAAA;IACF,CAAC;AACF,CAAC;AAED,SAAS,cAAc,CAAC,SAAwB,EAAE,MAAW;IAC5D,IAAI,YAAY,IAAI,SAAS,EAAE,CAAC;QAC/B,MAAM,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC,UAAU,CAAA;QACtC,OAAO,2BAA2B,CAAA;IACnC,CAAC;IAED,IAAI,SAAS,IAAI,SAAS,EAAE,CAAC;QAC5B,MAAM,CAAC,WAAW,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;QAC1C,MAAM,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;QACxC,OAAO,qCAAqC,CAAA;IAC7C,CAAC;IAED,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAGpD,CAAA;IACD,MAAM,OAAO,GAA2B;QACvC,EAAE,EAAE,GAAG;QACP,EAAE,EAAE,GAAG;QACP,GAAG,EAAE,IAAI;QACT,EAAE,EAAE,GAAG;QACP,GAAG,EAAE,IAAI;KACT,CAAA;IAED,MAAM,CAAC,OAAO,CAAC,GAAG,KAAK,CAAA;IAEvB,OAAO,SAAS,OAAO,CAAC,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAA;AACjD,CAAC;AAUD,MAAM,OAAO,gBAAgB;IAEV,UAAU;IACV,MAAM;IAFxB,YACkB,UAA8B,EAC9B,MAAmB;0BADnB,UAAU;sBACV,MAAM;IACrB,CAAC;IAEJ,KAAK,CAAC,QAAQ,CAAC,GAAQ;QACtB,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAA;QAChC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CACtC,IAAI,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC;YACzB,GAAG,EAAE,GAAG;YACR,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;SAClC,CAAC,CACF,CAAA;QAED,OAAO,MAAM,CAAC,IAAuB,CAAA;IACtC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAQ;QACpB,OAAO,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,SAAS,CAAA;IAChD,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,KAOX;QACA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAA;QAChC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,aAAa,CAAA;QAC1C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CACtC,IAAI,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC;YAC3B,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;YAC5B,GAAG,CAAC,KAAK,CAAC,MAAM;gBACf,CAAC,CAAC;oBACA,iBAAiB,EAAE,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC;iBAC7C;gBACF,CAAC,CAAC,EAAE,CAAC;YACN,GAAG,CAAC,KAAK,CAAC,KAAK;gBACd,CAAC,CAAC;oBACA,SAAS,EAAE,KAAK,CAAC,KAAK;iBACtB;gBACF,CAAC,CAAC,EAAE,CAAC;YACN,KAAK,EAAE,KAAK;YACZ,gBAAgB,EAAE,KAAK,CAAC,SAAS,KAAK,MAAM;YAC5C,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;SAClC,CAAC,CACF,CAAA;QAED,MAAM,IAAI,GAAG,MAAM,CAAC,gBAAmC,CAAA;QAEvD,OAAO;YACN,OAAO,EAAE,IAAI,KAAK,SAAS;YAC3B,KAAK,EAAE,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAU;YACpC,GAAG,CAAC,IAAI;gBACP,CAAC,CAAC;oBACA,UAAU,EAAE,YAAY,CAAC,IAAI,CAAC;iBAC9B;gBACF,CAAC,CAAC,EAAE,CAAC;SACN,CAAA;IACF,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,KAIX;QACA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAA;QAChC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CACtC,IAAI,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC;YAC3B,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;YAC5B,GAAG,CAAC,KAAK,CAAC,KAAK;gBACd,CAAC,CAAC;oBACA,SAAS,EAAE,KAAK,CAAC,KAAK;iBACtB;gBACF,CAAC,CAAC,EAAE,CAAC;YACN,MAAM,EAAE,OAAO;YACf,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;SAClC,CAAC,CACF,CAAA;QAED,OAAQ,MAAM,CAAC,KAA4B,IAAI,CAAC,CAAA;IACjD,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAS;QACrB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAA;IACvD,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAS;QACrB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAA;IACvD,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,IAAW;QAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAA;QAChC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC,CAAA;QAEnE,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;gBACzB,MAAM,CAAC,OAAO,CAAC;oBACd,GAAG,EAAE;wBACJ,IAAI,EAAE,IAAI;wBACV,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;qBAClC;iBACD,CAAC,CAAA;YACH,CAAC;YAED,OAAO,IAAI,CAAA;QACZ,CAAC;QAED,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,eAAe,EAAE,CAAC;YACnE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,eAAe,CAAC,CAAA;YAExD,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CACvB,IAAI,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC;gBAChC,YAAY,EAAE;oBACb,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;wBAC/C,UAAU,EAAE;4BACX,IAAI,EAAE,IAAI;yBACV;qBACD,CAAC,CAAC;iBACH;aACD,CAAC,CACF,CAAA;QACF,CAAC;QAED,OAAO,IAAI,CAAA;IACZ,CAAC;IAED,KAAK,CAAC,UAAU,CACf,GAAQ,EACR,IAAS,EACT,OAA6B;QAE7B,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAA;QAEhC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CACd,2MAA2M,CAC3M,CAAA;QACF,CAAC;QAED,MAAM,gBAAgB,GACrB,OAAO,EAAE,gBAAgB,IAAI,yBAAyB,CAAA;QACvD,MAAM,KAAK,GAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAA;QAEvD,IAAI,OAAO,EAAE,eAAe,KAAK,SAAS,EAAE,CAAC;YAC5C,KAAK,CAAC,gBAAgB,CAAC,GAAG,OAAO,CAAC,eAAe,GAAG,CAAC,CAAA;QACtD,CAAC;QAED,MAAM,KAAK,GAA2B,EAAE,CAAA;QACxC,MAAM,MAAM,GAAQ,EAAE,CAAA;QACtB,MAAM,IAAI,GAAa,EAAE,CAAA;QAEzB,KAAK,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACxD,KAAK,CAAC,IAAI,SAAS,EAAE,CAAC,GAAG,SAAS,CAAA;YAClC,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC,GAAG,KAAK,CAAA;YAC/B,IAAI,CAAC,IAAI,CAAC,IAAI,SAAS,OAAO,SAAS,EAAE,CAAC,CAAA;QAC3C,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CACd,4DAA4D,CAC5D,CAAA;QACF,CAAC;QAED,IAAI,OAAO,EAAE,eAAe,KAAK,SAAS,EAAE,CAAC;YAC5C,KAAK,CAAC,kBAAkB,CAAC,GAAG,gBAAgB,CAAA;YAC5C,MAAM,CAAC,kBAAkB,CAAC,GAAG,OAAO,CAAC,eAAe,CAAA;QACrD,CAAC;QAED,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CACtC,IAAI,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC;gBAC5B,GAAG,CAAC,OAAO,EAAE,eAAe,KAAK,SAAS;oBACzC,CAAC,CAAC;wBACA,mBAAmB,EAAE,qCAAqC;qBAC1D;oBACF,CAAC,CAAC,EAAE,CAAC;gBACN,wBAAwB,EAAE,KAAK;gBAC/B,yBAAyB,EAAE,MAAM;gBACjC,GAAG,EAAE,GAAG;gBACR,YAAY,EAAE,SAAS;gBACvB,mCAAmC,EAAE,SAAS;gBAC9C,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;gBAClC,gBAAgB,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;aAC1C,CAAC,CACF,CAAA;YAED,OAAO,MAAM,CAAC,UAAiB,CAAA;QAChC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAA;QAC3E,CAAC;IACF,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,GAAQ;QACxB,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAA;QAEhC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CACd,oLAAoL,CACpL,CAAA;QACF,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CACtC,IAAI,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC;YAC5B,GAAG,EAAE,GAAG;YACR,YAAY,EAAE,SAAS;YACvB,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;SAClC,CAAC,CACF,CAAA;QAED,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YACxB,MAAM,IAAI,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAChD,CAAC;QAED,OAAO,MAAM,CAAC,UAAiB,CAAA;IAChC,CAAC;IASO,MAAM,CAAC,IAAS,EAAE,SAAiB;QAC1C,OAAO,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;IAC/D,CAAC;IAEO,KAAK,CAAC,IAAI,CAAC,IAAS;QAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAA;QAEhC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,CAAC,OAAO,CAAC;gBACd,GAAG,EAAE;oBACJ,IAAI,EAAE,IAAI;oBACV,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;iBAClC;aACD,CAAC,CAAA;YAEF,OAAO,IAAI,CAAA;QACZ,CAAC;QAED,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CACvB,IAAI,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC;YACzB,IAAI,EAAE,IAAI;YACV,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;SAClC,CAAC,CACF,CAAA;QAED,OAAO,IAAI,CAAA;IACZ,CAAC;IAQO,wBAAwB,CAC/B,KAAc,EACd,IAAS,EACT,OAAwC,EACxC,gBAAwB;QAExB,MAAM,OAAO,GAAG,KAGf,CAAA;QAED,IAAI,OAAO,CAAC,IAAI,KAAK,iCAAiC,EAAE,CAAC;YACxD,OAAO,KAAK,CAAA;QACb,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACnB,OAAO,IAAI,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACjD,CAAC;QAED,OAAO,IAAI,qBAAqB,CAC/B,uBAAuB,IAAI,CAAC,MAAM,CAAC,IAAI,iCAAiC,EACxE;YACC,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC;YAC7C,eAAe,EAAE,OAAO,EAAE,eAAe;YACzC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;SACvB,CACD,CAAA;IACF,CAAC;IAEO,aAAa,CAAC,KAIrB;QACA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QACrC,MAAM,KAAK,GAA2B;YACrC,YAAY,EAAE,GAAG,CAAC,SAAS;SAC3B,CAAA;QACD,MAAM,MAAM,GAAQ;YACnB,YAAY,EAAE,KAAK,CAAC,SAAS;SAC7B,CAAA;QACD,IAAI,UAAU,GAAG,yBAAyB,CAAA;QAE1C,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YAChB,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CACd,uBAAuB,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,0DAA0D,CAChH,CAAA;YACF,CAAC;YAED,KAAK,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,IAAI,CAAA;YACzB,UAAU,GAAG,GAAG,UAAU,QAAQ,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAA;QACvE,CAAC;QAED,OAAO;YACN,wBAAwB,EAAE,KAAK;YAC/B,yBAAyB,EAAE,MAAM;YACjC,sBAAsB,EAAE,UAAU;SAClC,CAAA;IACF,CAAC;IAGO,OAAO,CAAC,KAAc;QAC7B,IAAI,CAAC,KAAK,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAA;QACvB,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAA;QAE7C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACd,6BAA6B,IAAI,CAAC,MAAM,CAAC,IAAI,wBAAwB,KAAK,GAAG,CAC7E,CAAA;QACF,CAAC;QAED,OAAO,QAAQ,CAAA;IAChB,CAAC;IAEO,UAAU,CAAC,MAAoB;QACtC,OAAO,GAAG,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;IAClD,CAAC;CACD"}
@@ -0,0 +1,55 @@
1
+ import type { AnyDynamoTableDefinition, DynamoTable, InferRow } from '../dynamodb/schema-builder.types.dynamodb.js';
2
+ export type SortCondition = {
3
+ beginsWith: string;
4
+ } | {
5
+ between: [
6
+ number | string,
7
+ number | string
8
+ ];
9
+ } | {
10
+ eq: number | string;
11
+ } | {
12
+ gt: number | string;
13
+ } | {
14
+ gte: number | string;
15
+ } | {
16
+ lt: number | string;
17
+ } | {
18
+ lte: number | string;
19
+ };
20
+ export type DynamoPage<TRow> = {
21
+ hasMore: boolean;
22
+ items: TRow[];
23
+ nextCursor?: string;
24
+ };
25
+ type Row<TDefinition extends AnyDynamoTableDefinition> = InferRow<TDefinition['attributes']>;
26
+ export type DynamoKeyInput<TDefinition extends AnyDynamoTableDefinition> = Pick<Row<TDefinition>, (TDefinition['key']['partition'] | Extract<TDefinition['key']['sort'], string>) & keyof Row<TDefinition>>;
27
+ export type DynamoQueryInput<TDefinition extends AnyDynamoTableDefinition> = {
28
+ cursor?: string;
29
+ direction?: 'asc' | 'desc';
30
+ index?: keyof NonNullable<TDefinition['indexes']> & string;
31
+ limit?: number;
32
+ partition: number | string;
33
+ sort?: SortCondition;
34
+ };
35
+ export type DynamoUpdateInput<TDefinition extends AnyDynamoTableDefinition> = Partial<Omit<Row<TDefinition>, keyof DynamoKeyInput<TDefinition>>>;
36
+ export type DynamoUpdateOptions = {
37
+ expectedVersion?: number;
38
+ versionAttribute?: string;
39
+ };
40
+ export interface DynamoRepositoryMethods<TDefinition extends AnyDynamoTableDefinition> {
41
+ findById(key: DynamoKeyInput<TDefinition>): Promise<Row<TDefinition> | undefined>;
42
+ query(input: DynamoQueryInput<TDefinition>): Promise<DynamoPage<Row<TDefinition>>>;
43
+ count(input: DynamoQueryInput<TDefinition>): Promise<number>;
44
+ exists(key: DynamoKeyInput<TDefinition>): Promise<boolean>;
45
+ create(data: Row<TDefinition>): Promise<Row<TDefinition>>;
46
+ createMany(data: Row<TDefinition>[]): Promise<Row<TDefinition>[]>;
47
+ upsert(data: Row<TDefinition>): Promise<Row<TDefinition>>;
48
+ updateById(key: DynamoKeyInput<TDefinition>, data: DynamoUpdateInput<TDefinition>, options?: DynamoUpdateOptions): Promise<Row<TDefinition>>;
49
+ deleteById(key: DynamoKeyInput<TDefinition>): Promise<Row<TDefinition>>;
50
+ }
51
+ export type InferDynamoRepositories<TSchema extends Record<string, DynamoTable>> = {
52
+ [K in keyof TSchema & string]: TSchema[K] extends DynamoTable<infer D> ? DynamoRepositoryMethods<D> : never;
53
+ };
54
+ export {};
55
+ //# sourceMappingURL=dynamodb.repository.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dynamodb.repository.types.d.ts","sourceRoot":"","sources":["../../src/dynamodb/dynamodb.repository.types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=dynamodb.repository.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dynamodb.repository.types.js","sourceRoot":"","sources":["../../src/dynamodb/dynamodb.repository.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ import type { ITransactionStrategy } from '../database.adapter.interface.js';
2
+ import type { DynamoConnection } from '../dynamodb/client.dynamodb.js';
3
+ export type DynamoHandle = DynamoConnection & {
4
+ enqueue?: (item: Record<string, unknown>) => void;
5
+ };
6
+ export declare const dynamoTransaction: ITransactionStrategy;
7
+ //# sourceMappingURL=dynamodb.transaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dynamodb.transaction.d.ts","sourceRoot":"","sources":["../../src/dynamodb/dynamodb.transaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAA;AAG3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAYrE,MAAM,MAAM,YAAY,GAAG,gBAAgB,GAAG;IAC7C,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAA;CACjD,CAAA;AAwBD,eAAO,MAAM,iBAAiB,EAAE,oBA0C/B,CAAA"}
@@ -0,0 +1,28 @@
1
+ const TRANSACT_WRITE_MAX_ITEMS = 100;
2
+ export const dynamoTransaction = {
3
+ async run(client, work, options) {
4
+ if (options?.isolationLevel) {
5
+ throw new Error(`[DatabaseModule] adapter "dynamodb" has no isolation levels — @Transactional('${options.isolationLevel}') cannot be honoured here, and ignoring it would be worse than refusing it`);
6
+ }
7
+ const connection = client;
8
+ const items = [];
9
+ const handle = {
10
+ ...connection,
11
+ enqueue: (item) => {
12
+ items.push(item);
13
+ },
14
+ };
15
+ const result = await work(handle);
16
+ if (items.length === 0) {
17
+ return result;
18
+ }
19
+ if (items.length > TRANSACT_WRITE_MAX_ITEMS) {
20
+ throw new Error(`[DatabaseModule] a transaction collected ${items.length} writes, over DynamoDB's limit of ${TRANSACT_WRITE_MAX_ITEMS}. Splitting it would stop being atomic, so it is refused instead.`);
21
+ }
22
+ await connection.client.send(new connection.sdk.TransactWriteCommand({
23
+ TransactItems: items,
24
+ }));
25
+ return result;
26
+ },
27
+ };
28
+ //# sourceMappingURL=dynamodb.transaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dynamodb.transaction.js","sourceRoot":"","sources":["../../src/dynamodb/dynamodb.transaction.ts"],"names":[],"mappings":"AAMA,MAAM,wBAAwB,GAAG,GAAG,CAAA;AAmCpC,MAAM,CAAC,MAAM,iBAAiB,GAAyB;IACtD,KAAK,CAAC,GAAG,CACR,MAAe,EACf,IAA2C,EAC3C,OAA4B;QAE5B,IAAI,OAAO,EAAE,cAAc,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CACd,iFAAiF,OAAO,CAAC,cAAc,6EAA6E,CACpL,CAAA;QACF,CAAC;QAED,MAAM,UAAU,GAAG,MAA0B,CAAA;QAC7C,MAAM,KAAK,GAA8B,EAAE,CAAA;QAE3C,MAAM,MAAM,GAAiB;YAC5B,GAAG,UAAU;YACb,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;gBACjB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACjB,CAAC;SACD,CAAA;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,CAAA;QAEjC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,MAAM,CAAA;QACd,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,GAAG,wBAAwB,EAAE,CAAC;YAC7C,MAAM,IAAI,KAAK,CACd,4CAA4C,KAAK,CAAC,MAAM,qCAAqC,wBAAwB,mEAAmE,CACxL,CAAA;QACF,CAAC;QAED,MAAM,UAAU,CAAC,MAAM,CAAC,IAAI,CAC3B,IAAI,UAAU,CAAC,GAAG,CAAC,oBAAoB,CAAC;YACvC,aAAa,EAAE,KAAK;SACpB,CAAC,CACF,CAAA;QAED,OAAO,MAAM,CAAA;IACd,CAAC;CACD,CAAA"}
@@ -0,0 +1,4 @@
1
+ import type { DynamoSchemaBuilder, DynamoSchemaResolverResult, MaterializeDynamoSchema } from '../dynamodb/schema-builder.types.dynamodb.js';
2
+ export declare function createDynamoSchemaBuilder(): DynamoSchemaBuilder;
3
+ export declare function materializeDynamoSchema<TResult extends DynamoSchemaResolverResult>(resolverResult: TResult): MaterializeDynamoSchema<TResult>;
4
+ //# sourceMappingURL=schema-builder.dynamodb.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-builder.dynamodb.d.ts","sourceRoot":"","sources":["../../src/dynamodb/schema-builder.dynamodb.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGX,mBAAmB,EACnB,0BAA0B,EAI1B,uBAAuB,EACvB,MAAM,6CAA6C,CAAA;AAepD,wBAAgB,yBAAyB,IAAI,mBAAmB,CAa/D;AA4CD,wBAAgB,uBAAuB,CACtC,OAAO,SAAS,0BAA0B,EACzC,cAAc,EAAE,OAAO,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAA"}
@@ -0,0 +1,58 @@
1
+ function attribute(type) {
2
+ return {
3
+ __optional: false,
4
+ __type: type,
5
+ optional() {
6
+ return {
7
+ __optional: true,
8
+ __type: type,
9
+ };
10
+ },
11
+ };
12
+ }
13
+ export function createDynamoSchemaBuilder() {
14
+ return {
15
+ binary: () => attribute('binary'),
16
+ boolean: () => attribute('boolean'),
17
+ list: () => attribute('list'),
18
+ map: () => attribute('map'),
19
+ number: () => attribute('number'),
20
+ string: () => attribute('string'),
21
+ table: (definition) => ({
22
+ __definition: definition,
23
+ }),
24
+ };
25
+ }
26
+ function assertKeysExist(tableName, definition) {
27
+ const declared = new Set(Object.keys(definition.attributes));
28
+ const paths = [
29
+ [
30
+ 'key',
31
+ definition.key,
32
+ ],
33
+ ...Object.entries(definition.indexes ?? {}),
34
+ ];
35
+ for (const [label, key] of paths) {
36
+ for (const attributeName of [
37
+ key.partition,
38
+ key.sort,
39
+ ]) {
40
+ if (attributeName !== undefined && !declared.has(attributeName)) {
41
+ throw new Error(`[DatabaseModule] table "${tableName}" declares "${attributeName}" in ${label}, but no such attribute exists`);
42
+ }
43
+ }
44
+ }
45
+ }
46
+ export function materializeDynamoSchema(resolverResult) {
47
+ return Object.fromEntries(Object.entries(resolverResult).map(([tableName, tableMap]) => {
48
+ assertKeysExist(tableName, tableMap.__definition);
49
+ return [
50
+ tableName,
51
+ {
52
+ ...tableMap.__definition,
53
+ name: tableName,
54
+ },
55
+ ];
56
+ }));
57
+ }
58
+ //# sourceMappingURL=schema-builder.dynamodb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-builder.dynamodb.js","sourceRoot":"","sources":["../../src/dynamodb/schema-builder.dynamodb.ts"],"names":[],"mappings":"AAWA,SAAS,SAAS,CAAoC,IAAW;IAChE,OAAO;QACN,UAAU,EAAE,KAAc;QAC1B,MAAM,EAAE,IAAI;QACZ,QAAQ;YACP,OAAO;gBACN,UAAU,EAAE,IAAI;gBAChB,MAAM,EAAE,IAAI;aACZ,CAAA;QACF,CAAC;KACD,CAAA;AACF,CAAC;AAED,MAAM,UAAU,yBAAyB;IACxC,OAAO;QACN,MAAM,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC;QACjC,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC;QACnC,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC;QAC7B,GAAG,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC;QAC3B,MAAM,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC;QACjC,MAAM,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC;QACjC,KAAK,EAAE,CAAC,UAAU,EAAE,EAAE,CACrB,CAAC;YACA,YAAY,EAAE,UAAU;SACxB,CAAsC;KACxC,CAAA;AACF,CAAC;AASD,SAAS,eAAe,CACvB,SAAiB,EACjB,UAAiC;IAEjC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAA;IAC5D,MAAM,KAAK,GAQP;QACH;YACC,KAAK;YACL,UAAU,CAAC,GAAG;SACd;QACD,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,IAAI,EAAE,CAAC;KAC3C,CAAA;IAED,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC;QAClC,KAAK,MAAM,aAAa,IAAI;YAC3B,GAAG,CAAC,SAAS;YACb,GAAG,CAAC,IAAI;SACR,EAAE,CAAC;YACH,IAAI,aAAa,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;gBACjE,MAAM,IAAI,KAAK,CACd,2BAA2B,SAAS,eAAe,aAAa,QAAQ,KAAK,gCAAgC,CAC7G,CAAA;YACF,CAAC;QACF,CAAC;IACF,CAAC;AACF,CAAC;AAKD,MAAM,UAAU,uBAAuB,CACtC,cAA0C;IAE1C,OAAO,MAAM,CAAC,WAAW,CACxB,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,EAAE;QAC5D,eAAe,CAAC,SAAS,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAA;QAEjD,OAAO;YACN,SAAS;YACT;gBACC,GAAG,QAAQ,CAAC,YAAY;gBACxB,IAAI,EAAE,SAAS;aACf;SACD,CAAA;IACF,CAAC,CAAC,CACF,CAAA;AACF,CAAC"}
@@ -0,0 +1,63 @@
1
+ export type DynamoAttributeType = 'binary' | 'boolean' | 'list' | 'map' | 'number' | 'string';
2
+ export type DynamoAttribute<TType extends DynamoAttributeType = DynamoAttributeType, TOptional extends boolean = false> = {
3
+ readonly __optional: TOptional;
4
+ readonly __type: TType;
5
+ };
6
+ export type DynamoAttributes = Record<string, DynamoAttribute<DynamoAttributeType, boolean>>;
7
+ type AttributeValue<TAttribute extends DynamoAttribute<DynamoAttributeType, boolean>> = TAttribute extends DynamoAttribute<infer TType, boolean> ? TType extends 'binary' ? Uint8Array : TType extends 'boolean' ? boolean : TType extends 'list' ? unknown[] : TType extends 'map' ? Record<string, unknown> : TType extends 'number' ? number : string : never;
8
+ type RequiredKeys<TAttributes extends DynamoAttributes> = {
9
+ [K in keyof TAttributes]: TAttributes[K]['__optional'] extends true ? never : K;
10
+ }[keyof TAttributes];
11
+ type OptionalKeys<TAttributes extends DynamoAttributes> = {
12
+ [K in keyof TAttributes]: TAttributes[K]['__optional'] extends true ? K : never;
13
+ }[keyof TAttributes];
14
+ export type InferRow<TAttributes extends DynamoAttributes> = {
15
+ [K in RequiredKeys<TAttributes>]: AttributeValue<TAttributes[K]>;
16
+ } & {
17
+ [K in OptionalKeys<TAttributes>]?: AttributeValue<TAttributes[K]>;
18
+ };
19
+ export type DynamoKey<TAttributes extends DynamoAttributes> = {
20
+ partition: keyof TAttributes & string;
21
+ sort?: keyof TAttributes & string;
22
+ };
23
+ export type DynamoIndexes<TAttributes extends DynamoAttributes> = Record<string, DynamoKey<TAttributes>>;
24
+ export type AnyDynamoTableDefinition = {
25
+ attributes: DynamoAttributes;
26
+ indexes?: Record<string, {
27
+ partition: string;
28
+ sort?: string;
29
+ }>;
30
+ key: {
31
+ partition: string;
32
+ sort?: string;
33
+ };
34
+ };
35
+ export type DynamoTableDefinition<TAttributes extends DynamoAttributes = DynamoAttributes, TIndexes extends DynamoIndexes<TAttributes> = DynamoIndexes<TAttributes>> = {
36
+ attributes: TAttributes;
37
+ indexes?: TIndexes;
38
+ key: DynamoKey<TAttributes>;
39
+ };
40
+ export type DynamoTableMap<TDefinition extends AnyDynamoTableDefinition = AnyDynamoTableDefinition> = {
41
+ readonly __definition: TDefinition;
42
+ };
43
+ export type DynamoTable<TDefinition extends AnyDynamoTableDefinition = AnyDynamoTableDefinition> = TDefinition & {
44
+ readonly name: string;
45
+ };
46
+ export type DynamoSchemaResolverResult = Record<string, DynamoTableMap>;
47
+ export type MaterializeDynamoSchema<TResult extends DynamoSchemaResolverResult> = {
48
+ [K in keyof TResult & string]: TResult[K] extends DynamoTableMap<infer D> ? DynamoTable<D> : never;
49
+ };
50
+ export type DynamoSchemaBuilder = {
51
+ binary(): DynamoAttribute<'binary'> & Optionalable<'binary'>;
52
+ boolean(): DynamoAttribute<'boolean'> & Optionalable<'boolean'>;
53
+ list(): DynamoAttribute<'list'> & Optionalable<'list'>;
54
+ map(): DynamoAttribute<'map'> & Optionalable<'map'>;
55
+ number(): DynamoAttribute<'number'> & Optionalable<'number'>;
56
+ string(): DynamoAttribute<'string'> & Optionalable<'string'>;
57
+ table<TAttributes extends DynamoAttributes, TIndexes extends DynamoIndexes<TAttributes>>(definition: DynamoTableDefinition<TAttributes, TIndexes>): DynamoTableMap<DynamoTableDefinition<TAttributes, TIndexes>>;
58
+ };
59
+ type Optionalable<TType extends DynamoAttributeType> = {
60
+ optional(): DynamoAttribute<TType, true>;
61
+ };
62
+ export {};
63
+ //# sourceMappingURL=schema-builder.types.dynamodb.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-builder.types.dynamodb.d.ts","sourceRoot":"","sources":["../../src/dynamodb/schema-builder.types.dynamodb.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=schema-builder.types.dynamodb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-builder.types.dynamodb.js","sourceRoot":"","sources":["../../src/dynamodb/schema-builder.types.dynamodb.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ export { DynamoRepository } from './dynamodb/dynamodb.repository.js';
2
+ export { createDynamoSchemaBuilder, materializeDynamoSchema, } from './dynamodb/schema-builder.dynamodb.js';
3
+ //# sourceMappingURL=dynamodb.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dynamodb.d.ts","sourceRoot":"","sources":["../src/dynamodb.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAA;AACpE,OAAO,EACN,yBAAyB,EACzB,uBAAuB,GACvB,MAAM,uCAAuC,CAAA"}
@@ -0,0 +1,3 @@
1
+ export { DynamoRepository } from './dynamodb/dynamodb.repository.js';
2
+ export { createDynamoSchemaBuilder, materializeDynamoSchema, } from './dynamodb/schema-builder.dynamodb.js';
3
+ //# sourceMappingURL=dynamodb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dynamodb.js","sourceRoot":"","sources":["../src/dynamodb.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAA;AACpE,OAAO,EACN,yBAAyB,EACzB,uBAAuB,GACvB,MAAM,uCAAuC,CAAA"}
package/dist/index.d.ts CHANGED
@@ -1,18 +1,12 @@
1
1
  export type { AuditActorReader } from './audit.context.js';
2
2
  export { currentAuditActor, registerAuditActor, } from './audit.context.js';
3
3
  export { DATABASE_SERVICE } from './database.constants.js';
4
- export { defineDatabaseRelations, defineDatabaseSchema, } from './database.helpers.js';
4
+ export { defineDatabaseRelations, defineDatabaseSchema, defineDynamoDatabaseSchema, } from './database.helpers.js';
5
5
  export { DatabaseModule } from './database.module.js';
6
6
  export { DatabaseService } from './database.service.js';
7
- export type { DatabaseModuleOptions, DatabaseOptions, DatabaseRelationsResolver, DatabaseSchemaResolver, DatabaseServiceRegistry, InferDatabase, InferDatabaseConfig, ResolvedDatabase, } from './database.types.js';
8
- export type { MaterializeSchema, MaterializeSchemaWithRelations, } from './drizzle/schema-builder.drizzle.js';
9
- export { createSchemaBuilder, materializeSchema, } from './drizzle/schema-builder.drizzle.js';
10
- export type { ColumnMap, PgSchemaBuilder, RelationsHelpers, RelationsResolverResult, SchemaBuilder, SchemaResolverResult, } from './drizzle/schema-builder.types.drizzle.js';
11
- export type { AfterCommitHook, BeforeCommitHook, } from './drizzle/transaction-context.drizzle.js';
12
- export { getCurrentTx, onAfterCommit, onBeforeCommit, transactionState, } from './drizzle/transaction-context.drizzle.js';
13
- export type { IsolationLevel } from './drizzle/transactional.drizzle.js';
14
- export { Transactional } from './drizzle/transactional.drizzle.js';
7
+ export type { DatabaseModuleOptions, DatabaseServiceRegistry, InferDatabaseConfig, InferDynamoDatabaseConfig, } from './database.types.js';
8
+ export { getCurrentTx, onAfterCommit, onBeforeCommit, transactionState, } from './transaction.context.js';
9
+ export type { IsolationLevel } from './transactional.js';
10
+ export { Transactional } from './transactional.js';
15
11
  export { RecordNotCreatedError, RecordNotFoundError, } from './repository/table-repository.errors.js';
16
- export { TableRepository } from './repository/table-repository.js';
17
- export type { CountOptions, CreateInput, CreateOptions, DeleteOptions, ExistsOptions, FindByIdOptions, FullTableRepository, InferRepositories, InferReturning, PrimaryKeyInput, ReturningColumns, TableRepositoryMethods, UpdateByIdOptions, UpdateInput, UpdateOptions, UpsertOptions, WhereCallback, WhereInput, WhereOperators, } from './repository/table-repository.types.js';
18
12
  //# sourceMappingURL=index.d.ts.map