Skip to content

Commit f9eb890

Browse files
fix(read-many): return type for projectionExpression
1 parent dd7aeee commit f9eb890

File tree

4 files changed

+14
-11
lines changed

4 files changed

+14
-11
lines changed

src/dynamo/request/query/query.request.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@ export class QueryRequest<T, T2 = T> extends ReadManyRequest<
1919
DynamoDB.QueryInput,
2020
DynamoDB.QueryOutput,
2121
QueryResponse<T2>,
22-
QueryRequest<T, T2>
22+
QueryRequest<T, T2>,
23+
QueryRequest<T, Partial<T>>
2324
> {
2425
protected readonly logger: Logger
2526

@@ -45,7 +46,7 @@ export class QueryRequest<T, T2 = T> extends ReadManyRequest<
4546
/**
4647
* used to define some condition for the sort key, use the secondary index to query based on a custom index
4748
*/
48-
whereSortKey(): SortKeyConditionFunction<QueryRequest<T, T2>> {
49+
whereSortKey(): SortKeyConditionFunction<this> {
4950
let sortKey: keyof T | null
5051
if (this.secondaryIndex) {
5152
if (!this.secondaryIndex.sortKey) {

src/dynamo/request/read-many.request.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import { or } from '../expression/logical-operator/public.api'
1414
import { getTableName } from '../get-table-name.function'
1515
import { ReadManyRequest } from './read-many.request'
1616

17-
class TestRequest<T> extends ReadManyRequest<T, T, any, any, any, any> {
17+
class TestRequest<T> extends ReadManyRequest<T, T, any, any, any, any, any> {
1818
constructor(modelClazz: ModelConstructor<T>) {
1919
super(<any>null, modelClazz)
2020
this.logger = createLogger('TestRequest', modelClazz)

src/dynamo/request/read-many.request.ts

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,9 @@ export abstract class ReadManyRequest<
3434
I extends DynamoDB.QueryInput | DynamoDB.ScanInput,
3535
O extends DynamoDB.QueryOutput | DynamoDB.ScanOutput,
3636
Z extends QueryResponse<T2> | ScanResponse<T2>,
37-
R extends QueryRequest<T, T2> | ScanRequest<T, T2>
38-
> extends StandardRequest<T, T2, I, ReadManyRequest<T, T2, I, O, Z, R>> {
37+
R extends QueryRequest<T, T2> | ScanRequest<T, T2>,
38+
R2 extends QueryRequest<T, Partial<T>> | ScanRequest<T, Partial<T>>
39+
> extends StandardRequest<T, T2, I, ReadManyRequest<T, T2, I, O, Z, R, R2>> {
3940
/** Infinite limit will remove the Limit param from request params when calling ReadManyRequest.limit(ReadManyRequest.INFINITE_LIMIT) */
4041
static INFINITE_LIMIT = -1
4142

@@ -112,7 +113,7 @@ export abstract class ReadManyRequest<
112113
* Specifies the list of model attributes to be returned from the table instead of returning the entire document
113114
* @param attributesToGet List of model attributes to be returned
114115
*/
115-
projectionExpression(...attributesToGet: Array<keyof T | string>): ReadManyRequest<T, Partial<T>, I, O, Z, R> {
116+
projectionExpression(...attributesToGet: Array<keyof T | string>): R2 {
116117
addProjectionExpressionParam(attributesToGet, this.params, this.metadata)
117118
return <any>this
118119
}
@@ -121,12 +122,12 @@ export abstract class ReadManyRequest<
121122
* add a condition for propertyPath
122123
* @example req.whereAttribute('path.to.prop').eq('value')
123124
*/
124-
whereAttribute<K extends keyof T>(attributePath: K): RequestConditionFunctionTyped<R, T, K>
125-
whereAttribute(attributePath: string): RequestConditionFunction<R, T>
125+
whereAttribute<K extends keyof T>(attributePath: K): RequestConditionFunctionTyped<this, T, K>
126+
whereAttribute(attributePath: string): RequestConditionFunction<this, T>
126127
whereAttribute<K extends keyof T>(
127128
attributePath: string | K,
128-
): RequestConditionFunction<R, T> | RequestConditionFunctionTyped<R, T, K> {
129-
return addCondition<R, T, any>('FilterExpression', attributePath, <any>this, this.metadata)
129+
): RequestConditionFunction<this, T> | RequestConditionFunctionTyped<this, T, K> {
130+
return addCondition<this, T, any>('FilterExpression', attributePath, this, this.metadata)
130131
}
131132

132133
/**

src/dynamo/request/scan/scan.request.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@ export class ScanRequest<T, T2 = T> extends ReadManyRequest<
1717
DynamoDB.ScanInput,
1818
DynamoDB.ScanOutput,
1919
ScanResponse<T2>,
20-
ScanRequest<T, T2>
20+
ScanRequest<T, T2>,
21+
ScanRequest<T, Partial<T>>
2122
> {
2223
protected readonly logger: Logger
2324

0 commit comments

Comments
 (0)