]> gitweb.factorcode.org Git - factor.git/commitdiff
db2: upsert generic, locals
authorDoug Coleman <doug.coleman@gmail.com>
Wed, 19 Jan 2022 02:55:23 +0000 (20:55 -0600)
committerDoug Coleman <doug.coleman@gmail.com>
Wed, 19 Jan 2022 02:55:23 +0000 (20:55 -0600)
basis/db2/db2.factor
basis/db2/utils/utils.factor
basis/orm/queries/queries.factor

index a0df8b68d90179b12adb9c4921d393ea3d15f699..c2c3ae689604418f858cd7efe512e27f8155be97 100644 (file)
@@ -26,18 +26,18 @@ ERROR: retryable-failed statement ;
 : execute-retry-quotation ( statement -- statement )
     dup retry-quotation>> call( statement -- statement ) ;
 
-:: (run-retryable) ( statement quot: ( statement -- statement ) -- obj )
-    statement retries>> 0 > [
-        statement [ 1 - ] change-retries drop
+:: (run-retryable) ( $statement $quot: ( statement -- statement ) -- obj )
+    $statement retries>> 0 > [
+        $statement [ 1 - ] change-retries drop
         [
-            statement quot call
+            $statement $quot call
         ] [
-            statement errors>> push
-            statement execute-retry-quotation reset-statement
-            quot (run-retryable)
+            $statement errors>> push
+            $statement execute-retry-quotation reset-statement
+            $quot (run-retryable)
         ] recover
     ] [
-        statement retryable-failed
+        $statement retryable-failed
     ] if ; inline recursive
 
 : run-retryable ( statement quot -- )
index 0b40f660ad7bb2e623ee10e207825cff6c6f9ca1..f5acff7d3ae2dbf9dda96f05d0db37fd313abcd7 100644 (file)
@@ -45,15 +45,15 @@ MACRO: slots ( seq -- quot )
 : ?first3 ( sequence -- object1/f object2/f object3/f )
     [ ?first ] [ ?second ] [ ?third ] tri ;
 
-:: 2interleave ( seq1 seq2 between: ( -- ) quot: ( obj1 obj2 -- ) -- )
-    { [ seq1 empty? ] [ seq2 empty? ] } 0|| [
-        seq1 seq2 [ first-unsafe ] bi@ quot call
-        seq1 seq2 [ rest-slice ] bi@
+:: 2interleave ( $seq1 $seq2 $between: ( -- ) quot: ( obj1 obj2 -- ) -- )
+    { [ $seq1 empty? ] [ $seq2 empty? ] } 0|| [
+        $seq1 $seq2 [ first-unsafe ] bi@ quot call
+        $seq1 $seq2 [ rest-slice ] bi@
         2dup { [ nip empty? ] [ drop empty? ] } 2|| [
             2drop
         ] [
-            between call
-            between quot 2interleave
+            $between call
+            $between quot 2interleave
         ] if
     ] unless ; inline recursive
 
index 475ba37e7b25f6049acbb0c6d8f6340f643fdf75..9c76033b1e7f0c7866c1157ebe44af0acca56cbb 100644 (file)
@@ -14,6 +14,7 @@ HOOK: insert-db-assigned-key-sql db-connection ( tuple -- object )
 HOOK: insert-user-assigned-key-sql db-connection ( tuple -- object )
 HOOK: insert-tuple-set-key db-connection ( tuple statement -- )
 HOOK: update-tuple-sql db-connection ( tuple -- object )
+HOOK: upsert-tuple-sql db-connection ( tuple -- object )
 HOOK: delete-tuple-sql db-connection ( tuple -- object )
 HOOK: select-tuple-sql db-connection ( tuple -- object )