]> gitweb.factorcode.org Git - factor.git/blobdiff - basis/db/sqlite/errors/errors.factor
factor: trim using lists
[factor.git] / basis / db / sqlite / errors / errors.factor
index 1e5da3ca948c39f069a750d097c1eb7b89a7c3e9..ca19fe1dd2426aca425f22bf52c7d22211bedd95 100644 (file)
@@ -1,28 +1,22 @@
 ! 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
+]=]