29 lines
809 B
Factor
29 lines
809 B
Factor
|
! Copyright (C) 2009 Doug Coleman.
|
||
|
! See http://factorcode.org/license.txt for BSD license.
|
||
|
USING: accessors combinators db kernel sequences peg.ebnf
|
||
|
strings db.errors ;
|
||
|
IN: db.sqlite.errors
|
||
|
|
||
|
TUPLE: unparsed-sqlite-error error ;
|
||
|
C: <unparsed-sqlite-error> unparsed-sqlite-error
|
||
|
|
||
|
SINGLETONS: table-exists table-missing ;
|
||
|
|
||
|
: sqlite-table-error ( table message -- error )
|
||
|
{
|
||
|
{ table-exists [ <sql-table-exists> ] }
|
||
|
} case ;
|
||
|
|
||
|
EBNF: parse-sqlite-sql-error
|
||
|
|
||
|
TableMessage = " already exists" => [[ table-exists ]]
|
||
|
|
||
|
SqliteError =
|
||
|
"table " (!(TableMessage).)+:table TableMessage:message
|
||
|
=> [[ table >string message sqlite-table-error ]]
|
||
|
| "no such table: " .+:table
|
||
|
=> [[ table >string <sql-table-missing> ]]
|
||
|
| .*:error
|
||
|
=> [[ error >string <unparsed-sqlite-error> ]]
|
||
|
;EBNF
|