diff --git a/src/database/database.c b/src/database/database.c index 5db5512..3cf1d66 100644 --- a/src/database/database.c +++ b/src/database/database.c @@ -163,7 +163,7 @@ void database_open(database_t *db) { &db->write_document_sidecar_stmt, NULL)); CRASH_IF_NOT_SQLITE_OK(sqlite3_prepare_v2( db->db, - "REPLACE INTO document (id, mtime, size, json_data) VALUES (?, ?, ?, ?);", -1, + "REPLACE INTO document (id, mtime, size, json_data, version) VALUES (?, ?, ?, ?, (SELECT max(id) FROM version));", -1, &db->write_document_stmt, NULL)); CRASH_IF_NOT_SQLITE_OK(sqlite3_prepare_v2( db->db, @@ -796,3 +796,8 @@ cJSON *database_get_document(database_t *db, char *doc_id) { return json; } + +void database_increment_version(database_t *db) { + CRASH_IF_NOT_SQLITE_OK(sqlite3_exec( + db->db, "INSERT INTO version DEFAULT VALUES", NULL, NULL, NULL)); +} diff --git a/src/database/database.h b/src/database/database.h index 90e542d..07693f3 100644 --- a/src/database/database.h +++ b/src/database/database.h @@ -126,6 +126,8 @@ void database_open(database_t *db); void database_close(database_t *, int optimize); +void database_increment_version(database_t *db); + void database_write_thumbnail(database_t *db, const char *id, int num, void *data, size_t data_size); void *database_read_thumbnail(database_t *db, const char *id, int num, size_t *return_value_len); diff --git a/src/database/database_schema.c b/src/database/database_schema.c index 960f777..42303c1 100644 --- a/src/database/database_schema.c +++ b/src/database/database_schema.c @@ -96,9 +96,15 @@ const char *IndexDatabaseSchema = " PRIMARY KEY(id, num)" ") WITHOUT ROWID;" "" + "CREATE TABLE version (" + " id INTEGER PRIMARY KEY AUTOINCREMENT," + " date TEXT NOT NULL DEFAULT (CURRENT_TIMESTAMP)" + ");" + "" "CREATE TABLE document (" " id TEXT PRIMARY KEY CHECK ( length(id) = 32 )," " marked INTEGER NOT NULL DEFAULT (1)," + " version INTEGER NOT NULL REFERENCES version(id)," " mtime INTEGER NOT NULL," " size INTEGER NOT NULL," " json_data TEXT NOT NULL CHECK ( json_valid(json_data) )" diff --git a/src/main.c b/src/main.c index b6d4310..c26b1eb 100644 --- a/src/main.c +++ b/src/main.c @@ -75,6 +75,8 @@ void database_scan_begin(scan_args_t *args) { database_write_index_descriptor(db, desc); } + database_increment_version(db); + database_close(db, FALSE); } diff --git a/src/sist.h b/src/sist.h index 7e8ad8e..035509f 100644 --- a/src/sist.h +++ b/src/sist.h @@ -51,11 +51,11 @@ #include #include "git_hash.h" -#define VERSION "3.1.4" +#define VERSION "3.2.0" static const char *const Version = VERSION; static const int VersionMajor = 3; -static const int VersionMinor = 1; -static const int VersionPatch = 4; +static const int VersionMinor = 2; +static const int VersionPatch = 0; #ifndef SIST_PLATFORM #define SIST_PLATFORM unknown