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.errors.sqlite
 | 
						|
 | 
						|
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
 |