: 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 -- )
: ?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
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 )