parent
							
								
									cf0ed665bf
								
							
						
					
					
						commit
						4732915a57
					
				|  | @ -175,7 +175,7 @@ M: postgresql-db create-sql-statement ( class -- seq ) | ||||||
| 
 | 
 | ||||||
| : drop-table-sql ( table -- statement ) | : drop-table-sql ( table -- statement ) | ||||||
|     [ |     [ | ||||||
|         "drop table " 0% 0% ";" 0% drop |         "drop table " 0% 0% drop | ||||||
|     ] query-make ; |     ] query-make ; | ||||||
| 
 | 
 | ||||||
| M: postgresql-db drop-sql-statement ( class -- seq ) | M: postgresql-db drop-sql-statement ( class -- seq ) | ||||||
|  |  | ||||||
|  | @ -147,7 +147,8 @@ M: db <select-by-slots-statement> ( tuple class -- statement ) | ||||||
|         number>string " limit " prepend append |         number>string " limit " prepend append | ||||||
|     ] curry change-sql drop ; |     ] curry change-sql drop ; | ||||||
| 
 | 
 | ||||||
| : make-advanced-statement ( tuple advanced -- ) | : make-advanced-statement ( tuple advanced -- tuple' ) | ||||||
|  |     dupd | ||||||
|     { |     { | ||||||
|         [ group>> [ do-group ] [ drop ] if* ] |         [ group>> [ do-group ] [ drop ] if* ] | ||||||
|         [ order>> [ do-order ] [ drop ] if* ] |         [ order>> [ do-order ] [ drop ] if* ] | ||||||
|  | @ -155,6 +156,6 @@ M: db <select-by-slots-statement> ( tuple class -- statement ) | ||||||
|         [ offset>> [ do-offset ] [ drop ] if* ] |         [ offset>> [ do-offset ] [ drop ] if* ] | ||||||
|     } 2cleave ; |     } 2cleave ; | ||||||
| 
 | 
 | ||||||
| M: db <advanced-select-statement> ( tuple class advanced -- tuple ) | M: db <advanced-select-statement> ( tuple class group order limit offset -- tuple ) | ||||||
|     >r <select-by-slots-statement> r> |     advanced-statement boa | ||||||
|     dupd make-advanced-statement ; |     [ <select-by-slots-statement> ] dip make-advanced-statement ; | ||||||
|  |  | ||||||
|  | @ -4,9 +4,11 @@ IN: db.sql.tests | ||||||
| ! TUPLE: person name age ; | ! TUPLE: person name age ; | ||||||
| : insert-1 | : insert-1 | ||||||
|     { insert |     { insert | ||||||
|  |         { | ||||||
|             { table "person" } |             { table "person" } | ||||||
|             { columns "name" "age" } |             { columns "name" "age" } | ||||||
|             { values "erg" 26 } |             { values "erg" 26 } | ||||||
|  |         } | ||||||
|     } ; |     } ; | ||||||
| 
 | 
 | ||||||
| : update-1 | : update-1 | ||||||
|  |  | ||||||
|  | @ -43,7 +43,7 @@ HOOK: <update-tuple-statement> db ( class -- obj ) | ||||||
| HOOK: <delete-tuples-statement> db ( tuple class -- obj ) | HOOK: <delete-tuples-statement> db ( tuple class -- obj ) | ||||||
| HOOK: <select-by-slots-statement> db ( tuple class -- tuple ) | HOOK: <select-by-slots-statement> db ( tuple class -- tuple ) | ||||||
| TUPLE: advanced-statement group order offset limit ; | TUPLE: advanced-statement group order offset limit ; | ||||||
| HOOK: <advanced-select-statement> db ( tuple class advanced -- tuple ) | HOOK: <advanced-select-statement> db ( tuple class group order offset limit -- tuple ) | ||||||
| 
 | 
 | ||||||
| HOOK: insert-tuple* db ( tuple statement -- ) | HOOK: insert-tuple* db ( tuple statement -- ) | ||||||
| 
 | 
 | ||||||
|  | @ -143,9 +143,12 @@ M: retryable execute-statement* ( statement type -- ) | ||||||
|         [ bind-tuple ] keep execute-statement |         [ bind-tuple ] keep execute-statement | ||||||
|     ] with-disposal ; |     ] with-disposal ; | ||||||
| 
 | 
 | ||||||
| : select-tuples ( tuple -- tuples ) | : do-select ( exemplar-tuple statement -- tuples ) | ||||||
|     dup dup class <select-by-slots-statement> [ |     [ [ bind-tuple ] [ query-tuples ] 2bi ] with-disposal ; | ||||||
|         [ bind-tuple ] [  query-tuples ] 2bi |  | ||||||
|     ] with-disposal ; |  | ||||||
| 
 | 
 | ||||||
| : select-tuple ( tuple -- tuple/f ) select-tuples ?first ; | : select-tuples ( tuple -- tuples ) | ||||||
|  |     dup dup class <select-by-slots-statement> do-select ; | ||||||
|  | 
 | ||||||
|  | : select-tuple ( tuple -- tuple/f ) | ||||||
|  |     dup dup class f f f 1 <advanced-select-statement> | ||||||
|  |     do-select ?first ; | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue