static int _db_table_updater_images_0(sqlite3 *db, const char *table, unsigned int current_version, int is_last_run) { char *errmsg; int r, ret; errmsg = NULL; r = sqlite3_exec(db, "CREATE TABLE IF NOT EXISTS images (" "id INTEGER PRIMARY KEY, " "title TEXT, " "artist TEXT, " "date INTEGER NOT NULL, " "width INTEGER NOT NULL, " "height INTEGER NOT NULL, " "orientation INTEGER NOT NULL, " "gps_lat REAL DEFAULT 0.0, " "gps_long REAL DEFAULT 0.0, " "gps_alt REAL DEFAULT 0.0" ")", NULL, NULL, &errmsg); if (r != SQLITE_OK) { fprintf(stderr, "ERROR: could not create 'images' table: %s\n", errmsg); sqlite3_free(errmsg); return -1; } r = sqlite3_exec(db, "CREATE INDEX IF NOT EXISTS images_date_idx ON images (" "date" ")", NULL, NULL, &errmsg); if (r != SQLITE_OK) { fprintf(stderr, "ERROR: could not create 'images_date_idx' index: %s\n", errmsg); sqlite3_free(errmsg); return -2; } ret = lms_db_create_trigger_if_not_exists(db, "delete_images_on_files_deleted " "DELETE ON files FOR EACH ROW BEGIN " " DELETE FROM images WHERE id = OLD.id; END;"); if (ret != 0) goto done; ret = lms_db_create_trigger_if_not_exists(db, "delete_files_on_images_deleted " "DELETE ON images FOR EACH ROW BEGIN " " DELETE FROM files WHERE id = OLD.id; END;"); done: return ret; }
static int _db_table_updater_playlists_0(sqlite3 *db, const char *table, unsigned int current_version, int is_last_run) { char *errmsg; int r, ret; errmsg = NULL; r = sqlite3_exec(db, "CREATE TABLE IF NOT EXISTS playlists (" "id INTEGER PRIMARY KEY, " "title TEXT, " "n_entries INTEGER NOT NULL" ")", NULL, NULL, &errmsg); if (r != SQLITE_OK) { fprintf(stderr, "ERROR: could not create 'playlists' table: %s\n", errmsg); sqlite3_free(errmsg); return -1; } r = sqlite3_exec(db, "CREATE INDEX IF NOT EXISTS playlists_title_idx ON " "playlists (title)", NULL, NULL, &errmsg); if (r != SQLITE_OK) { fprintf(stderr, "ERROR: could not create 'playlists_title_idx' index: %s\n", errmsg); sqlite3_free(errmsg); return -2; } ret = lms_db_create_trigger_if_not_exists(db, "delete_playlists_on_files_deleted " "DELETE ON files FOR EACH ROW BEGIN " " DELETE FROM playlists WHERE id = OLD.id; END;"); if (ret != 0) goto done; ret = lms_db_create_trigger_if_not_exists(db, "delete_files_on_playlists_deleted " "DELETE ON playlists FOR EACH ROW BEGIN " " DELETE FROM files WHERE id = OLD.id; END;"); done: return ret; }