electrodb 2.5.0 → 2.6.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/index.d.ts +118 -14
- package/output +168 -0
- package/package.json +3 -3
- package/src/clauses.js +25 -4
- package/src/entity.js +561 -92
- package/src/errors.js +18 -0
- package/src/service.js +78 -6
- package/src/update.js +24 -4
- package/src/util.js +5 -0
package/index.d.ts
CHANGED
|
@@ -1,8 +1,22 @@
|
|
|
1
|
-
import {ScanCommandInput, GetCommandInput, QueryCommandInput, DeleteCommandInput, BatchWriteCommandInput, UpdateCommandInput, UpdateCommand, PutCommandInput, BatchGetCommandInput, TransactWriteCommandInput, TransactGetCommandInput} from '@aws-sdk/lib-dynamodb';
|
|
2
1
|
export type DocumentClientMethod = (parameters: any) => {promise: () => Promise<any>};
|
|
3
2
|
|
|
4
|
-
type
|
|
5
|
-
|
|
3
|
+
type TransactWriteItem =
|
|
4
|
+
| { Put : { [param: string]: any} }
|
|
5
|
+
| { Update : { [param: string]: any} }
|
|
6
|
+
| { Delete : { [param: string]: any} }
|
|
7
|
+
| { ConditionCheck : { [param: string]: any} };
|
|
8
|
+
|
|
9
|
+
type TransactWriteCommandInput = {
|
|
10
|
+
TransactItems: TransactWriteItem[];
|
|
11
|
+
ClientRequestToken?: string;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
type TransactGetItem =
|
|
15
|
+
| { Get : { [param: string]: any} };
|
|
16
|
+
|
|
17
|
+
type TransactGetCommandInput = {
|
|
18
|
+
TransactItems: TransactGetItem[];
|
|
19
|
+
}
|
|
6
20
|
|
|
7
21
|
export type DocumentClient = {
|
|
8
22
|
get: DocumentClientMethod;
|
|
@@ -860,6 +874,65 @@ interface QueryOperations<A extends string, F extends string, C extends string,
|
|
|
860
874
|
where: WhereClause<A,F,C,S,Item<A,F,C,S,S["attributes"]>,QueryBranches<A,F,C,S,ResponseItem,IndexCompositeAttributes>>
|
|
861
875
|
}
|
|
862
876
|
|
|
877
|
+
type IndexKeyComposite<A extends string, F extends string, C extends string, S extends Schema<A,F,C>, I extends keyof S["indexes"]> =
|
|
878
|
+
& IndexCompositeAttributes<A,F,C,S,I>
|
|
879
|
+
& TableIndexCompositeAttributes<A,F,C,S>;
|
|
880
|
+
|
|
881
|
+
type IndexKeyCompositeWithMaybeTableIndex<A extends string, F extends string, C extends string, S extends Schema<A,F,C>, I extends keyof S["indexes"]> =
|
|
882
|
+
& IndexCompositeAttributes<A,F,C,S,I>
|
|
883
|
+
& Partial<TableIndexCompositeAttributes<A,F,C,S>>;
|
|
884
|
+
|
|
885
|
+
type IndexKeyCompositeFromItem<A extends string, F extends string, C extends string, S extends Schema<A,F,C>, I extends keyof S["indexes"]> =
|
|
886
|
+
& Partial<IndexCompositeAttributes<A,F,C,S,I>>
|
|
887
|
+
& Partial<TableIndexCompositeAttributes<A,F,C,S>>;
|
|
888
|
+
|
|
889
|
+
type ConversionOptions = {
|
|
890
|
+
strict?: 'all' | 'pk' | 'none';
|
|
891
|
+
}
|
|
892
|
+
|
|
893
|
+
export type Conversions<A extends string, F extends string, C extends string, S extends Schema<A,F,C>> = {
|
|
894
|
+
fromComposite: {
|
|
895
|
+
toCursor: (composite: {
|
|
896
|
+
[I in keyof S["indexes"]]: IndexKeyCompositeWithMaybeTableIndex<A,F,C,S,I>
|
|
897
|
+
}[keyof S['indexes']]) => string;
|
|
898
|
+
toKeys: <T = Record<string, string | number>>(composite: {
|
|
899
|
+
[I in keyof S["indexes"]]: IndexKeyCompositeWithMaybeTableIndex<A,F,C,S,I>
|
|
900
|
+
}[keyof S['indexes']], options?: ConversionOptions) => T;
|
|
901
|
+
},
|
|
902
|
+
fromKeys: {
|
|
903
|
+
toComposite: <T = {
|
|
904
|
+
[I in keyof S["indexes"]]: IndexKeyCompositeFromItem<A,F,C,S,I>
|
|
905
|
+
}[keyof S['indexes']]>(keys: Record<string, string | number>) => T;
|
|
906
|
+
toCursor: (keys: Record<string, string | number>) => string;
|
|
907
|
+
},
|
|
908
|
+
fromCursor: {
|
|
909
|
+
toKeys: <T = Record<string, string | number>> (cursor: string) => T;
|
|
910
|
+
toComposite: <T = Partial<{
|
|
911
|
+
[I in keyof S["indexes"]]: IndexKeyCompositeFromItem<A,F,C,S,I>
|
|
912
|
+
}>[keyof S['indexes']]>(cursor: string) => T;
|
|
913
|
+
},
|
|
914
|
+
byAccessPattern: {
|
|
915
|
+
[I in keyof S["indexes"]]: {
|
|
916
|
+
fromKeys: {
|
|
917
|
+
toCursor: (keys: Record<string, string | number>) => string;
|
|
918
|
+
// keys supplied may include the table index, maybe not so composite attributes for the table index are `Partial`
|
|
919
|
+
toComposite: <T = IndexKeyCompositeWithMaybeTableIndex<A,F,C,S,I>>(keys: Record<string, string | number>, options?: ConversionOptions) => T;
|
|
920
|
+
},
|
|
921
|
+
fromCursor: {
|
|
922
|
+
toKeys: <T = Record<string, string | number>>(cursor: string, options?: ConversionOptions) => T;
|
|
923
|
+
// a cursor must have the table index defined along with the keys for the index (if applicable)
|
|
924
|
+
toComposite: <T = IndexKeyComposite<A,F,C,S,I>>(cursor: string, options?: ConversionOptions) => T;
|
|
925
|
+
},
|
|
926
|
+
fromComposite: {
|
|
927
|
+
// a cursor must have the table index defined along with the keys for the index (if applicable)
|
|
928
|
+
toCursor: (composite: IndexKeyComposite<A,F,C,S,I>, options?: ConversionOptions) => string;
|
|
929
|
+
// maybe the only keys you need are for this index and not the
|
|
930
|
+
toKeys: <T = Record<string, string | number>>(composite: IndexKeyCompositeWithMaybeTableIndex<A,F,C,S,I>, options?: ConversionOptions) => T;
|
|
931
|
+
}
|
|
932
|
+
}
|
|
933
|
+
}
|
|
934
|
+
}
|
|
935
|
+
|
|
863
936
|
export type Queries<A extends string, F extends string, C extends string, S extends Schema<A,F,C>> = {
|
|
864
937
|
[I in keyof S["indexes"]]: <CompositeAttributes extends IndexCompositeAttributes<A,F,C,S,I>>(composite: CompositeAttributes) =>
|
|
865
938
|
IndexSKAttributes<A,F,C,S,I> extends infer SK
|
|
@@ -976,6 +1049,25 @@ interface GoBatchGetTerminalOptions<Attributes> {
|
|
|
976
1049
|
logger?: ElectroEventListener;
|
|
977
1050
|
}
|
|
978
1051
|
|
|
1052
|
+
interface ServiceQueryGoTerminalOptions {
|
|
1053
|
+
cursor?: string | null,
|
|
1054
|
+
data?: 'raw' | 'includeKeys' | 'attributes';
|
|
1055
|
+
/** @depricated use 'data=raw' instead */
|
|
1056
|
+
raw?: boolean;
|
|
1057
|
+
/** @depricated use 'data=raw' instead */
|
|
1058
|
+
includeKeys?: boolean;
|
|
1059
|
+
table?: string;
|
|
1060
|
+
limit?: number;
|
|
1061
|
+
params?: object;
|
|
1062
|
+
originalErr?: boolean;
|
|
1063
|
+
ignoreOwnership?: boolean;
|
|
1064
|
+
pages?: number | 'all';
|
|
1065
|
+
listeners?: Array<ElectroEventListener>;
|
|
1066
|
+
logger?: ElectroEventListener;
|
|
1067
|
+
order?: 'asc' | 'desc';
|
|
1068
|
+
hydrate?: boolean;
|
|
1069
|
+
}
|
|
1070
|
+
|
|
979
1071
|
interface GoQueryTerminalOptions<Attributes> {
|
|
980
1072
|
cursor?: string | null,
|
|
981
1073
|
data?: 'raw' | 'includeKeys' | 'attributes';
|
|
@@ -993,6 +1085,7 @@ interface GoQueryTerminalOptions<Attributes> {
|
|
|
993
1085
|
listeners?: Array<ElectroEventListener>;
|
|
994
1086
|
logger?: ElectroEventListener;
|
|
995
1087
|
order?: 'asc' | 'desc';
|
|
1088
|
+
hydrate?: boolean;
|
|
996
1089
|
}
|
|
997
1090
|
|
|
998
1091
|
interface TransactWriteQueryOptions {
|
|
@@ -1109,11 +1202,20 @@ export type EntityParseMultipleItems<A extends string, F extends string, C exten
|
|
|
1109
1202
|
|
|
1110
1203
|
export type ParamTerminal<A extends string, F extends string, C extends string, S extends Schema<A,F,C>, ResponseItem> = <P extends any = any, Options extends ParamTerminalOptions<keyof ResponseItem> = ParamTerminalOptions<keyof ResponseItem>>(options?: Options) => P;
|
|
1111
1204
|
|
|
1112
|
-
export type ServiceQueryRecordsGo<ResponseType, Options =
|
|
1205
|
+
export type ServiceQueryRecordsGo<ResponseType, Options = ServiceQueryGoTerminalOptions> = <T = ResponseType>(options?: Options) => Promise<{ data: T, cursor: string | null }>;
|
|
1113
1206
|
|
|
1114
1207
|
export type QueryRecordsGo<ResponseType, Options = QueryOptions> = <T = ResponseType>(options?: Options) => Promise<{ data: T, cursor: string | null }>;
|
|
1115
1208
|
|
|
1116
|
-
export type UpdateRecordGo<ResponseType> = <T = ResponseType, Options extends UpdateQueryOptions = UpdateQueryOptions>(options?: Options) =>
|
|
1209
|
+
export type UpdateRecordGo<ResponseType> = <T = ResponseType, Options extends UpdateQueryOptions = UpdateQueryOptions>(options?: Options) =>
|
|
1210
|
+
Options extends infer O
|
|
1211
|
+
? 'response' extends keyof O
|
|
1212
|
+
? O['response'] extends 'all_new'
|
|
1213
|
+
? Promise<{data: T}>
|
|
1214
|
+
: O['response'] extends 'all_old'
|
|
1215
|
+
? Promise<{data: T}>
|
|
1216
|
+
: Promise<{data: Partial<T>}>
|
|
1217
|
+
: Promise<{data: Partial<T>}>
|
|
1218
|
+
: never;
|
|
1117
1219
|
|
|
1118
1220
|
export type PutRecordGo<ResponseType, Options = QueryOptions> = <T = ResponseType>(options?: Options) => Promise<{ data: T }>;
|
|
1119
1221
|
|
|
@@ -1122,7 +1224,7 @@ export type DeleteRecordOperationGo<ResponseType, Options = QueryOptions> = <T =
|
|
|
1122
1224
|
export type BatchWriteGo<ResponseType> = <O extends BulkOptions>(options?: O) =>
|
|
1123
1225
|
Promise<{ unprocessed: ResponseType }>
|
|
1124
1226
|
|
|
1125
|
-
export type ParamRecord<Options = ParamOptions> = <P
|
|
1227
|
+
export type ParamRecord<Options = ParamOptions> = <P = Record<string, any>>(options?: Options) => P;
|
|
1126
1228
|
|
|
1127
1229
|
export class ElectroError extends Error {
|
|
1128
1230
|
readonly name: 'ElectroError';
|
|
@@ -1646,6 +1748,7 @@ export interface Schema<A extends string, F extends string, C extends string> {
|
|
|
1646
1748
|
};
|
|
1647
1749
|
readonly indexes: {
|
|
1648
1750
|
[accessPattern: string]: {
|
|
1751
|
+
readonly project?: 'keys_only';
|
|
1649
1752
|
readonly index?: string;
|
|
1650
1753
|
readonly type?: 'clustered' | 'isolated';
|
|
1651
1754
|
readonly collection?: AccessPatternCollection<C>;
|
|
@@ -2384,13 +2487,13 @@ export class Entity<A extends string, F extends string, C extends string, S exte
|
|
|
2384
2487
|
create(record: PutItem<A,F,C,S>): PutRecordOperationOptions<A,F,C,S, ResponseItem<A,F,C,S>>
|
|
2385
2488
|
|
|
2386
2489
|
update(key: AllTableIndexCompositeAttributes<A,F,C,S>): {
|
|
2387
|
-
set: SetRecord<A,F,C,S, SetItem<A,F,C,S>, TableIndexCompositeAttributes<A,F,C,S>, ResponseItem<A,F,C,S
|
|
2388
|
-
remove: RemoveRecord<A,F,C,S, RemoveItem<A,F,C,S>, TableIndexCompositeAttributes<A,F,C,S>, ResponseItem<A,F,C,S
|
|
2389
|
-
add: SetRecord<A,F,C,S, AddItem<A,F,C,S>, TableIndexCompositeAttributes<A,F,C,S>, ResponseItem<A,F,C,S
|
|
2390
|
-
subtract: SetRecord<A,F,C,S, SubtractItem<A,F,C,S>, TableIndexCompositeAttributes<A,F,C,S>, ResponseItem<A,F,C,S
|
|
2391
|
-
append: SetRecord<A,F,C,S, AppendItem<A,F,C,S>, TableIndexCompositeAttributes<A,F,C,S>, ResponseItem<A,F,C,S
|
|
2392
|
-
delete: SetRecord<A,F,C,S, DeleteItem<A,F,C,S>, TableIndexCompositeAttributes<A,F,C,S>, ResponseItem<A,F,C,S
|
|
2393
|
-
data: DataUpdateMethodRecord<A,F,C,S, Item<A,F,C,S,S["attributes"]>, TableIndexCompositeAttributes<A,F,C,S>, ResponseItem<A,F,C,S
|
|
2490
|
+
set: SetRecord<A,F,C,S, SetItem<A,F,C,S>, TableIndexCompositeAttributes<A,F,C,S>, Partial<ResponseItem<A,F,C,S>>>;
|
|
2491
|
+
remove: RemoveRecord<A,F,C,S, RemoveItem<A,F,C,S>, TableIndexCompositeAttributes<A,F,C,S>, Partial<ResponseItem<A,F,C,S>>>;
|
|
2492
|
+
add: SetRecord<A,F,C,S, AddItem<A,F,C,S>, TableIndexCompositeAttributes<A,F,C,S>, Partial<ResponseItem<A,F,C,S>>>;
|
|
2493
|
+
subtract: SetRecord<A,F,C,S, SubtractItem<A,F,C,S>, TableIndexCompositeAttributes<A,F,C,S>, Partial<ResponseItem<A,F,C,S>>>;
|
|
2494
|
+
append: SetRecord<A,F,C,S, AppendItem<A,F,C,S>, TableIndexCompositeAttributes<A,F,C,S>, Partial<ResponseItem<A,F,C,S>>>;
|
|
2495
|
+
delete: SetRecord<A,F,C,S, DeleteItem<A,F,C,S>, TableIndexCompositeAttributes<A,F,C,S>, Partial<ResponseItem<A,F,C,S>>>;
|
|
2496
|
+
data: DataUpdateMethodRecord<A,F,C,S, Item<A,F,C,S,S["attributes"]>, TableIndexCompositeAttributes<A,F,C,S>, Partial<ResponseItem<A,F,C,S>>>;
|
|
2394
2497
|
};
|
|
2395
2498
|
patch(key: AllTableIndexCompositeAttributes<A,F,C,S>): {
|
|
2396
2499
|
set: SetRecord<A,F,C,S, SetItem<A,F,C,S>, TableIndexCompositeAttributes<A,F,C,S>, ResponseItem<A,F,C,S>>;
|
|
@@ -2408,6 +2511,7 @@ export class Entity<A extends string, F extends string, C extends string, S exte
|
|
|
2408
2511
|
|
|
2409
2512
|
scan: RecordsActionOptions<A,F,C,S, ResponseItem<A,F,C,S>[], TableIndexCompositeAttributes<A,F,C,S>>;
|
|
2410
2513
|
query: Queries<A,F,C,S>;
|
|
2514
|
+
conversions: Conversions<A,F,C,S>;
|
|
2411
2515
|
|
|
2412
2516
|
parse<Options extends ParseOptions<keyof ResponseItem<A,F,C,S>>>(item: ParseSingleInput, options?: Options):
|
|
2413
2517
|
Options extends ParseOptions<infer Attr>
|
|
@@ -2492,7 +2596,7 @@ type TransactWriteExtractedType<T extends readonly any[], A extends readonly any
|
|
|
2492
2596
|
type TransactGetExtractedType<T extends readonly any[], A extends readonly any[] = []> =
|
|
2493
2597
|
T extends [infer F, ...infer R] ?
|
|
2494
2598
|
F extends CommittedTransactionResult<infer V, TransactGetItem>
|
|
2495
|
-
?
|
|
2599
|
+
? TransactGetExtractedType<R, [...A, TransactionItem<V>]>
|
|
2496
2600
|
: never
|
|
2497
2601
|
: A
|
|
2498
2602
|
|
package/output
ADDED
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
"target": "top",
|
|
2
|
+
"target": "byOrganization",
|
|
3
|
+
"target": "byCategory",
|
|
4
|
+
"target": "top",
|
|
5
|
+
"target": "byOrganization",
|
|
6
|
+
"target": "byCategory",
|
|
7
|
+
"target": "top",
|
|
8
|
+
"target": "byOrganization",
|
|
9
|
+
"target": "byCategory",
|
|
10
|
+
"target": "top",
|
|
11
|
+
"target": "byOrganization",
|
|
12
|
+
"target": "byCategory",
|
|
13
|
+
"target": "top",
|
|
14
|
+
"target": "byOrganization",
|
|
15
|
+
"target": "byCategory",
|
|
16
|
+
"target": "top",
|
|
17
|
+
"target": "byOrganization",
|
|
18
|
+
"target": "byCategory",
|
|
19
|
+
"target": "top",
|
|
20
|
+
"target": "byOrganization",
|
|
21
|
+
"target": "byCategory",
|
|
22
|
+
"target": "top",
|
|
23
|
+
"target": "byOrganization",
|
|
24
|
+
"target": "byCategory",
|
|
25
|
+
"target": "top",
|
|
26
|
+
"target": "byOrganization",
|
|
27
|
+
"target": "byCategory",
|
|
28
|
+
"target": "top",
|
|
29
|
+
"target": "byOrganization",
|
|
30
|
+
"target": "byCategory",
|
|
31
|
+
"target": "top",
|
|
32
|
+
"target": "byOrganization",
|
|
33
|
+
"target": "byCategory",
|
|
34
|
+
"target": "top",
|
|
35
|
+
"target": "byOrganization",
|
|
36
|
+
"target": "byCategory",
|
|
37
|
+
"target": "top",
|
|
38
|
+
"target": "byOrganization",
|
|
39
|
+
"target": "byCategory",
|
|
40
|
+
"target": "top",
|
|
41
|
+
"target": "byOrganization",
|
|
42
|
+
"target": "byCategory",
|
|
43
|
+
"target": "top",
|
|
44
|
+
"target": "byOrganization",
|
|
45
|
+
"target": "byCategory",
|
|
46
|
+
"target": "top",
|
|
47
|
+
"target": "byOrganization",
|
|
48
|
+
"target": "byCategory",
|
|
49
|
+
"target": "top",
|
|
50
|
+
"target": "byOrganization",
|
|
51
|
+
"target": "byCategory",
|
|
52
|
+
"target": "top",
|
|
53
|
+
"target": "byOrganization",
|
|
54
|
+
"target": "byCategory",
|
|
55
|
+
"target": "top",
|
|
56
|
+
"target": "byOrganization",
|
|
57
|
+
"target": "byCategory",
|
|
58
|
+
"target": "top",
|
|
59
|
+
"target": "byOrganization",
|
|
60
|
+
"target": "byCategory",
|
|
61
|
+
"target": "top",
|
|
62
|
+
"target": "byOrganization",
|
|
63
|
+
"target": "byCategory",
|
|
64
|
+
"target": "top",
|
|
65
|
+
"target": "byOrganization",
|
|
66
|
+
"target": "byCategory",
|
|
67
|
+
"target": "top",
|
|
68
|
+
"target": "byOrganization",
|
|
69
|
+
"target": "byCategory",
|
|
70
|
+
"target": "top",
|
|
71
|
+
"target": "byOrganization",
|
|
72
|
+
"target": "byCategory",
|
|
73
|
+
"target": "top",
|
|
74
|
+
"target": "byOrganization",
|
|
75
|
+
"target": "byCategory",
|
|
76
|
+
"target": "top",
|
|
77
|
+
"target": "byOrganization",
|
|
78
|
+
"target": "byCategory",
|
|
79
|
+
"target": "top",
|
|
80
|
+
"target": "byOrganization",
|
|
81
|
+
"target": "byCategory",
|
|
82
|
+
"target": "top",
|
|
83
|
+
"target": "byOrganization",
|
|
84
|
+
"target": "byCategory",
|
|
85
|
+
"target": "top",
|
|
86
|
+
"target": "byOrganization",
|
|
87
|
+
"target": "byCategory",
|
|
88
|
+
"target": "top",
|
|
89
|
+
"target": "byOrganization",
|
|
90
|
+
"target": "byCategory",
|
|
91
|
+
"target": "top",
|
|
92
|
+
"target": "byOrganization",
|
|
93
|
+
"target": "byCategory",
|
|
94
|
+
"target": "top",
|
|
95
|
+
"target": "byOrganization",
|
|
96
|
+
"target": "byCategory",
|
|
97
|
+
"target": "top",
|
|
98
|
+
"target": "byOrganization",
|
|
99
|
+
"target": "byCategory",
|
|
100
|
+
"target": "top",
|
|
101
|
+
"target": "byOrganization",
|
|
102
|
+
"target": "byCategory",
|
|
103
|
+
"target": "top",
|
|
104
|
+
"target": "byOrganization",
|
|
105
|
+
"target": "byCategory",
|
|
106
|
+
"target": "top",
|
|
107
|
+
"target": "byOrganization",
|
|
108
|
+
"target": "byCategory",
|
|
109
|
+
"target": "top",
|
|
110
|
+
"target": "byOrganization",
|
|
111
|
+
"target": "byCategory",
|
|
112
|
+
"target": "top",
|
|
113
|
+
"target": "byOrganization",
|
|
114
|
+
"target": "byCategory",
|
|
115
|
+
"target": "top",
|
|
116
|
+
"target": "byOrganization",
|
|
117
|
+
"target": "byCategory",
|
|
118
|
+
"target": "top",
|
|
119
|
+
"target": "byOrganization",
|
|
120
|
+
"target": "byCategory",
|
|
121
|
+
"target": "top",
|
|
122
|
+
"target": "byOrganization",
|
|
123
|
+
"target": "byCategory",
|
|
124
|
+
"target": "top",
|
|
125
|
+
"target": "byOrganization",
|
|
126
|
+
"target": "byCategory",
|
|
127
|
+
"target": "top",
|
|
128
|
+
"target": "byOrganization",
|
|
129
|
+
"target": "byCategory",
|
|
130
|
+
"target": "top",
|
|
131
|
+
"target": "byOrganization",
|
|
132
|
+
"target": "byCategory",
|
|
133
|
+
"target": "top",
|
|
134
|
+
"target": "byOrganization",
|
|
135
|
+
"target": "byCategory",
|
|
136
|
+
"target": "top",
|
|
137
|
+
"target": "byOrganization",
|
|
138
|
+
"target": "byCategory",
|
|
139
|
+
"target": "top",
|
|
140
|
+
"target": "byOrganization",
|
|
141
|
+
"target": "byCategory",
|
|
142
|
+
"target": "top",
|
|
143
|
+
"target": "byOrganization",
|
|
144
|
+
"target": "byCategory",
|
|
145
|
+
"target": "top",
|
|
146
|
+
"target": "byOrganization",
|
|
147
|
+
"target": "byCategory",
|
|
148
|
+
"target": "top",
|
|
149
|
+
"target": "byOrganization",
|
|
150
|
+
"target": "byCategory",
|
|
151
|
+
"target": "top",
|
|
152
|
+
"target": "byOrganization",
|
|
153
|
+
"target": "byCategory",
|
|
154
|
+
"target": "top",
|
|
155
|
+
"target": "byOrganization",
|
|
156
|
+
"target": "byCategory",
|
|
157
|
+
"target": "top",
|
|
158
|
+
"target": "byOrganization",
|
|
159
|
+
"target": "byCategory",
|
|
160
|
+
"target": "top",
|
|
161
|
+
"target": "byOrganization",
|
|
162
|
+
"target": "byCategory",
|
|
163
|
+
"target": "top",
|
|
164
|
+
"target": "byOrganization",
|
|
165
|
+
"target": "byCategory",
|
|
166
|
+
"target": "top",
|
|
167
|
+
"target": "byOrganization",
|
|
168
|
+
"target": "byCategory",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "electrodb",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.6.0",
|
|
4
4
|
"description": "A library to more easily create and interact with multiple entities and heretical relationships in dynamodb",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -43,9 +43,9 @@
|
|
|
43
43
|
"moment": "2.24.0",
|
|
44
44
|
"nyc": "^15.1.0",
|
|
45
45
|
"source-map-support": "^0.5.19",
|
|
46
|
-
"ts-node": "^10.
|
|
46
|
+
"ts-node": "^10.9.1",
|
|
47
47
|
"tsd": "^0.21.0",
|
|
48
|
-
"typescript": "^4.
|
|
48
|
+
"typescript": "^4.9.5",
|
|
49
49
|
"uuid": "7.0.1"
|
|
50
50
|
},
|
|
51
51
|
"keywords": [
|
package/src/clauses.js
CHANGED
|
@@ -52,7 +52,7 @@ let clauses = {
|
|
|
52
52
|
}
|
|
53
53
|
})
|
|
54
54
|
.whenOptions(({ options, state }) => {
|
|
55
|
-
if (!options.ignoreOwnership) {
|
|
55
|
+
if (!options.ignoreOwnership && !state.getParams()) {
|
|
56
56
|
state.query.options.expressions.names = {
|
|
57
57
|
...state.query.options.expressions.names,
|
|
58
58
|
...state.query.options.identifiers.names,
|
|
@@ -90,7 +90,7 @@ let clauses = {
|
|
|
90
90
|
.setCollection(collection)
|
|
91
91
|
.setPK(entity._expectFacets(facets, pk))
|
|
92
92
|
.whenOptions(({ options, state }) => {
|
|
93
|
-
if (!options.ignoreOwnership) {
|
|
93
|
+
if (!options.ignoreOwnership && !state.getParams()) {
|
|
94
94
|
state.query.options.expressions.names = {
|
|
95
95
|
...state.query.options.expressions.names,
|
|
96
96
|
...state.query.options.identifiers.names,
|
|
@@ -121,7 +121,7 @@ let clauses = {
|
|
|
121
121
|
try {
|
|
122
122
|
return state.setMethod(MethodTypes.scan)
|
|
123
123
|
.whenOptions(({ state, options }) => {
|
|
124
|
-
if (!options.ignoreOwnership) {
|
|
124
|
+
if (!options.ignoreOwnership && !state.getParams()) {
|
|
125
125
|
state.unsafeApplyFilter(FilterOperationNames.eq, entity.identifiers.entity, entity.getName());
|
|
126
126
|
state.unsafeApplyFilter(FilterOperationNames.eq, entity.identifiers.version, entity.getVersion());
|
|
127
127
|
}
|
|
@@ -247,6 +247,12 @@ let clauses = {
|
|
|
247
247
|
.ifSK(() => {
|
|
248
248
|
entity._expectFacets(record, attributes.sk);
|
|
249
249
|
state.setSK(entity._buildQueryFacets(record, attributes.sk));
|
|
250
|
+
})
|
|
251
|
+
.whenOptions(({ state, options }) => {
|
|
252
|
+
if (!state.getParams()) {
|
|
253
|
+
state.query.update.set(entity.identifiers.entity, entity.getName());
|
|
254
|
+
state.query.update.set(entity.identifiers.version, entity.getVersion());
|
|
255
|
+
}
|
|
250
256
|
});
|
|
251
257
|
} catch(err) {
|
|
252
258
|
state.setError(err);
|
|
@@ -526,7 +532,7 @@ let clauses = {
|
|
|
526
532
|
}
|
|
527
533
|
|
|
528
534
|
state.whenOptions(({ options, state }) => {
|
|
529
|
-
if (state.query.options.indexType === IndexTypes.clustered && Object.keys(composites).length < sk.length && !options.ignoreOwnership) {
|
|
535
|
+
if (state.query.options.indexType === IndexTypes.clustered && Object.keys(composites).length < sk.length && !options.ignoreOwnership && !state.getParams()) {
|
|
530
536
|
state.unsafeApplyFilter(FilterOperationNames.eq, entity.identifiers.entity, entity.getName())
|
|
531
537
|
.unsafeApplyFilter(FilterOperationNames.eq, entity.identifiers.version, entity.getVersion());
|
|
532
538
|
}
|
|
@@ -714,7 +720,9 @@ let clauses = {
|
|
|
714
720
|
provided: [ state.getOptions(), state.query.options, options ],
|
|
715
721
|
context: { operation: options._isTransaction ? MethodTypes.transactWrite : undefined }
|
|
716
722
|
});
|
|
723
|
+
|
|
717
724
|
state.applyWithOptions(normalizedOptions);
|
|
725
|
+
|
|
718
726
|
let results;
|
|
719
727
|
switch (method) {
|
|
720
728
|
case MethodTypes.query: {
|
|
@@ -741,6 +749,8 @@ let clauses = {
|
|
|
741
749
|
delete results.ExpressionAttributeValues;
|
|
742
750
|
}
|
|
743
751
|
|
|
752
|
+
state.setParams(results);
|
|
753
|
+
|
|
744
754
|
if (options._returnOptions) {
|
|
745
755
|
return {
|
|
746
756
|
params: results,
|
|
@@ -816,6 +826,17 @@ class ChainState {
|
|
|
816
826
|
this.hasSortKey = hasSortKey;
|
|
817
827
|
this.prev = null;
|
|
818
828
|
this.self = null;
|
|
829
|
+
this.params = null;
|
|
830
|
+
}
|
|
831
|
+
|
|
832
|
+
getParams() {
|
|
833
|
+
return this.params;
|
|
834
|
+
}
|
|
835
|
+
|
|
836
|
+
setParams(params) {
|
|
837
|
+
if (params) {
|
|
838
|
+
this.params = params;
|
|
839
|
+
}
|
|
819
840
|
}
|
|
820
841
|
|
|
821
842
|
init(entity, allClauses, currentClause) {
|