mirror of
https://github.com/owntone/owntone-server.git
synced 2025-03-20 12:34:18 -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
|
#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
|
void
|
||||||
db_speaker_clear_all(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
|
int
|
||||||
db_speaker_get(uint64_t id, int *selected, int *volume);
|
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
|
void
|
||||||
db_speaker_clear_all(void);
|
db_speaker_clear_all(void);
|
||||||
|
|
||||||
|
@ -140,7 +140,8 @@
|
|||||||
" id INTEGER PRIMARY KEY NOT NULL," \
|
" id INTEGER PRIMARY KEY NOT NULL," \
|
||||||
" selected INTEGER NOT NULL," \
|
" selected INTEGER NOT NULL," \
|
||||||
" volume 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 \
|
#define T_INOTIFY \
|
||||||
|
@ -26,7 +26,7 @@
|
|||||||
* is a major upgrade. In other words minor version upgrades permit downgrading
|
* is a major upgrade. In other words minor version upgrades permit downgrading
|
||||||
* forked-daapd after the database was upgraded. */
|
* forked-daapd after the database was upgraded. */
|
||||||
#define SCHEMA_VERSION_MAJOR 19
|
#define SCHEMA_VERSION_MAJOR 19
|
||||||
#define SCHEMA_VERSION_MINOR 03
|
#define SCHEMA_VERSION_MINOR 04
|
||||||
|
|
||||||
int
|
int
|
||||||
db_init_indices(sqlite3 *hdl);
|
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
|
int
|
||||||
db_upgrade(sqlite3 *hdl, int db_ver)
|
db_upgrade(sqlite3 *hdl, int db_ver)
|
||||||
{
|
{
|
||||||
@ -1678,6 +1695,13 @@ db_upgrade(sqlite3 *hdl, int db_ver)
|
|||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return -1;
|
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;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user