diff options
author | OpenGnSys Support Team <soporte-og@soleta.eu> | 2024-07-19 13:05:11 +0200 |
---|---|---|
committer | OpenGnSys Support Team <soporte-og@soleta.eu> | 2024-07-19 14:20:16 +0200 |
commit | a67c0d3d5756642373097261bc503f18f123e933 (patch) | |
tree | f923895e3dc49129904ae11f5e8ac1e2ad19790b /src/dbi.c | |
parent | 075725b1feef20a0cec4ef8affdf792aba2d6e23 (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.c | 25 |
1 files changed, 15 insertions, 10 deletions
@@ -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; } |