@@ -415,4 +415,160 @@ final class PostgrestTransformBuilderTests: PostgrestQueryTests {
415415
416416    XCTAssertTrue ( explain. contains ( " Aggregate " ) ) 
417417  } 
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+   } 
418574} 
0 commit comments