mirror of
https://git.pwmt.org/pwmt/zathura.git
synced 2024-12-29 12:05:59 +01:00
Implement database migration to the new layout.
This commit is contained in:
parent
0c0a5f266c
commit
7b98e40e23
1 changed files with 15 additions and 2 deletions
|
@ -124,6 +124,11 @@ sqlite_db_init(ZathuraSQLDatabase* db, const char* path)
|
||||||
"position_y FLOAT"
|
"position_y FLOAT"
|
||||||
");";
|
");";
|
||||||
|
|
||||||
|
static const char SQL_FILEINFO_ALTER[] =
|
||||||
|
"ALTER TABLE fileinfo ADD COLUMN pages_per_row INTEGER;"
|
||||||
|
"ALTER TABLE fileinfo ADD COLUMN position_x FLOAT;"
|
||||||
|
"ALTER TABLE fileinfo ADD COLUMN position_y FLOAT;";
|
||||||
|
|
||||||
sqlite3* session = NULL;
|
sqlite3* session = NULL;
|
||||||
if (sqlite3_open(path, &session) != SQLITE_OK) {
|
if (sqlite3_open(path, &session) != SQLITE_OK) {
|
||||||
girara_error("Could not open database: %s\n", path);
|
girara_error("Could not open database: %s\n", path);
|
||||||
|
@ -142,6 +147,14 @@ sqlite_db_init(ZathuraSQLDatabase* db, const char* path)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char* data_type = NULL;
|
||||||
|
if (sqlite3_table_column_metadata(session, NULL, "fileinfo", "pages_per_row", &data_type, NULL, NULL, NULL, NULL) != SQLITE_OK) {
|
||||||
|
girara_debug("old database table layout detected; updating ...");
|
||||||
|
if (sqlite3_exec(session, SQL_FILEINFO_ALTER, NULL, 0, NULL) != SQLITE_OK) {
|
||||||
|
girara_warning("failed to update database table layout");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
priv->session = session;
|
priv->session = session;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -286,7 +299,7 @@ sqlite_set_fileinfo(zathura_database_t* db, const char* file,
|
||||||
zathura_sqldatabase_private_t* priv = ZATHURA_SQLDATABASE_GET_PRIVATE(db);
|
zathura_sqldatabase_private_t* priv = ZATHURA_SQLDATABASE_GET_PRIVATE(db);
|
||||||
|
|
||||||
static const char SQL_FILEINFO_SET[] =
|
static const char SQL_FILEINFO_SET[] =
|
||||||
"REPLACE INTO fileinfo (file, page, offset, scale, rotation) VALUES (?, ?, ?, ?, ?);";
|
"REPLACE INTO fileinfo (file, page, offset, scale, rotation, pages_per_row, position_x, position_y) VALUES (?, ?, ?, ?, ?, ?, ?, ?);";
|
||||||
|
|
||||||
sqlite3_stmt* stmt = prepare_statement(priv->session, SQL_FILEINFO_SET);
|
sqlite3_stmt* stmt = prepare_statement(priv->session, SQL_FILEINFO_SET);
|
||||||
if (stmt == NULL) {
|
if (stmt == NULL) {
|
||||||
|
@ -323,7 +336,7 @@ sqlite_get_fileinfo(zathura_database_t* db, const char* file,
|
||||||
zathura_sqldatabase_private_t* priv = ZATHURA_SQLDATABASE_GET_PRIVATE(db);
|
zathura_sqldatabase_private_t* priv = ZATHURA_SQLDATABASE_GET_PRIVATE(db);
|
||||||
|
|
||||||
static const char SQL_FILEINFO_GET[] =
|
static const char SQL_FILEINFO_GET[] =
|
||||||
"SELECT page, offset, scale, rotation FROM fileinfo WHERE file = ?;";
|
"SELECT page, offset, scale, rotation, pages_per_row, position_x, position_y FROM fileinfo WHERE file = ?;";
|
||||||
|
|
||||||
sqlite3_stmt* stmt = prepare_statement(priv->session, SQL_FILEINFO_GET);
|
sqlite3_stmt* stmt = prepare_statement(priv->session, SQL_FILEINFO_GET);
|
||||||
if (stmt == NULL) {
|
if (stmt == NULL) {
|
||||||
|
|
Loading…
Reference in a new issue