@@ -415,4 +415,160 @@ final class PostgrestTransformBuilderTests: PostgrestQueryTests {
415
415
416
416
XCTAssertTrue ( explain. contains ( " Aggregate " ) )
417
417
}
418
+
419
+ func testMaxAffectedOnUpdate( ) async throws {
420
+ Mock (
421
+ url: url. appendingPathComponent ( " users " ) ,
422
+ ignoreQuery: true ,
423
+ statusCode: 200 ,
424
+ data: [
425
+ . patch: Data ( " [] " . utf8)
426
+ ]
427
+ )
428
+ . snapshotRequest {
429
+ #"""
430
+ curl \
431
+ --request PATCH \
432
+ --header "Accept: application/json" \
433
+ --header "Content-Length: 20" \
434
+ --header "Content-Type: application/json" \
435
+ --header "Prefer: return=representation,handling=strict,max-affected=1" \
436
+ --header "X-Client-Info: postgrest-swift/0.0.0" \
437
+ --header "apikey: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6ImFub24iLCJleHAiOjE5ODM4MTI5OTZ9.CRXP1A7WOeoJeXxjNni43kdQwgnWNReilDMblYTn_I0" \
438
+ --data "{\"username\":\"admin\"}" \
439
+ "http://localhost:54321/rest/v1/users?id=eq.1"
440
+ """#
441
+ }
442
+ . register ( )
443
+
444
+ try await sut
445
+ . from ( " users " )
446
+ . update ( [ " username " : " admin " ] )
447
+ . eq ( " id " , value: 1 )
448
+ . maxAffected ( 1 )
449
+ . execute ( )
450
+ }
451
+
452
+ func testMaxAffectedTwice( ) async throws {
453
+ Mock (
454
+ url: url. appendingPathComponent ( " users " ) ,
455
+ ignoreQuery: true ,
456
+ statusCode: 200 ,
457
+ data: [
458
+ . patch: Data ( " [] " . utf8)
459
+ ]
460
+ )
461
+ . snapshotRequest {
462
+ #"""
463
+ curl \
464
+ --request PATCH \
465
+ --header "Accept: application/json" \
466
+ --header "Content-Length: 20" \
467
+ --header "Content-Type: application/json" \
468
+ --header "Prefer: return=representation,handling=strict,max-affected=5" \
469
+ --header "X-Client-Info: postgrest-swift/0.0.0" \
470
+ --header "apikey: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6ImFub24iLCJleHAiOjE5ODM4MTI5OTZ9.CRXP1A7WOeoJeXxjNni43kdQwgnWNReilDMblYTn_I0" \
471
+ --data "{\"username\":\"admin\"}" \
472
+ "http://localhost:54321/rest/v1/users?id=eq.1"
473
+ """#
474
+ }
475
+ . register ( )
476
+
477
+ try await sut
478
+ . from ( " users " )
479
+ . update ( [ " username " : " admin " ] )
480
+ . eq ( " id " , value: 1 )
481
+ . maxAffected ( 1 )
482
+ . maxAffected ( 5 )
483
+ . execute ( )
484
+ }
485
+
486
+ func testMaxAffectedOnDelete( ) async throws {
487
+ Mock (
488
+ url: url. appendingPathComponent ( " users " ) ,
489
+ ignoreQuery: true ,
490
+ statusCode: 200 ,
491
+ data: [
492
+ . delete: Data ( " [] " . utf8)
493
+ ]
494
+ )
495
+ . snapshotRequest {
496
+ #"""
497
+ curl \
498
+ --request DELETE \
499
+ --header "Accept: application/json" \
500
+ --header "Content-Type: application/json" \
501
+ --header "Prefer: return=representation,handling=strict,max-affected=5" \
502
+ --header "X-Client-Info: postgrest-swift/0.0.0" \
503
+ --header "apikey: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6ImFub24iLCJleHAiOjE5ODM4MTI5OTZ9.CRXP1A7WOeoJeXxjNni43kdQwgnWNReilDMblYTn_I0" \
504
+ "http://localhost:54321/rest/v1/users?id=in.(1,2,3,4,5)"
505
+ """#
506
+ }
507
+ . register ( )
508
+
509
+ try await sut
510
+ . from ( " users " )
511
+ . delete ( )
512
+ . in ( " id " , values: [ 1 , 2 , 3 , 4 , 5 ] )
513
+ . maxAffected ( 5 )
514
+ . execute ( )
515
+ }
516
+
517
+ func testMaxAffectedOnRpc( ) async throws {
518
+ Mock (
519
+ url: url. appendingPathComponent ( " rpc/delete_users " ) ,
520
+ ignoreQuery: true ,
521
+ statusCode: 200 ,
522
+ data: [
523
+ . post: Data ( " [] " . utf8)
524
+ ]
525
+ )
526
+ . snapshotRequest {
527
+ #"""
528
+ curl \
529
+ --request POST \
530
+ --header "Accept: application/json" \
531
+ --header "Content-Type: application/json" \
532
+ --header "Prefer: handling=strict,max-affected=10" \
533
+ --header "X-Client-Info: postgrest-swift/0.0.0" \
534
+ --header "apikey: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6ImFub24iLCJleHAiOjE5ODM4MTI5OTZ9.CRXP1A7WOeoJeXxjNni43kdQwgnWNReilDMblYTn_I0" \
535
+ "http://localhost:54321/rest/v1/rpc/delete_users"
536
+ """#
537
+ }
538
+ . register ( )
539
+
540
+ try await sut
541
+ . rpc ( " delete_users " )
542
+ . maxAffected ( 10 )
543
+ . execute ( )
544
+ }
545
+
546
+ func testMaxAffectedOnSelect( ) async throws {
547
+ Mock (
548
+ url: url. appendingPathComponent ( " users " ) ,
549
+ ignoreQuery: true ,
550
+ statusCode: 200 ,
551
+ data: [
552
+ . get: Data ( " [] " . utf8)
553
+ ]
554
+ )
555
+ . snapshotRequest {
556
+ #"""
557
+ curl \
558
+ --header "Accept: application/json" \
559
+ --header "Content-Type: application/json" \
560
+ --header "Prefer: handling=strict,max-affected=3" \
561
+ --header "X-Client-Info: postgrest-swift/0.0.0" \
562
+ --header "apikey: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6ImFub24iLCJleHAiOjE5ODM4MTI5OTZ9.CRXP1A7WOeoJeXxjNni43kdQwgnWNReilDMblYTn_I0" \
563
+ "http://localhost:54321/rest/v1/users?select=*"
564
+ """#
565
+ }
566
+ . register ( )
567
+
568
+ try await sut
569
+ . from ( " users " )
570
+ . select ( )
571
+ . maxAffected ( 3 )
572
+ . execute ( )
573
+ }
418
574
}
0 commit comments