diff -r 191b3c25974a -r 23a242d7b7fa db.h --- a/db.h Sun Oct 23 22:59:59 2011 -0700 +++ b/db.h Mon Oct 31 17:17:07 2011 -0700 @@ -33,6 +33,39 @@ #include "sqlite3.h" +#define DBSQL_MATCH_REQUEST " \ + SELECT rewrite_rule, ( \ + CASE WHEN scheme IS null THEN 1 ELSE 0 END + \ + CASE WHEN host IS null THEN 1 ELSE 0 END + \ + CASE WHEN tld IS null THEN 1 ELSE 0 END + \ + CASE WHEN path IS null THEN 1 ELSE 0 END + \ + CASE WHEN port IS null THEN 1 ELSE 0 END + \ + CASE WHEN ip IS null THEN 1 ELSE 0 END + \ + CASE WHEN user IS null THEN 1 ELSE 0 END + \ + CASE WHEN method IS null THEN 1 ELSE 0 END + \ + CASE WHEN rewrite_rule IS null THEN 1 ELSE 0 END ) as nullc \ + FROM requests \ + WHERE \ + ( scheme IS NULL OR scheme = lower(?1) ) AND \ + ( host IS NULL OR lower( host ) = lower(?2) ) AND \ + ( tld IS NULL OR lower( tld ) = lower(?3) ) AND \ + ( path IS NULL OR lower( path ) LIKE '?4%' ) AND \ + ( port IS NULL OR port = ?5 ) AND \ + ( ip IS NULL OR ip = ?6 ) AND \ + ( user IS NULL OR lower( user ) = lower(?7) ) AND \ + ( method IS NULL OR lower( method ) = lower(?8) ) AND \ + rewrite_rule IS NOT null \ + ORDER BY \ + length(path) DESC, \ + nullc ASC \ + LIMIT 1" + +/* Pull the entire rewrite rule row. */ +#define DBSQL_GET_REWRITE_RULE "\ + SELECT * \ + FROM rewrite_rules \ + WHERE id = ?1" + extern const unsigned short int DB_VERSION; /* @@ -40,8 +73,12 @@ * */ int db_attach( void ); -int db_upgrade( unsigned short int current_version ); +int db_upgrade( unsigned short int ); +unsigned short int prepare_statements( void ); short int db_version( void ); +rewrite *init_rewrite( void ); +rewrite *prepare_rewrite( request * ); +void finish_rewrite( rewrite * ); #endif