! Copyright (C) 2010 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors assocs combinators db2 db2.binders
-db2.connections db2.statements db2.types db2.utils fry kernel
-locals make orm.persistent sequences reconstructors arrays
-orm.binders db2.query-objects ;
+USING: accessors arrays assocs combinators db2.binders
+db2.connections db2.query-objects db2.statements db2.types
+db2.utils kernel make orm.binders orm.persistent reconstructors
+sequences ;
IN: orm.queries
HOOK: create-table-sql db-connection ( tuple-class -- object )
<in-binder-low>
] { } map-as ;
-M:: object delete-tuple-sql ( tuple -- statement )
- <statement> :> statement
- tuple >persistent :> persistent
+M:: object delete-tuple-sql ( $tuple -- statement )
+ <statement> :> $statement
+ $tuple >persistent :> $persistent
- statement
- persistent table-name>> "DELETE FROM " prepend add-sql
- persistent find-primary-key :> columns:primary-key
- columns:primary-key length :> #primary-key
+ $statement
+ $persistent table-name>> "DELETE FROM " prepend add-sql
+ $persistent find-primary-key :> $primary-key
+ $primary-key length :> $#primary-key
" WHERE " add-sql
- columns:primary-key tuple columns>in-binders add-in
+ $primary-key $tuple columns>in-binders add-in
- columns:primary-key [ column-name>> ] map
- #primary-key n>bind-sequence zip
- [ " = " glue ] { } assoc>map ", " join add-sql ;
+ $primary-key [ column-name>> ] map
+ $#primary-key n>bind-sequence zip
+ [ " = " glue ] { } assoc>map ", " join add-sql ;
: call-generators ( columns tuple -- )
'[
! [ columns>in-binders add-in ]
! [ drop [ column-name>> ] map " WHERE " prepend add-sql ] 2bi ;
-M:: object update-tuple-sql ( tuple -- statement )
- <statement> :> statement
- tuple >persistent :> persistent
+M:: object update-tuple-sql ( $tuple -- statement )
+ <statement> :> $statement
+ $tuple >persistent :> $persistent
- statement
- persistent table-name>> "UPDATE " " SET " surround add-sql
- persistent columns>> remove-primary-key :> columns:no-primary-key
- persistent find-primary-key :> columns:primary-key
- columns:no-primary-key length :> #columns
- columns:no-primary-key length :> #primary-key
+ $statement
+ $persistent table-name>> "UPDATE " " SET " surround add-sql
+ $persistent columns>> remove-primary-key :> $no-primary-key
+ $persistent find-primary-key :> $primary-key
+ $no-primary-key length :> $#columns
+ $primary-key length :> $#primary-key
- columns:no-primary-key [ column-name>> ] map
- #columns n>bind-sequence zip [ " = " glue ] { } assoc>map ", " join add-sql
+ $no-primary-key [ column-name>> ] map
+ $#columns n>bind-sequence zip [ " = " glue ] { } assoc>map ", " join add-sql
- columns:no-primary-key tuple columns>in-binders add-in
+ $no-primary-key $tuple columns>in-binders add-in
" WHERE " add-sql
- columns:primary-key tuple columns>in-binders add-in
+ $primary-key $tuple columns>in-binders add-in
- columns:primary-key [ column-name>> ] map
- #columns #primary-key continue-bind-sequence zip [ " = " glue ] { } assoc>map ", " join add-sql ;
+ $primary-key [ column-name>> ] map
+ $#columns $#primary-key continue-bind-sequence zip [ " = " glue ] { } assoc>map ", " join add-sql ;
M: object select-tuple-sql ( tuple -- object )