summaryrefslogtreecommitdiffstats
path: root/src/dbi.c
diff options
context:
space:
mode:
authorOpenGnSys Support Team <soporte-og@soleta.eu>2024-07-19 13:05:11 +0200
committerOpenGnSys Support Team <soporte-og@soleta.eu>2024-07-19 14:20:16 +0200
commita67c0d3d5756642373097261bc503f18f123e933 (patch)
treef923895e3dc49129904ae11f5e8ac1e2ad19790b /src/dbi.c
parent075725b1feef20a0cec4ef8affdf792aba2d6e23 (diff)
dbi: use repository_id field if front-end offers it
If repository_id json field is provided, use it to narrow down the image lookup. After this, search use this same repository ID to fetch the IP address. Old web console may not provide repository_id, infer it from the image name. Always set image id field for creation and update.
Diffstat (limited to 'src/dbi.c')
-rw-r--r--src/dbi.c25
1 files changed, 15 insertions, 10 deletions
diff --git a/src/dbi.c b/src/dbi.c
index a3bee37..9eb1a39 100644
--- a/src/dbi.c
+++ b/src/dbi.c
@@ -242,9 +242,16 @@ bool og_dbi_get_image(struct og_dbi *dbi, struct og_image *image)
const char *msglog;
dbi_result result;
- result = dbi_conn_queryf(dbi->conn,
- "SELECT nombreca, idimagen FROM imagenes WHERE nombreca = '%s'",
- image->name);
+ /* old front-end needs this... */
+ if (image->repo_id) {
+ result = dbi_conn_queryf(dbi->conn,
+ "SELECT nombreca, idimagen FROM imagenes WHERE nombreca = '%s'",
+ image->name);
+ } else {
+ result = dbi_conn_queryf(dbi->conn,
+ "SELECT nombreca, idimagen FROM imagenes WHERE nombreca = '%s' AND idrepositorio = '%s'",
+ image->name, image->repo_id);
+ }
if (!result) {
dbi_conn_error(dbi->conn, &msglog);
syslog(LOG_ERR, "failed to query database (%s:%d) %s\n",
@@ -262,17 +269,15 @@ bool og_dbi_get_image(struct og_dbi *dbi, struct og_image *image)
return false;
}
-int og_dbi_get_repository_ip(const struct og_dbi *dbi, const uint64_t image_id,
+int og_dbi_get_repository_ip(const struct og_dbi *dbi, const uint32_t repo_id,
char *repository_ip)
{
const char *msglog, *dbi_repository_ip;
dbi_result result;
result = dbi_conn_queryf(dbi->conn,
- "SELECT r.ip FROM imagenes i "
- "JOIN repositorios r USING (idrepositorio) "
- "WHERE i.idimagen = %lu",
- image_id);
+ "SELECT ip FROM repositorios WHERE idrepositorio = %u",
+ repo_id);
if (!result) {
dbi_conn_error(dbi->conn, &msglog);
syslog(LOG_ERR, "failed to query database (%s:%d) %s\n",
@@ -283,8 +288,8 @@ int og_dbi_get_repository_ip(const struct og_dbi *dbi, const uint64_t image_id,
if (!dbi_result_next_row(result)) {
dbi_conn_error(dbi->conn, &msglog);
syslog(LOG_ERR,
- "image with id %lu has no repository (%s:%d) %s\n",
- image_id, __func__, __LINE__, msglog);
+ "repository with id %u does not exist (%s:%d) %s\n",
+ repo_id, __func__, __LINE__, msglog);
dbi_result_free(result);
return -1;
}