tools.walker accessors combinators fry db.errors ;
IN: db
-<PRIVATE
-
TUPLE: db-connection
handle
insert-statements
update-statements
delete-statements ;
+<PRIVATE
+
: new-db-connection ( class -- obj )
new
H{ } clone >>insert-statements
GENERIC: db-open ( db -- db-connection )
HOOK: db-close db-connection ( handle -- )
+HOOK: parse-db-error db-connection ( error -- error' )
: dispose-statements ( assoc -- ) values dispose-each ;
! Copyright (C) 2008 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license.
-USING: kernel db.private ;
+USING: kernel ;
IN: db.errors
-HOOK: parse-db-error db-connection ( error -- error' )
-
ERROR: db-error ;
ERROR: sql-error ;
! See http://factorcode.org/license.txt for BSD license.
USING: ;
IN: db.errors.postgresql
-
-M: postgresql-db-connection parse-db-error
- ;
\ No newline at end of file
! Copyright (C) 2009 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors combinators db.errors db.sqlite.private kernel
-sequences peg.ebnf strings ;
+USING: accessors combinators db kernel sequences peg.ebnf
+strings db.errors ;
IN: db.errors.sqlite
ERROR: unparsed-sqlite-error error ;
| "no such table: " .+:table
=> [[ table >string <sql-table-missing> ]]
;EBNF
-
-M: sqlite-db-connection parse-db-error
- dup n>> {
- { 1 [ string>> parse-sqlite-sql-error ] }
- [ drop ]
- } case ;
\ No newline at end of file
sequences debugger db db.postgresql.lib db.postgresql.ffi
db.tuples db.types tools.annotations math.ranges
combinators classes locals words tools.walker db.private
-nmake accessors random db.queries destructors db.tuples.private ;
-USE: tools.walker
+nmake accessors random db.queries destructors db.tuples.private
+db.postgresql ;
IN: db.postgresql
TUPLE: postgresql-db host port pgopts pgtty database username password ;
{ "references" [ >reference-string ] }
[ drop no-compound-found ]
} case ;
+
+M: postgresql-db-connection parse-db-error
+ ;
db.sqlite.lib db.sqlite.ffi db.tuples words db.types combinators
math.intervals io nmake accessors vectors math.ranges random
math.bitwise db.queries destructors db.tuples.private interpolate
-io.streams.string multiline make db.private sequences.deep ;
+io.streams.string multiline make db.private sequences.deep
+db.errors.sqlite ;
IN: db.sqlite
TUPLE: sqlite-db path ;
{ "references" [ >reference-string ] }
[ 2drop ]
} case ;
+
+M: sqlite-db-connection parse-db-error
+ dup n>> {
+ { 1 [ string>> parse-sqlite-sql-error ] }
+ [ drop ]
+ } case ;