parent
							
								
									04dc25f87a
								
							
						
					
					
						commit
						3906f1c9f5
					
				| 
						 | 
				
			
			@ -84,6 +84,11 @@ M: sqlite-db create-sql ( columns table -- sql )
 | 
			
		|||
        ] interleave ")" %
 | 
			
		||||
    ] "" make ;
 | 
			
		||||
 | 
			
		||||
M: sqlite-db drop-sql ( table -- sql )
 | 
			
		||||
    [
 | 
			
		||||
        "drop table " % %
 | 
			
		||||
    ] "" make ;
 | 
			
		||||
 | 
			
		||||
M: sqlite-db insert-sql* ( columns table -- sql )
 | 
			
		||||
    [
 | 
			
		||||
        "insert into " %
 | 
			
		||||
| 
						 | 
				
			
			@ -109,7 +114,6 @@ M: sqlite-db update-sql* ( columns table -- sql )
 | 
			
		|||
 | 
			
		||||
M: sqlite-db delete-sql* ( columns table -- sql )
 | 
			
		||||
    [
 | 
			
		||||
    break
 | 
			
		||||
        "delete from " %
 | 
			
		||||
        %
 | 
			
		||||
        " where " %
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,4 +1,5 @@
 | 
			
		|||
USING: io.files kernel tools.test db db.sqlite db.tuples ;
 | 
			
		||||
USING: io.files kernel tools.test db db.sqlite db.tuples
 | 
			
		||||
db.types continuations namespaces ;
 | 
			
		||||
IN: temporary
 | 
			
		||||
 | 
			
		||||
TUPLE: person the-id the-name the-number ;
 | 
			
		||||
| 
						 | 
				
			
			@ -13,16 +14,23 @@ person "PERSON"
 | 
			
		|||
} define-persistent
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
SYMBOL: the-person
 | 
			
		||||
 | 
			
		||||
: test-tuples ( -- )
 | 
			
		||||
    f "billy" 100 person construct-boa dup insert-tuple
 | 
			
		||||
    [ person drop-table ] [ ] recover
 | 
			
		||||
    person create-table
 | 
			
		||||
    f "billy" 100 person construct-boa
 | 
			
		||||
    the-person set
 | 
			
		||||
    
 | 
			
		||||
    [ 1 ] [ dup person-id ] unit-test
 | 
			
		||||
    [  ] [ the-person get insert-tuple ] unit-test
 | 
			
		||||
 | 
			
		||||
    200 over set-person-the-number
 | 
			
		||||
    [ 1 ] [ the-person get person-the-id ] unit-test
 | 
			
		||||
 | 
			
		||||
    [ ] [ dup update-tuple ] unit-test
 | 
			
		||||
    200 the-person get set-person-the-number
 | 
			
		||||
 | 
			
		||||
    [ ] [ delete-tuple ] unit-test ;
 | 
			
		||||
    [ ] [ the-person get update-tuple ] unit-test
 | 
			
		||||
 | 
			
		||||
    [ ] [ the-person get delete-tuple ] unit-test ;
 | 
			
		||||
 | 
			
		||||
: test-sqlite ( -- )
 | 
			
		||||
    "tuples-test.db" resource-path <sqlite-db> [
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -49,7 +49,7 @@ IN: db.tuples
 | 
			
		|||
    [ <prepared-statement> ] 3compose cache nip ; inline
 | 
			
		||||
 | 
			
		||||
HOOK: create-sql db ( columns table -- sql )
 | 
			
		||||
HOOK: drop-sql db ( columns table -- sql )
 | 
			
		||||
HOOK: drop-sql db ( table -- sql )
 | 
			
		||||
HOOK: insert-sql* db ( columns table -- sql )
 | 
			
		||||
HOOK: update-sql* db ( columns table -- sql )
 | 
			
		||||
HOOK: delete-sql* db ( columns table -- sql )
 | 
			
		||||
| 
						 | 
				
			
			@ -80,6 +80,9 @@ HOOK: tuple>params db ( columns tuple -- obj )
 | 
			
		|||
: create-table ( class -- )
 | 
			
		||||
    dup db-columns swap db-table create-sql sql-command ;
 | 
			
		||||
    
 | 
			
		||||
: drop-table ( class -- )
 | 
			
		||||
    db-table drop-sql sql-command ;
 | 
			
		||||
 | 
			
		||||
: insert-tuple ( tuple -- )
 | 
			
		||||
    [
 | 
			
		||||
        [ maybe-remove-id ] [ insert-sql ] do-tuple-statement
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue