int lms_db_table_version_set(sqlite3 *db, const char *table, unsigned int version) { int r, ret; sqlite3_stmt *stmt; stmt = lms_db_compile_stmt(db, "INSERT OR REPLACE INTO lms_internal (tab, version) VALUES (?, ?)"); if (!stmt) return -1; ret = lms_db_bind_text(stmt, 1, table, -1); if (ret != 0) goto done; ret = lms_db_bind_int(stmt, 2, version); if (ret != 0) goto done; r = sqlite3_step(stmt); if (r != SQLITE_DONE) { ret = -1; fprintf(stderr, "ERROR: could not set table '%s' version: %s\n", table, sqlite3_errmsg(db)); } done: lms_db_reset_stmt(stmt); lms_db_finalize_stmt(stmt, "table_version_set"); return ret; }
int lms_db_table_version_get(sqlite3 *db, const char *table) { int r, version; sqlite3_stmt *stmt; stmt = lms_db_compile_stmt(db, "SELECT version FROM lms_internal WHERE tab = ?"); if (!stmt) return -1; if (lms_db_bind_text(stmt, 1, table, -1) != 0) { version = -1; goto done; } r = sqlite3_step(stmt); if (r == SQLITE_DONE) version = 0; else if (r == SQLITE_ROW) version = sqlite3_column_int(stmt, 0); else { version = -1; fprintf(stderr, "ERROR: could not get table '%s' version: %s\n", table, sqlite3_errmsg(db)); } done: lms_db_reset_stmt(stmt); lms_db_finalize_stmt(stmt, "table_version_get"); return version; }
/** * Start playlist DB access tool. * * Compile SQL statements and other initialization functions. * * This is usually called from plugin's @b start() callback. * * @param ldp handle returned by lms_db_playlist_new(). * * @return On success 0 is returned. * @ingroup LMS_Plugins */ int lms_db_playlist_start(lms_db_playlist_t *ldp) { if (!ldp) return -1; if (ldp->_is_started) return 0; ldp->insert = lms_db_compile_stmt(ldp->db, "INSERT OR REPLACE INTO playlists (id, title, n_entries) " "VALUES (?, ?, ?)"); if (!ldp->insert) return -2; ldp->_is_started = 1; return 0; }
/** * Start image DB access tool. * * Compile SQL statements and other initialization functions. * * This is usually called from plugin's @b start() callback. * * @param ldi handle returned by lms_db_image_new(). * * @return On success 0 is returned. * @ingroup LMS_Plugins */ int lms_db_image_start(lms_db_image_t *ldi) { if (!ldi) return -1; if (ldi->_is_started) return 0; ldi->insert = lms_db_compile_stmt(ldi->db, "INSERT OR REPLACE INTO images (" "id, title, artist, date, width, height, orientation, " "gps_lat, gps_long, gps_alt, dlna_profile, dlna_mime, container) " "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"); if (!ldi->insert) return -2; ldi->_is_started = 1; return 0; }
sqlite3_stmt * lms_db_compile_stmt_get_files(sqlite3 *db) { return lms_db_compile_stmt(db, "SELECT id, path, mtime, dtime, itime, size FROM files WHERE path LIKE ?"); }
sqlite3_stmt * lms_db_compile_stmt_set_file_dtime(sqlite3 *db) { return lms_db_compile_stmt(db, "UPDATE files SET dtime = ?, itime = ? WHERE id = ?"); }
sqlite3_stmt * lms_db_compile_stmt_delete_file_info(sqlite3 *db) { return lms_db_compile_stmt(db, "DELETE FROM files WHERE id = ?"); }
sqlite3_stmt * lms_db_compile_stmt_insert_file_info(sqlite3 *db) { return lms_db_compile_stmt(db, "INSERT INTO files (path, mtime, dtime, itime, size, update_id) VALUES(?, ?, ?, ?, ?, ?)"); }
sqlite3_stmt * lms_db_compile_stmt_update_file_info(sqlite3 *db) { return lms_db_compile_stmt(db, "UPDATE files SET mtime = ?, dtime = ?, itime = ?, size = ?, update_id = ? WHERE id = ?"); }
sqlite3_stmt * lms_db_compile_stmt_end_transaction(sqlite3 *db) { return lms_db_compile_stmt(db, "COMMIT"); }
sqlite3_stmt * lms_db_compile_stmt_begin_transaction(sqlite3 *db) { return lms_db_compile_stmt(db, "BEGIN TRANSACTION"); }