mirror of
https://github.com/owntone/owntone-server.git
synced 2025-03-13 21:12:56 -04:00
[db] Add column for auth key to speakers table (incl methods for saving/retrieving)
This commit is contained in:
parent
0642171de0
commit
0e9bca9e3d
67
src/db.c
67
src/db.c
@ -3893,6 +3893,73 @@ db_speaker_get(uint64_t id, int *selected, int *volume)
|
||||
#undef Q_TMPL
|
||||
}
|
||||
|
||||
int
|
||||
db_speaker_auth_save(uint64_t id, const char *authkey)
|
||||
{
|
||||
#define Q_TMPL "UPDATE speakers SET authkey = '%q' WHERE id = %" PRIi64 ";"
|
||||
char *query;
|
||||
|
||||
query = sqlite3_mprintf(Q_TMPL, authkey, id);
|
||||
|
||||
return db_query_run(query, 1, 0);
|
||||
#undef Q_TMPL
|
||||
}
|
||||
|
||||
char *
|
||||
db_speaker_auth_get(uint64_t id)
|
||||
{
|
||||
#define Q_TMPL "SELECT authkey FROM speakers WHERE id = %" PRIi64 ";"
|
||||
sqlite3_stmt *stmt;
|
||||
char *query;
|
||||
char *out;
|
||||
int ret;
|
||||
|
||||
out = NULL;
|
||||
|
||||
query = sqlite3_mprintf(Q_TMPL, id);
|
||||
if (!query)
|
||||
{
|
||||
DPRINTF(E_LOG, L_DB, "Out of memory for query string\n");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
DPRINTF(E_DBG, L_DB, "Running query '%s'\n", query);
|
||||
|
||||
ret = db_blocking_prepare_v2(query, -1, &stmt, NULL);
|
||||
if (ret != SQLITE_OK)
|
||||
{
|
||||
DPRINTF(E_LOG, L_DB, "Could not prepare statement: %s\n", sqlite3_errmsg(hdl));
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = db_blocking_step(stmt);
|
||||
if (ret != SQLITE_ROW)
|
||||
{
|
||||
if (ret != SQLITE_DONE)
|
||||
DPRINTF(E_LOG, L_DB, "Could not step: %s\n", sqlite3_errmsg(hdl));
|
||||
|
||||
sqlite3_finalize(stmt);
|
||||
goto out;
|
||||
}
|
||||
|
||||
out = (char *)sqlite3_column_text(stmt, 0);
|
||||
if (out)
|
||||
out = strdup(out);
|
||||
|
||||
#ifdef DB_PROFILE
|
||||
while (db_blocking_step(stmt) == SQLITE_ROW)
|
||||
; /* EMPTY */
|
||||
#endif
|
||||
|
||||
sqlite3_finalize(stmt);
|
||||
|
||||
out:
|
||||
sqlite3_free(query);
|
||||
return out;
|
||||
|
||||
#undef Q_TMPL
|
||||
}
|
||||
|
||||
void
|
||||
db_speaker_clear_all(void)
|
||||
{
|
||||
|
6
src/db.h
6
src/db.h
@ -682,6 +682,12 @@ db_speaker_save(uint64_t id, int selected, int volume, const char *name);
|
||||
int
|
||||
db_speaker_get(uint64_t id, int *selected, int *volume);
|
||||
|
||||
int
|
||||
db_speaker_auth_save(uint64_t id, const char *authkey);
|
||||
|
||||
char *
|
||||
db_speaker_auth_get(uint64_t id);
|
||||
|
||||
void
|
||||
db_speaker_clear_all(void);
|
||||
|
||||
|
@ -140,7 +140,8 @@
|
||||
" id INTEGER PRIMARY KEY NOT NULL," \
|
||||
" selected INTEGER NOT NULL," \
|
||||
" volume INTEGER NOT NULL," \
|
||||
" name VARCHAR(255) DEFAULT NULL" \
|
||||
" name VARCHAR(255) DEFAULT NULL," \
|
||||
" authkey VARCHAR(2048) DEFAULT NULL" \
|
||||
");"
|
||||
|
||||
#define T_INOTIFY \
|
||||
|
@ -26,7 +26,7 @@
|
||||
* is a major upgrade. In other words minor version upgrades permit downgrading
|
||||
* forked-daapd after the database was upgraded. */
|
||||
#define SCHEMA_VERSION_MAJOR 19
|
||||
#define SCHEMA_VERSION_MINOR 03
|
||||
#define SCHEMA_VERSION_MINOR 04
|
||||
|
||||
int
|
||||
db_init_indices(sqlite3 *hdl);
|
||||
|
@ -1547,6 +1547,23 @@ static const struct db_upgrade_query db_upgrade_v1903_queries[] =
|
||||
};
|
||||
|
||||
|
||||
#define U_V1904_ALTER_SPEAKERS_ADD_AUTHKEY \
|
||||
"ALTER TABLE speakers ADD COLUMN authkey VARCHAR(2048) DEFAULT NULL;"
|
||||
|
||||
#define U_V1904_SCVER_MAJOR \
|
||||
"UPDATE admin SET value = '19' WHERE key = 'schema_version_major';"
|
||||
#define U_V1904_SCVER_MINOR \
|
||||
"UPDATE admin SET value = '04' WHERE key = 'schema_version_minor';"
|
||||
|
||||
static const struct db_upgrade_query db_upgrade_v1904_queries[] =
|
||||
{
|
||||
{ U_V1904_ALTER_SPEAKERS_ADD_AUTHKEY, "alter table speakers add column authkey" },
|
||||
|
||||
{ U_V1904_SCVER_MAJOR, "set schema_version_major to 19" },
|
||||
{ U_V1904_SCVER_MINOR, "set schema_version_minor to 04" },
|
||||
};
|
||||
|
||||
|
||||
int
|
||||
db_upgrade(sqlite3 *hdl, int db_ver)
|
||||
{
|
||||
@ -1678,6 +1695,13 @@ db_upgrade(sqlite3 *hdl, int db_ver)
|
||||
if (ret < 0)
|
||||
return -1;
|
||||
|
||||
/* FALLTHROUGH */
|
||||
|
||||
case 1903:
|
||||
ret = db_generic_upgrade(hdl, db_upgrade_v1904_queries, sizeof(db_upgrade_v1904_queries) / sizeof(db_upgrade_v1904_queries[0]));
|
||||
if (ret < 0)
|
||||
return -1;
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
|
Loading…
x
Reference in New Issue
Block a user