Skip to content

Commit e3a1cd5

Browse files
authored
feat(sdk)!: [NET-1464] Remove orderBy functionality from StreamrClient#searchStreams() (#3131)
**This is a breaking changes at this changes the StreamrClient API** Note that the `id_gt` relies on the fact that `StreamPermission` ids are prefixed with stream ids in The Graph. We'll change that in a follow-up PR (#3132).
1 parent 6128717 commit e3a1cd5

File tree

7 files changed

+12
-78
lines changed

7 files changed

+12
-78
lines changed

CHANGELOG.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,8 @@ Changes before Tatum release are not documented in this file.
3636
#### Removed
3737

3838
- **BREAKING CHANGE**: Remove lit protocol integration and related config options `encryption.litProtocolEnabled` and `encryption.litProtocolLogging` (https://github.com/streamr-dev/network/pull/3036)
39-
- **BREAKING CHANGE**: Remove `StreamrClient.generateEthereumAccount()` in favour of `EthereumKeyPairIdentity.generate()`
39+
- **BREAKING CHANGE**: Remove `StreamrClient#generateEthereumAccount()` in favour of `EthereumKeyPairIdentity#generate()`
40+
- **BREAKING CHANGE**: Remove `orderBy` parameter from `StreamrClient#searchStreams()` (https://github.com/streamr-dev/network/pull/3131)
4041

4142
#### Fixed
4243

packages/sdk/src/StreamrClient.ts

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ import { OperatorRegistry } from './contracts/OperatorRegistry'
3939
import { StorageNodeMetadata, StorageNodeRegistry } from './contracts/StorageNodeRegistry'
4040
import { StreamRegistry } from './contracts/StreamRegistry'
4141
import { StreamStorageRegistry } from './contracts/StreamStorageRegistry'
42-
import { SearchStreamsOrderBy, SearchStreamsPermissionFilter, toInternalSearchStreamsPermissionFilter } from './contracts/searchStreams'
42+
import { SearchStreamsPermissionFilter, toInternalSearchStreamsPermissionFilter } from './contracts/searchStreams'
4343
import { GroupKey } from './encryption/GroupKey'
4444
import { LocalGroupKeyStore, UpdateEncryptionKeyOptions } from './encryption/LocalGroupKeyStore'
4545
import { PublisherKeyExchange } from './encryption/PublisherKeyExchange'
@@ -438,21 +438,18 @@ export class StreamrClient {
438438
*
439439
* @param term - a search term that should be part of the stream id of a result
440440
* @param permissionFilter - permissions that should be in effect for a result
441-
* @param orderBy - the default is ascending order by stream id field
442441
*/
443442
searchStreams(
444443
term: string | undefined,
445-
permissionFilter: SearchStreamsPermissionFilter | undefined,
446-
orderBy: SearchStreamsOrderBy = { field: 'id', direction: 'asc' }
444+
permissionFilter: SearchStreamsPermissionFilter | undefined
447445
): AsyncIterable<Stream> {
448446
logger.debug('Search for streams', { term, permissionFilter })
449447
if ((term === undefined) && (permissionFilter === undefined)) {
450448
throw new Error('Requires a search term or a permission filter')
451449
}
452450
const streamIds = this.streamRegistry.searchStreams(
453451
term,
454-
(permissionFilter !== undefined) ? toInternalSearchStreamsPermissionFilter(permissionFilter) : undefined,
455-
orderBy
452+
(permissionFilter !== undefined) ? toInternalSearchStreamsPermissionFilter(permissionFilter) : undefined
456453
)
457454
return map(streamIds, (id) => new Stream(id, this))
458455
}

packages/sdk/src/contracts/StreamRegistry.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ import { Mapping, createCacheMap } from '../utils/Mapping'
4545
import { ChainEventPoller } from './ChainEventPoller'
4646
import { ContractFactory } from './ContractFactory'
4747
import { ObservableContract, initContractEventGateway, waitForTx } from './contract'
48-
import { InternalSearchStreamsPermissionFilter, SearchStreamsOrderBy, searchStreams as _searchStreams } from './searchStreams'
48+
import { InternalSearchStreamsPermissionFilter, searchStreams as _searchStreams } from './searchStreams'
4949

5050
/*
5151
* On-chain registry of stream metadata and permissions.
@@ -297,12 +297,10 @@ export class StreamRegistry {
297297
async* searchStreams(
298298
term: string | undefined,
299299
permissionFilter: InternalSearchStreamsPermissionFilter | undefined,
300-
orderBy: SearchStreamsOrderBy
301300
): AsyncGenerator<StreamID> {
302301
const queryResult = _searchStreams(
303302
term,
304303
permissionFilter,
305-
orderBy,
306304
this.theGraphClient)
307305
for await (const item of queryResult) {
308306
const id = toStreamID(item.stream.id)

packages/sdk/src/contracts/searchStreams.ts

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,6 @@ export interface SearchStreamsPermissionFilter {
1515

1616
export type InternalSearchStreamsPermissionFilter = ChangeFieldType<SearchStreamsPermissionFilter, 'userId', UserID>
1717

18-
export interface SearchStreamsOrderBy {
19-
field: 'id' | 'createdAt' | 'updatedAt'
20-
direction: 'asc' | 'desc'
21-
}
22-
2318
export type SearchStreamsResultItem = {
2419
id: string
2520
stream: StreamQueryResult
@@ -35,11 +30,10 @@ export const toInternalSearchStreamsPermissionFilter = (filter: SearchStreamsPer
3530
export async function* searchStreams(
3631
term: string | undefined,
3732
permissionFilter: InternalSearchStreamsPermissionFilter | undefined,
38-
orderBy: SearchStreamsOrderBy,
3933
theGraphClient: TheGraphClient,
4034
): AsyncGenerator<SearchStreamsResultItem> {
4135
const backendResults = theGraphClient.queryEntities<SearchStreamsResultItem>(
42-
(lastId: string, pageSize: number) => buildQuery(term, permissionFilter, orderBy, lastId, pageSize)
36+
(lastId: string, pageSize: number) => buildQuery(term, permissionFilter, lastId, pageSize)
4337
)
4438
/*
4539
* There can be orphaned permission entities if a stream is deleted (currently
@@ -85,7 +79,6 @@ export async function* searchStreams(
8579
const buildQuery = (
8680
term: string | undefined,
8781
permissionFilter: InternalSearchStreamsPermissionFilter | undefined,
88-
orderBy: SearchStreamsOrderBy,
8982
lastId: string,
9083
pageSize: number
9184
): GraphQLQuery => {
@@ -120,8 +113,7 @@ const buildQuery = (
120113
) {
121114
streamPermissions (
122115
first: ${pageSize},
123-
orderBy: "stream__${orderBy.field}",
124-
orderDirection: "${orderBy.direction}",
116+
orderBy: "stream__id",
125117
${TheGraphClient.createWhereClause(variables)}
126118
) {
127119
id

packages/sdk/src/exports.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ export {
2323
export type { StreamCreationEvent } from './contracts/StreamRegistry'
2424
export type { StorageNodeAssignmentEvent } from './contracts/StreamStorageRegistry'
2525
export type { StorageNodeMetadata } from './contracts/StorageNodeRegistry'
26-
export type { SearchStreamsPermissionFilter, SearchStreamsOrderBy } from './contracts/searchStreams'
26+
export type { SearchStreamsPermissionFilter } from './contracts/searchStreams'
2727
export {
2828
type StreamrClientConfig,
2929
type ConnectionInfo,

packages/sdk/test/end-to-end/searchStreams.test.ts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { createTestPrivateKey, randomUserId } from '@streamr/test-utils'
2-
import { collect } from '@streamr/utils'
2+
import { collect, StreamID } from '@streamr/utils'
33
import { Stream } from '../../src/Stream'
44
import { StreamrClient } from '../../src/StreamrClient'
55
import { SearchStreamsPermissionFilter } from '../../src/contracts/searchStreams'
@@ -31,11 +31,9 @@ describe('searchStreams', () => {
3131
return streams
3232
}
3333

34-
const searchStreamIds = async (searchTerm: string, permissionFilter?: SearchStreamsPermissionFilter) => {
34+
const searchStreamIds = async (searchTerm: string, permissionFilter?: SearchStreamsPermissionFilter): Promise<StreamID[]> => {
3535
const streams = client.searchStreams(searchTerm, permissionFilter)
36-
const ids = (await collect(streams)).map((stream) => stream.id)
37-
ids.sort()
38-
return ids
36+
return (await collect(streams)).map((stream) => stream.id)
3937
}
4038

4139
beforeAll(async () => {

packages/sdk/test/unit/searchStreams.test.ts

Lines changed: 0 additions & 52 deletions
This file was deleted.

0 commit comments

Comments
 (0)