@@ -65,6 +65,10 @@ export type RealtimeRunsParams = {
65
65
createdAt ?: string ;
66
66
} ;
67
67
68
+ export type RealtimeRequestOptions = {
69
+ skipColumns ?: string [ ] ;
70
+ } ;
71
+
68
72
export class RealtimeClient {
69
73
private redis : RedisClient ;
70
74
private expiryTimeInSeconds : number ;
@@ -124,15 +128,17 @@ export class RealtimeClient {
124
128
url : URL | string ,
125
129
environment : RealtimeEnvironment ,
126
130
runId : string ,
131
+ requestOptions ?: RealtimeRequestOptions ,
127
132
clientVersion ?: string
128
133
) {
129
- return this . #streamRunsWhere( url , environment , `id='${ runId } '` , clientVersion ) ;
134
+ return this . #streamRunsWhere( url , environment , `id='${ runId } '` , requestOptions , clientVersion ) ;
130
135
}
131
136
132
137
async streamBatch (
133
138
url : URL | string ,
134
139
environment : RealtimeEnvironment ,
135
140
batchId : string ,
141
+ requestOptions ?: RealtimeRequestOptions ,
136
142
clientVersion ?: string
137
143
) {
138
144
const whereClauses : string [ ] = [
@@ -142,13 +148,14 @@ export class RealtimeClient {
142
148
143
149
const whereClause = whereClauses . join ( " AND " ) ;
144
150
145
- return this . #streamRunsWhere( url , environment , whereClause , clientVersion ) ;
151
+ return this . #streamRunsWhere( url , environment , whereClause , requestOptions , clientVersion ) ;
146
152
}
147
153
148
154
async streamRuns (
149
155
url : URL | string ,
150
156
environment : RealtimeEnvironment ,
151
157
params : RealtimeRunsParams ,
158
+ requestOptions ?: RealtimeRequestOptions ,
152
159
clientVersion ?: string
153
160
) {
154
161
const whereClauses : string [ ] = [ `"runtimeEnvironmentId"='${ environment . id } '` ] ;
@@ -165,7 +172,13 @@ export class RealtimeClient {
165
172
166
173
const whereClause = whereClauses . join ( " AND " ) ;
167
174
168
- const response = await this . #streamRunsWhere( url , environment , whereClause , clientVersion ) ;
175
+ const response = await this . #streamRunsWhere(
176
+ url ,
177
+ environment ,
178
+ whereClause ,
179
+ requestOptions ,
180
+ clientVersion
181
+ ) ;
169
182
170
183
if ( createdAtFilter ) {
171
184
const [ setCreatedAtFilterError ] = await tryCatch (
@@ -256,12 +269,14 @@ export class RealtimeClient {
256
269
url : URL | string ,
257
270
environment : RealtimeEnvironment ,
258
271
whereClause : string ,
272
+ requestOptions ?: RealtimeRequestOptions ,
259
273
clientVersion ?: string
260
274
) {
261
275
const electricUrl = this . #constructRunsElectricUrl(
262
276
url ,
263
277
environment ,
264
278
whereClause ,
279
+ requestOptions ,
265
280
clientVersion
266
281
) ;
267
282
@@ -272,6 +287,7 @@ export class RealtimeClient {
272
287
url : URL | string ,
273
288
environment : RealtimeEnvironment ,
274
289
whereClause : string ,
290
+ requestOptions ?: RealtimeRequestOptions ,
275
291
clientVersion ?: string
276
292
) : URL {
277
293
const $url = new URL ( url . toString ( ) ) ;
@@ -297,13 +313,10 @@ export class RealtimeClient {
297
313
electricUrl . searchParams . set ( "handle" , electricUrl . searchParams . get ( "shape_id" ) ?? "" ) ;
298
314
}
299
315
300
- const skipColumnsRaw = $url . searchParams . get ( "skipColumns" ) ;
316
+ let skipColumns = getSkipColumns ( $url . searchParams , requestOptions ) ;
301
317
302
- if ( skipColumnsRaw ) {
303
- const skipColumns = skipColumnsRaw
304
- . split ( "," )
305
- . map ( ( c ) => c . trim ( ) )
306
- . filter ( ( c ) => c !== "" && ! RESERVED_COLUMNS . includes ( c ) ) ;
318
+ if ( skipColumns . length > 0 ) {
319
+ skipColumns = skipColumns . filter ( ( c ) => c !== "" && ! RESERVED_COLUMNS . includes ( c ) ) ;
307
320
308
321
electricUrl . searchParams . set (
309
322
"columns" ,
@@ -543,3 +556,17 @@ declare module "ioredis" {
543
556
) : Result < number , Context > ;
544
557
}
545
558
}
559
+
560
+ function getSkipColumns ( searchParams : URLSearchParams , requestOptions ?: RealtimeRequestOptions ) {
561
+ if ( requestOptions ?. skipColumns ) {
562
+ return requestOptions . skipColumns ;
563
+ }
564
+
565
+ const skipColumnsRaw = searchParams . get ( "skipColumns" ) ;
566
+
567
+ if ( skipColumnsRaw ) {
568
+ return skipColumnsRaw . split ( "," ) . map ( ( c ) => c . trim ( ) ) ;
569
+ }
570
+
571
+ return [ ] ;
572
+ }
0 commit comments