Commit a43db55dbaf51ed6566007bbf10ba579521397c4
1 parent
986b3f3a
Use of new SQLite3 API
Showing
1 changed file
with
26 additions
and
28 deletions
Show diff stats
calexium_lib/database/db_utils.anubis
| @@ -13,32 +13,6 @@ read data_base/sqlite.anubis | @@ -13,32 +13,6 @@ read data_base/sqlite.anubis | ||
| 13 | 13 | ||
| 14 | read calexium_lib/net_services_protocols/logger_service.anubis | 14 | read calexium_lib/net_services_protocols/logger_service.anubis |
| 15 | 15 | ||
| 16 | - | ||
| 17 | -define Result(SQLite3Error, SQLite3HeadersOrRow -> SQLite3Row) | ||
| 18 | - sql_query_timeout | ||
| 19 | - ( | ||
| 20 | - SQLite3DataBase db, | ||
| 21 | - String sql_command, | ||
| 22 | - Int timeout | ||
| 23 | - ) = | ||
| 24 | - | ||
| 25 | - if sql_query(db, sql_command) is | ||
| 26 | - { | ||
| 27 | - error(sql_error) then ( | ||
| 28 | - if (sql_error.code /= 1 & sql_error.code /= 5 & sql_error.code /= 6) | now > timeout then | ||
| 29 | - error(sql_error) | ||
| 30 | - else | ||
| 31 | - ( | ||
| 32 | - if sql_error.code = 5 then | ||
| 33 | - unique | ||
| 34 | - else | ||
| 35 | - print_db_error(sql_error) | ||
| 36 | - ); | ||
| 37 | - sleep(100); | ||
| 38 | - sql_query_timeout(db, sql_command, timeout)), | ||
| 39 | - ok(cursor) then ok(cursor) | ||
| 40 | - }. | ||
| 41 | - | ||
| 42 | public define Result(SQLite3Error, One) | 16 | public define Result(SQLite3Error, One) |
| 43 | sql_transaction | 17 | sql_transaction |
| 44 | ( | 18 | ( |
| @@ -70,6 +44,23 @@ public define Result(SQLite3Error, One) | @@ -70,6 +44,23 @@ public define Result(SQLite3Error, One) | ||
| 70 | }. | 44 | }. |
| 71 | 45 | ||
| 72 | 46 | ||
| 47 | + | ||
| 48 | +public define SQLite3QueryResult | ||
| 49 | + sql_query_timeout | ||
| 50 | + ( | ||
| 51 | + SQLite3DataBase db, //database handle | ||
| 52 | + String sql_query, //sql query itself | ||
| 53 | + List(SQLite3Bind) initial_bindings, | ||
| 54 | + String msg //message to be shown if an error occure | ||
| 55 | + ) = | ||
| 56 | + //we try with 30 sec of timeout | ||
| 57 | + if sql_query_timeout(db, sql_query, initial_bindings, 60, 100) is | ||
| 58 | + { | ||
| 59 | + error(sql_error) then logError("DB", db_error(sql_error,msg)); error(sql_error), | ||
| 60 | + ok(headers, cursor, reset) then ok(headers, cursor, reset) | ||
| 61 | + }. | ||
| 62 | + | ||
| 63 | +// deprecated. Use one of the previous ones. | ||
| 73 | public define Maybe(SQLite3HeadersOrRow -> SQLite3Row) | 64 | public define Maybe(SQLite3HeadersOrRow -> SQLite3Row) |
| 74 | sql_query_timeout | 65 | sql_query_timeout |
| 75 | ( | 66 | ( |
| @@ -78,10 +69,17 @@ public define Maybe(SQLite3HeadersOrRow -> SQLite3Row) | @@ -78,10 +69,17 @@ public define Maybe(SQLite3HeadersOrRow -> SQLite3Row) | ||
| 78 | String msg //message to be shown if an error occure | 69 | String msg //message to be shown if an error occure |
| 79 | ) = | 70 | ) = |
| 80 | //we try with 30 sec of timeout | 71 | //we try with 30 sec of timeout |
| 81 | - if sql_query_timeout(db, sql_query, now + 60) is | 72 | + if sql_query_timeout(db, sql_query, [], 60, 100) is |
| 82 | { | 73 | { |
| 83 | error(sql_error) then logError("DB", db_error(sql_error,msg));failure, | 74 | error(sql_error) then logError("DB", db_error(sql_error,msg));failure, |
| 84 | - ok(cursor) then success(cursor) | 75 | + ok(headers, cursor, reset) then |
| 76 | + success((SQLite3HeadersOrRow h_or_r) |-> if h_or_r is | ||
| 77 | + { | ||
| 78 | + headers then | ||
| 79 | + with cols = map((String c) |-> (SQLite3Datum)text(c), headers(unique)), | ||
| 80 | + row((Int n) |-> force(nth(n, cols), no_such_column)), | ||
| 81 | + next_row then cursor(unique) | ||
| 82 | + }) | ||
| 85 | }. | 83 | }. |
| 86 | 84 | ||
| 87 | // -- Extractors HELPERS --------------- | 85 | // -- Extractors HELPERS --------------- |