add IGNORE types to tuple slots for select
parent
ea3a2024d6
commit
f41733faf1
|
@ -52,9 +52,7 @@ M: retryable execute-statement* ( statement type -- )
|
|||
[ 0 sql-counter rot with-variable ] curry
|
||||
{ "" { } { } { } } nmake
|
||||
[ <simple-statement> maybe-make-retryable ] dip
|
||||
[
|
||||
[ 1array ] dip append
|
||||
] unless-empty ; inline
|
||||
[ [ 1array ] dip append ] unless-empty ; inline
|
||||
|
||||
: where-primary-key% ( specs -- )
|
||||
" where " 0%
|
||||
|
@ -150,9 +148,10 @@ M: db <delete-tuples-statement> ( tuple table -- sql )
|
|||
M: db <select-by-slots-statement> ( tuple class -- statement )
|
||||
[
|
||||
"select " 0%
|
||||
over [ ", " 0% ]
|
||||
[ dupd filter-ignores ] dip
|
||||
over
|
||||
[ ", " 0% ]
|
||||
[ dup column-name>> 0% 2, ] interleave
|
||||
|
||||
" from " 0% 0%
|
||||
where-clause
|
||||
] query-make ;
|
||||
|
|
|
@ -282,7 +282,7 @@ M: sqlite-db persistent-table ( -- assoc )
|
|||
"sql-spec" get modifiers>> [ +not-null+ = ] contains? not ;
|
||||
|
||||
: delete-cascade? ( -- ? )
|
||||
"sql-spec" get modifiers>> [ +cascade+ = ] contains? ;
|
||||
"sql-spec" get modifiers>> { +on-delete+ +cascade+ } swap subseq? ;
|
||||
|
||||
: sqlite-trigger, ( string -- )
|
||||
{ } { } <simple-statement> 3, ;
|
||||
|
|
|
@ -350,6 +350,16 @@ TUPLE: exam id name score ;
|
|||
[ ] [ T{ exam f f "Kenny" 60 } insert-tuple ] unit-test
|
||||
[ ] [ T{ exam f f "Cartman" 41 } insert-tuple ] unit-test
|
||||
|
||||
[ 4 ]
|
||||
[ T{ exam { name IGNORE } { score IGNORE } } select-tuples length ] unit-test
|
||||
|
||||
[ f ]
|
||||
[ T{ exam { name IGNORE } { score IGNORE } } select-tuples first score>> ] unit-test
|
||||
|
||||
! FIXME
|
||||
! [ f ]
|
||||
! [ T{ exam { name IGNORE } { score IGNORE } { id IGNORE } } select-tuples first score>> ] unit-test
|
||||
|
||||
[
|
||||
{
|
||||
T{ exam f 3 "Kenny" 60 }
|
||||
|
|
|
@ -29,9 +29,17 @@ SYMBOLS: +autoincrement+ +serial+ +unique+ +default+ +null+ +not-null+
|
|||
+foreign-id+ +has-many+ +on-delete+ +restrict+ +cascade+ +set-null+
|
||||
+set-default+ ;
|
||||
|
||||
SYMBOL: IGNORE
|
||||
|
||||
: filter-ignores ( tuple specs -- specs' )
|
||||
[ <mirror> [ nip IGNORE = ] assoc-filter keys ] dip
|
||||
[ slot-name>> swap member? not ] with filter ;
|
||||
|
||||
ERROR: no-slot ;
|
||||
|
||||
: offset-of-slot ( string tuple -- n )
|
||||
class superclasses [ "slots" word-prop ] map concat
|
||||
slot-named offset>> ;
|
||||
slot-named dup [ no-slot ] unless offset>> ;
|
||||
|
||||
: get-slot-named ( name tuple -- value )
|
||||
tuck offset-of-slot slot ;
|
||||
|
|
Loading…
Reference in New Issue