diff options
Diffstat (limited to 'src/engine.vala')
| -rw-r--r-- | src/engine.vala | 32 |
1 files changed, 23 insertions, 9 deletions
diff --git a/src/engine.vala b/src/engine.vala index df5c2248..77e711c5 100644 --- a/src/engine.vala +++ b/src/engine.vala @@ -212,10 +212,10 @@ public class Engine : DbReader insert_stmt.bind_int64 (1, event.id); insert_stmt.bind_int64 (2, event.timestamp); insert_stmt.bind_int64 (3, - interpretations_table.get_id (event.interpretation)); + interpretations_table.id_for_string (event.interpretation)); insert_stmt.bind_int64 (4, - manifestations_table.get_id (event.manifestation)); - insert_stmt.bind_int64 (5, actors_table.get_id (event.actor)); + manifestations_table.id_for_string (event.manifestation)); + insert_stmt.bind_int64 (5, actors_table.id_for_string (event.actor)); insert_stmt.bind_text (6, event.origin); insert_stmt.bind_int64 (7, payload_id); @@ -228,12 +228,12 @@ public class Engine : DbReader insert_stmt.bind_text (8, subject.uri); insert_stmt.bind_text (9, subject.current_uri); insert_stmt.bind_int64 (10, - interpretations_table.get_id (subject.interpretation)); + interpretations_table.id_for_string (subject.interpretation)); insert_stmt.bind_int64 (11, - manifestations_table.get_id (subject.manifestation)); + manifestations_table.id_for_string (subject.manifestation)); insert_stmt.bind_text (12, subject.origin); insert_stmt.bind_int64 (13, - mimetypes_table.get_id (subject.mimetype)); + mimetypes_table.id_for_string (subject.mimetype)); insert_stmt.bind_text (14, subject.text); // FIXME: Consider a storages_table table. Too dangerous? insert_stmt.bind_text (15, subject.storage); @@ -241,6 +241,7 @@ public class Engine : DbReader if ((rc = insert_stmt.step()) != Sqlite.DONE) { if (rc != Sqlite.CONSTRAINT) { + database.assert_not_corrupt (rc); warning ("SQL error: %d, %s\n", rc, db.errmsg ()); return 0; } @@ -255,12 +256,13 @@ public class Engine : DbReader retrieval_stmt.bind_int64 (1, event.timestamp); retrieval_stmt.bind_int64 (2, - interpretations_table.get_id (event.interpretation)); + interpretations_table.id_for_string (event.interpretation)); retrieval_stmt.bind_int64 (3, - manifestations_table.get_id (event.manifestation)); - retrieval_stmt.bind_int64 (4, actors_table.get_id (event.actor)); + manifestations_table.id_for_string (event.manifestation)); + retrieval_stmt.bind_int64 (4, actors_table.id_for_string (event.actor)); if ((rc = retrieval_stmt.step ()) != Sqlite.ROW) { + database.assert_not_corrupt (rc); warning ("SQL error: %d, %s\n", rc, db.errmsg ()); return 0; } @@ -340,6 +342,11 @@ public class Engine : DbReader if ((rc = move_stmt.step()) != Sqlite.DONE) { if (rc != Sqlite.CONSTRAINT) { + try + { + database.assert_not_corrupt (rc); + } + catch (EngineError err) {} warning ("SQL error: %d, %s\n", rc, db.errmsg ()); } } @@ -364,7 +371,14 @@ public class Engine : DbReader event.payload.data.length); if ((rc = payload_insertion_stmt.step ()) != Sqlite.DONE) if (rc != Sqlite.CONSTRAINT) + { warning ("SQL error: %d, %s\n", rc, db.errmsg ()); + try + { + database.assert_not_corrupt (rc); + } + catch (EngineError err) { } + } return database.database.last_insert_rowid (); } |
