Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
5fdd524
refactor: structure v1 getDocuments where/order_by/having as typed pr…
QuantumExplorer May 16, 2026
3f27c2b
chore: drop unused ciborium dep from rs-sdk
QuantumExplorer May 16, 2026
3dfa923
chore: regenerate dapi-grpc service stubs + sync Cargo.lock
QuantumExplorer May 16, 2026
1811051
fix: address CodeRabbit review feedback on PR #3654
QuantumExplorer May 16, 2026
f478abb
docs: drop release-phase references from PR-introduced comments
QuantumExplorer May 16, 2026
4253cc9
feat: model HAVING as aggregate filters with COUNT/SUM/AVG/MIN/MAX/TO…
QuantumExplorer May 16, 2026
9845ba1
feat: extend HavingOperator with IN + BETWEEN variants; move TOP/BOTT…
QuantumExplorer May 16, 2026
27371f9
refactor: use InvalidOrderByProperties for order_by parse failures
QuantumExplorer May 16, 2026
ef216a6
refactor: split HAVING aggregate (per-group) from ranking (cross-group)
QuantumExplorer May 16, 2026
c275ea8
feat: extend Select projection with SUM / AVG; restructure as message
QuantumExplorer May 16, 2026
43f480d
chore: drop unneeded return in SUM/AVG rejection arms
QuantumExplorer May 16, 2026
3a0e18b
test: switch document_count integration tests to SelectProjection
QuantumExplorer May 16, 2026
05bf6d9
refactor: short-circuit HAVING rejection before decode; tidy value_to…
QuantumExplorer May 16, 2026
693b546
fix: make v1 GROUP BY routing independent of where-clause order
QuantumExplorer May 16, 2026
d5f5b3a
feat: add MIN/MAX, offset, repeated Select, order-by-aggregate wire s…
QuantumExplorer May 16, 2026
8b69458
fix: address CodeRabbit review feedback on PR #3654 (3 findings)
QuantumExplorer May 16, 2026
d8a6136
fix: address CodeRabbit round-4 review feedback (3 of 5 findings)
QuantumExplorer May 16, 2026
791ac8d
test: align validate_and_route_for_tests gate order with handler
QuantumExplorer May 16, 2026
4c71ef5
chore: regenerate non-Rust dapi-grpc bindings for v1 wire additions
QuantumExplorer May 16, 2026
a7d0c6c
feat: route SDK count proof verification by drive's resolved Document…
QuantumExplorer May 17, 2026
ec06ee6
fix: classify GROUP BY + SELECT DOCUMENTS as InvalidArgument
QuantumExplorer May 17, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions packages/dapi-grpc/build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -354,8 +354,11 @@ fn configure_platform(mut platform: MappingConfig) -> MappingConfig {
.field_attribute("nullifiers", SERDE_WITH_BASE64)
// Get documents fields
.field_attribute("data_contract_id", SERDE_WITH_BYTES)
.field_attribute("where", SERDE_WITH_BYTES)
.field_attribute("order_by", SERDE_WITH_BYTES)
// V0 still ships CBOR for `where` / `order_by`; V1 ships
// typed `repeated WhereClause` / `repeated OrderClause`
// and doesn't need the `bytes`-shaped serde shim.
.field_attribute("GetDocumentsRequestV0.where", SERDE_WITH_BYTES)
.field_attribute("GetDocumentsRequestV0.order_by", SERDE_WITH_BYTES)
// Proof fields
.field_attribute("Proof.grovedb_proof", SERDE_WITH_BYTES)
.field_attribute("Proof.quorum_hash", SERDE_WITH_BYTES)
Expand Down
1,326 changes: 1,255 additions & 71 deletions packages/dapi-grpc/clients/drive/v0/nodejs/drive_pbjs.js

Large diffs are not rendered by default.

1,326 changes: 1,255 additions & 71 deletions packages/dapi-grpc/clients/platform/v0/nodejs/platform_pbjs.js

Large diffs are not rendered by default.

1,515 changes: 1,322 additions & 193 deletions packages/dapi-grpc/clients/platform/v0/nodejs/platform_protoc.js

Large diffs are not rendered by default.

399 changes: 335 additions & 64 deletions packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbobjc.h

Large diffs are not rendered by default.

427 changes: 396 additions & 31 deletions packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbobjc.m

Large diffs are not rendered by default.

1,646 changes: 988 additions & 658 deletions packages/dapi-grpc/clients/platform/v0/python/platform_pb2.py

Large diffs are not rendered by default.

194 changes: 179 additions & 15 deletions packages/dapi-grpc/clients/platform/v0/web/platform_pb.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2272,6 +2272,154 @@ export namespace GetDocumentsRequest {
v1?: GetDocumentsRequest.GetDocumentsRequestV1.AsObject,
}

export class DocumentFieldValue extends jspb.Message {
hasBoolValue(): boolean;
clearBoolValue(): void;
getBoolValue(): boolean;
setBoolValue(value: boolean): void;

hasInt64Value(): boolean;
clearInt64Value(): void;
getInt64Value(): string;
setInt64Value(value: string): void;

hasUint64Value(): boolean;
clearUint64Value(): void;
getUint64Value(): string;
setUint64Value(value: string): void;

hasDoubleValue(): boolean;
clearDoubleValue(): void;
getDoubleValue(): number;
setDoubleValue(value: number): void;

hasText(): boolean;
clearText(): void;
getText(): string;
setText(value: string): void;

hasBytesValue(): boolean;
clearBytesValue(): void;
getBytesValue(): Uint8Array | string;
getBytesValue_asU8(): Uint8Array;
getBytesValue_asB64(): string;
setBytesValue(value: Uint8Array | string): void;

hasList(): boolean;
clearList(): void;
getList(): GetDocumentsRequest.DocumentFieldValue.ValueList | undefined;
setList(value?: GetDocumentsRequest.DocumentFieldValue.ValueList): void;

getVariantCase(): DocumentFieldValue.VariantCase;
serializeBinary(): Uint8Array;
toObject(includeInstance?: boolean): DocumentFieldValue.AsObject;
static toObject(includeInstance: boolean, msg: DocumentFieldValue): DocumentFieldValue.AsObject;
static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
static serializeBinaryToWriter(message: DocumentFieldValue, writer: jspb.BinaryWriter): void;
static deserializeBinary(bytes: Uint8Array): DocumentFieldValue;
static deserializeBinaryFromReader(message: DocumentFieldValue, reader: jspb.BinaryReader): DocumentFieldValue;
}

export namespace DocumentFieldValue {
export type AsObject = {
boolValue: boolean,
int64Value: string,
uint64Value: string,
doubleValue: number,
text: string,
bytesValue: Uint8Array | string,
list?: GetDocumentsRequest.DocumentFieldValue.ValueList.AsObject,
}

export class ValueList extends jspb.Message {
clearValuesList(): void;
getValuesList(): Array<GetDocumentsRequest.DocumentFieldValue>;
setValuesList(value: Array<GetDocumentsRequest.DocumentFieldValue>): void;
addValues(value?: GetDocumentsRequest.DocumentFieldValue, index?: number): GetDocumentsRequest.DocumentFieldValue;

serializeBinary(): Uint8Array;
toObject(includeInstance?: boolean): ValueList.AsObject;
static toObject(includeInstance: boolean, msg: ValueList): ValueList.AsObject;
static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
static serializeBinaryToWriter(message: ValueList, writer: jspb.BinaryWriter): void;
static deserializeBinary(bytes: Uint8Array): ValueList;
static deserializeBinaryFromReader(message: ValueList, reader: jspb.BinaryReader): ValueList;
}

export namespace ValueList {
export type AsObject = {
valuesList: Array<GetDocumentsRequest.DocumentFieldValue.AsObject>,
}
}

export enum VariantCase {
VARIANT_NOT_SET = 0,
BOOL_VALUE = 1,
INT64_VALUE = 2,
UINT64_VALUE = 3,
DOUBLE_VALUE = 4,
TEXT = 5,
BYTES_VALUE = 6,
LIST = 7,
}
}

export class WhereClause extends jspb.Message {
getField(): string;
setField(value: string): void;

getOperator(): GetDocumentsRequest.WhereOperatorMap[keyof GetDocumentsRequest.WhereOperatorMap];
setOperator(value: GetDocumentsRequest.WhereOperatorMap[keyof GetDocumentsRequest.WhereOperatorMap]): void;

hasValue(): boolean;
clearValue(): void;
getValue(): GetDocumentsRequest.DocumentFieldValue | undefined;
setValue(value?: GetDocumentsRequest.DocumentFieldValue): void;

serializeBinary(): Uint8Array;
toObject(includeInstance?: boolean): WhereClause.AsObject;
static toObject(includeInstance: boolean, msg: WhereClause): WhereClause.AsObject;
static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
static serializeBinaryToWriter(message: WhereClause, writer: jspb.BinaryWriter): void;
static deserializeBinary(bytes: Uint8Array): WhereClause;
static deserializeBinaryFromReader(message: WhereClause, reader: jspb.BinaryReader): WhereClause;
}

export namespace WhereClause {
export type AsObject = {
field: string,
operator: GetDocumentsRequest.WhereOperatorMap[keyof GetDocumentsRequest.WhereOperatorMap],
value?: GetDocumentsRequest.DocumentFieldValue.AsObject,
}
}

export class OrderClause extends jspb.Message {
getField(): string;
setField(value: string): void;

getAscending(): boolean;
setAscending(value: boolean): void;

serializeBinary(): Uint8Array;
toObject(includeInstance?: boolean): OrderClause.AsObject;
static toObject(includeInstance: boolean, msg: OrderClause): OrderClause.AsObject;
static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
static serializeBinaryToWriter(message: OrderClause, writer: jspb.BinaryWriter): void;
static deserializeBinary(bytes: Uint8Array): OrderClause;
static deserializeBinaryFromReader(message: OrderClause, reader: jspb.BinaryReader): OrderClause;
}

export namespace OrderClause {
export type AsObject = {
field: string,
ascending: boolean,
}
}

export class GetDocumentsRequestV0 extends jspb.Message {
getDataContractId(): Uint8Array | string;
getDataContractId_asU8(): Uint8Array;
Expand Down Expand Up @@ -2350,15 +2498,15 @@ export namespace GetDocumentsRequest {
getDocumentType(): string;
setDocumentType(value: string): void;

getWhere(): Uint8Array | string;
getWhere_asU8(): Uint8Array;
getWhere_asB64(): string;
setWhere(value: Uint8Array | string): void;
clearWhereClausesList(): void;
getWhereClausesList(): Array<GetDocumentsRequest.WhereClause>;
setWhereClausesList(value: Array<GetDocumentsRequest.WhereClause>): void;
addWhereClauses(value?: GetDocumentsRequest.WhereClause, index?: number): GetDocumentsRequest.WhereClause;

getOrderBy(): Uint8Array | string;
getOrderBy_asU8(): Uint8Array;
getOrderBy_asB64(): string;
setOrderBy(value: Uint8Array | string): void;
clearOrderByList(): void;
getOrderByList(): Array<GetDocumentsRequest.OrderClause>;
setOrderByList(value: Array<GetDocumentsRequest.OrderClause>): void;
addOrderBy(value?: GetDocumentsRequest.OrderClause, index?: number): GetDocumentsRequest.OrderClause;

hasLimit(): boolean;
clearLimit(): void;
Expand Down Expand Up @@ -2390,10 +2538,10 @@ export namespace GetDocumentsRequest {
setGroupByList(value: Array<string>): void;
addGroupBy(value: string, index?: number): string;

getHaving(): Uint8Array | string;
getHaving_asU8(): Uint8Array;
getHaving_asB64(): string;
setHaving(value: Uint8Array | string): void;
clearHavingList(): void;
getHavingList(): Array<GetDocumentsRequest.WhereClause>;
setHavingList(value: Array<GetDocumentsRequest.WhereClause>): void;
addHaving(value?: GetDocumentsRequest.WhereClause, index?: number): GetDocumentsRequest.WhereClause;

getStartCase(): GetDocumentsRequestV1.StartCase;
serializeBinary(): Uint8Array;
Expand All @@ -2410,15 +2558,15 @@ export namespace GetDocumentsRequest {
export type AsObject = {
dataContractId: Uint8Array | string,
documentType: string,
where: Uint8Array | string,
orderBy: Uint8Array | string,
whereClausesList: Array<GetDocumentsRequest.WhereClause.AsObject>,
orderByList: Array<GetDocumentsRequest.OrderClause.AsObject>,
limit: number,
startAfter: Uint8Array | string,
startAt: Uint8Array | string,
prove: boolean,
select: GetDocumentsRequest.GetDocumentsRequestV1.SelectMap[keyof GetDocumentsRequest.GetDocumentsRequestV1.SelectMap],
groupByList: Array<string>,
having: Uint8Array | string,
havingList: Array<GetDocumentsRequest.WhereClause.AsObject>,
}

export interface SelectMap {
Expand All @@ -2435,6 +2583,22 @@ export namespace GetDocumentsRequest {
}
}

export interface WhereOperatorMap {
EQUAL: 0;
GREATER_THAN: 1;
GREATER_THAN_OR_EQUALS: 2;
LESS_THAN: 3;
LESS_THAN_OR_EQUALS: 4;
BETWEEN: 5;
BETWEEN_EXCLUDE_BOUNDS: 6;
BETWEEN_EXCLUDE_LEFT: 7;
BETWEEN_EXCLUDE_RIGHT: 8;
IN: 9;
STARTS_WITH: 10;
}

export const WhereOperator: WhereOperatorMap;

export enum VersionCase {
VERSION_NOT_SET = 0,
V0 = 1,
Expand Down
Loading
Loading