! 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 ;
+USING: db.errors kernel multiline peg.ebnf sequences strings ;
IN: db.sqlite.errors
TUPLE: unparsed-sqlite-error error ;
C: <unparsed-sqlite-error> unparsed-sqlite-error
-SINGLETONS: table-exists table-missing ;
+EBNF: parse-sqlite-sql-error [=[
-: sqlite-table-error ( table message -- error )
- {
- { table-exists [ <sql-table-exists> ] }
- } case ;
-
-EBNF: parse-sqlite-sql-error
-
-TableMessage = " already exists" => [[ table-exists ]]
+AlreadyExists = " already exists"
SqliteError =
- "table " (!(TableMessage).)+:table TableMessage:message
- => [[ table >string message sqlite-table-error ]]
+ "table " (!(AlreadyExists).)+:table AlreadyExists
+ => [[ table >string <sql-table-exists> ]]
+ | "index " (!(AlreadyExists).)+:name AlreadyExists
+ => [[ name >string <sql-index-exists> ]]
| "no such table: " .+:table
=> [[ table >string <sql-table-missing> ]]
| .*:error
=> [[ error >string <unparsed-sqlite-error> ]]
-;EBNF
+]=]