mirror of
https://github.com/owntone/owntone-server.git
synced 2025-03-31 01:33:44 -04:00
[db] Functions to read/store int in the admin table and introduce
constants for admin table keys
This commit is contained in:
parent
5315bdf83e
commit
38ab4b9676
92
src/db.c
92
src/db.c
@ -3771,6 +3771,18 @@ db_admin_set(const char *key, const char *value)
|
|||||||
#undef Q_TMPL
|
#undef Q_TMPL
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
db_admin_setint(const char *key, int value)
|
||||||
|
{
|
||||||
|
#define Q_TMPL "INSERT OR REPLACE INTO admin (key, value) VALUES ('%q', '%d');"
|
||||||
|
char *query;
|
||||||
|
|
||||||
|
query = sqlite3_mprintf(Q_TMPL, key, value);
|
||||||
|
|
||||||
|
return db_query_run(query, 1, 0);
|
||||||
|
#undef Q_TMPL
|
||||||
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
db_admin_setint64(const char *key, int64_t value)
|
db_admin_setint64(const char *key, int64_t value)
|
||||||
{
|
{
|
||||||
@ -3889,6 +3901,22 @@ db_admin_get(const char *key)
|
|||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
db_admin_getint(const char *key)
|
||||||
|
{
|
||||||
|
int value = 0;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
ret = admin_get(key, DB_TYPE_INT, &value);
|
||||||
|
if (ret < 0)
|
||||||
|
{
|
||||||
|
DPRINTF(E_LOG, L_DB, "Error reading admin value: %s\n", key);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
int64_t
|
int64_t
|
||||||
db_admin_getint64(const char *key)
|
db_admin_getint64(const char *key)
|
||||||
{
|
{
|
||||||
@ -3999,34 +4027,6 @@ db_speaker_clear_all(void)
|
|||||||
|
|
||||||
/* Queue */
|
/* Queue */
|
||||||
|
|
||||||
/*
|
|
||||||
* Returns the queue version from the admin table
|
|
||||||
*
|
|
||||||
* @return queue version
|
|
||||||
*/
|
|
||||||
int
|
|
||||||
db_queue_get_version()
|
|
||||||
{
|
|
||||||
char *version;
|
|
||||||
int32_t queue_version;
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
queue_version = 0;
|
|
||||||
version = db_admin_get("queue_version");
|
|
||||||
if (version)
|
|
||||||
{
|
|
||||||
ret = safe_atoi32(version, &queue_version);
|
|
||||||
free(version);
|
|
||||||
if (ret < 0)
|
|
||||||
{
|
|
||||||
DPRINTF(E_LOG, L_DB, "Could not get playlist version\n");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return queue_version;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Increments the version of the queue in the admin table and notifies listener of LISTENER_QUEUE
|
* Increments the version of the queue in the admin table and notifies listener of LISTENER_QUEUE
|
||||||
* about the change.
|
* about the change.
|
||||||
@ -4038,25 +4038,14 @@ static void
|
|||||||
queue_inc_version_and_notify()
|
queue_inc_version_and_notify()
|
||||||
{
|
{
|
||||||
int queue_version;
|
int queue_version;
|
||||||
char version[10];
|
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
db_transaction_begin();
|
db_transaction_begin();
|
||||||
|
|
||||||
queue_version = db_queue_get_version();
|
queue_version = db_admin_getint(ADMIN_QUEUE_VERSION);
|
||||||
if (queue_version < 0)
|
|
||||||
queue_version = 0;
|
|
||||||
|
|
||||||
queue_version++;
|
queue_version++;
|
||||||
ret = snprintf(version, sizeof(version), "%d", queue_version);
|
|
||||||
if (ret >= sizeof(version))
|
|
||||||
{
|
|
||||||
DPRINTF(E_LOG, L_DB, "Error incrementing queue version. Could not convert version to string: %d\n", queue_version);
|
|
||||||
db_transaction_rollback();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = db_admin_set("queue_version", version);
|
ret = db_admin_setint(ADMIN_QUEUE_VERSION, queue_version);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
{
|
{
|
||||||
DPRINTF(E_LOG, L_DB, "Error incrementing queue version. Could not update version in admin table: %d\n", queue_version);
|
DPRINTF(E_LOG, L_DB, "Error incrementing queue version. Could not update version in admin table: %d\n", queue_version);
|
||||||
@ -6192,7 +6181,6 @@ static int
|
|||||||
db_check_version(void)
|
db_check_version(void)
|
||||||
{
|
{
|
||||||
#define Q_VACUUM "VACUUM;"
|
#define Q_VACUUM "VACUUM;"
|
||||||
char *buf;
|
|
||||||
char *errmsg;
|
char *errmsg;
|
||||||
int db_ver_major;
|
int db_ver_major;
|
||||||
int db_ver_minor;
|
int db_ver_minor;
|
||||||
@ -6202,24 +6190,14 @@ db_check_version(void)
|
|||||||
|
|
||||||
vacuum = cfg_getbool(cfg_getsec(cfg, "sqlite"), "vacuum");
|
vacuum = cfg_getbool(cfg_getsec(cfg, "sqlite"), "vacuum");
|
||||||
|
|
||||||
buf = db_admin_get("schema_version_major");
|
db_ver_major = db_admin_getint(ADMIN_SCHEMA_VERSION_MAJOR);
|
||||||
if (!buf)
|
if (!db_ver_major)
|
||||||
buf = db_admin_get("schema_version"); // Pre schema v15.1
|
db_ver_major = db_admin_getint(ADMIN_SCHEMA_VERSION); // Pre schema v15.1
|
||||||
|
|
||||||
if (!buf)
|
if (!db_ver_major)
|
||||||
return 1; // Will create new database
|
return 1; // Will create new database
|
||||||
|
|
||||||
safe_atoi32(buf, &db_ver_major);
|
db_ver_minor = db_admin_getint(ADMIN_SCHEMA_VERSION_MINOR);
|
||||||
free(buf);
|
|
||||||
|
|
||||||
buf = db_admin_get("schema_version_minor");
|
|
||||||
if (buf)
|
|
||||||
{
|
|
||||||
safe_atoi32(buf, &db_ver_minor);
|
|
||||||
free(buf);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
db_ver_minor = 0;
|
|
||||||
|
|
||||||
db_ver = db_ver_major * 100 + db_ver_minor;
|
db_ver = db_ver_major * 100 + db_ver_minor;
|
||||||
|
|
||||||
|
17
src/db.h
17
src/db.h
@ -63,6 +63,14 @@ enum query_type {
|
|||||||
#define ARTWORK_SPOTIFY 6
|
#define ARTWORK_SPOTIFY 6
|
||||||
#define ARTWORK_HTTP 7
|
#define ARTWORK_HTTP 7
|
||||||
|
|
||||||
|
#define ADMIN_SCHEMA_VERSION_MAJOR "schema_version_major"
|
||||||
|
#define ADMIN_SCHEMA_VERSION_MINOR "schema_version_minor"
|
||||||
|
#define ADMIN_SCHEMA_VERSION "schema_version"
|
||||||
|
#define ADMIN_QUEUE_VERSION "queue_version"
|
||||||
|
#define ADMIN_DB_UPDATE "db_update"
|
||||||
|
#define ADMIN_LASTFM_SESSION_KEY "lastfm_sk"
|
||||||
|
#define ADMIN_SPOTIFY_REFRESH_TOKEN "spotify_refresh_token"
|
||||||
|
|
||||||
struct query_params {
|
struct query_params {
|
||||||
/* Query parameters, filled in by caller */
|
/* Query parameters, filled in by caller */
|
||||||
enum query_type type;
|
enum query_type type;
|
||||||
@ -680,12 +688,18 @@ db_spotify_files_delete(void);
|
|||||||
int
|
int
|
||||||
db_admin_set(const char *key, const char *value);
|
db_admin_set(const char *key, const char *value);
|
||||||
|
|
||||||
|
int
|
||||||
|
db_admin_setint(const char *key, int value);
|
||||||
|
|
||||||
int
|
int
|
||||||
db_admin_setint64(const char *key, int64_t value);
|
db_admin_setint64(const char *key, int64_t value);
|
||||||
|
|
||||||
char *
|
char *
|
||||||
db_admin_get(const char *key);
|
db_admin_get(const char *key);
|
||||||
|
|
||||||
|
int
|
||||||
|
db_admin_getint(const char *key);
|
||||||
|
|
||||||
int64_t
|
int64_t
|
||||||
db_admin_getint64(const char *key);
|
db_admin_getint64(const char *key);
|
||||||
|
|
||||||
@ -703,9 +717,6 @@ void
|
|||||||
db_speaker_clear_all(void);
|
db_speaker_clear_all(void);
|
||||||
|
|
||||||
/* Queue */
|
/* Queue */
|
||||||
int
|
|
||||||
db_queue_get_version();
|
|
||||||
|
|
||||||
int
|
int
|
||||||
db_queue_update_item(struct db_queue_item *queue_item);
|
db_queue_update_item(struct db_queue_item *queue_item);
|
||||||
|
|
||||||
|
@ -184,7 +184,7 @@ response_process(struct http_client_ctx *ctx, char **errmsg)
|
|||||||
if (sk)
|
if (sk)
|
||||||
{
|
{
|
||||||
DPRINTF(E_LOG, L_LASTFM, "Got session key from LastFM: %s\n", sk);
|
DPRINTF(E_LOG, L_LASTFM, "Got session key from LastFM: %s\n", sk);
|
||||||
db_admin_set("lastfm_sk", sk);
|
db_admin_set(ADMIN_LASTFM_SESSION_KEY, sk);
|
||||||
|
|
||||||
if (lastfm_session_key)
|
if (lastfm_session_key)
|
||||||
free(lastfm_session_key);
|
free(lastfm_session_key);
|
||||||
@ -341,7 +341,7 @@ stop_scrobbling()
|
|||||||
// Disable LastFM, will be enabled after successful login request
|
// Disable LastFM, will be enabled after successful login request
|
||||||
lastfm_disabled = true;
|
lastfm_disabled = true;
|
||||||
|
|
||||||
db_admin_delete("lastfm_sk");
|
db_admin_delete(ADMIN_LASTFM_SESSION_KEY);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Thread: filescanner, httpd */
|
/* Thread: filescanner, httpd */
|
||||||
@ -422,7 +422,7 @@ lastfm_is_enabled(void)
|
|||||||
int
|
int
|
||||||
lastfm_init(void)
|
lastfm_init(void)
|
||||||
{
|
{
|
||||||
lastfm_session_key = db_admin_get("lastfm_sk");
|
lastfm_session_key = db_admin_get(ADMIN_LASTFM_SESSION_KEY);
|
||||||
if (!lastfm_session_key)
|
if (!lastfm_session_key)
|
||||||
{
|
{
|
||||||
DPRINTF(E_DBG, L_LASTFM, "No valid LastFM session key\n");
|
DPRINTF(E_DBG, L_LASTFM, "No valid LastFM session key\n");
|
||||||
|
@ -104,7 +104,7 @@ handle_deferred_update_notifications(void)
|
|||||||
DPRINTF(E_DBG, L_LIB, "Database changed (%d changes)\n", deferred_update_notifications);
|
DPRINTF(E_DBG, L_LIB, "Database changed (%d changes)\n", deferred_update_notifications);
|
||||||
|
|
||||||
deferred_update_notifications = 0;
|
deferred_update_notifications = 0;
|
||||||
db_admin_setint64("db_update", (int64_t) time(NULL));
|
db_admin_setint64(ADMIN_DB_UPDATE, (int64_t) time(NULL));
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -741,7 +741,7 @@ mpd_command_status(struct evbuffer *evbuf, int argc, char **argv, char **errmsg,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
queue_version = db_queue_get_version();
|
queue_version = db_admin_getint(ADMIN_QUEUE_VERSION);
|
||||||
queue_length = db_queue_get_count();
|
queue_length = db_queue_get_count();
|
||||||
|
|
||||||
evbuffer_add_printf(evbuf,
|
evbuffer_add_printf(evbuf,
|
||||||
@ -842,7 +842,7 @@ mpd_command_stats(struct evbuffer *evbuf, int argc, char **argv, char **errmsg,
|
|||||||
fci.count,
|
fci.count,
|
||||||
4,
|
4,
|
||||||
(fci.length / 1000),
|
(fci.length / 1000),
|
||||||
(time_t) db_admin_getint64("db_update"),
|
(time_t) db_admin_getint64(ADMIN_DB_UPDATE),
|
||||||
7);
|
7);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -642,7 +642,7 @@ tokens_get(struct keyval *kv, const char **err)
|
|||||||
token_requested = time(NULL);
|
token_requested = time(NULL);
|
||||||
|
|
||||||
if (spotify_refresh_token)
|
if (spotify_refresh_token)
|
||||||
db_admin_set("spotify_refresh_token", spotify_refresh_token);
|
db_admin_set(ADMIN_SPOTIFY_REFRESH_TOKEN, spotify_refresh_token);
|
||||||
|
|
||||||
request_user_info();
|
request_user_info();
|
||||||
|
|
||||||
@ -701,7 +701,7 @@ spotifywebapi_token_refresh(char **user)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
refresh_token = db_admin_get("spotify_refresh_token");
|
refresh_token = db_admin_get(ADMIN_SPOTIFY_REFRESH_TOKEN);
|
||||||
if (!refresh_token)
|
if (!refresh_token)
|
||||||
{
|
{
|
||||||
DPRINTF(E_LOG, L_SPOTIFY, "No spotify refresh token found\n");
|
DPRINTF(E_LOG, L_SPOTIFY, "No spotify refresh token found\n");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user