diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/dbi.c | 25 | ||||
-rw-r--r-- | src/dbi.h | 2 | ||||
-rw-r--r-- | src/rest.c | 4 |
3 files changed, 18 insertions, 13 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; } @@ -144,7 +144,7 @@ int og_dbi_add_image(struct og_dbi *dbi, struct og_image *image); int og_dbi_schema_update(void); -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); #endif @@ -3737,17 +3737,17 @@ static int og_cmd_add_image(json_t *element, struct og_msg_params *params, snprintf(new_image_id, sizeof(new_image_id), "%lu", params->image.id); params->id = new_image_id; - json_object_set_new(element, "id", json_string(params->id)); } else { syslog(LOG_INFO, "updating existing image `%s'\n", params->image.name); snprintf(new_image_id, sizeof(new_image_id), "%lu", params->image.id); params->id = new_image_id; } + json_object_set_new(element, "id", json_string(params->id)); clients = json_copy(element); json_object_del(clients, "clients"); - err = og_dbi_get_repository_ip(dbi, atoll(params->id), repository_ip); + err = og_dbi_get_repository_ip(dbi, params->image.repo_id, repository_ip); og_dbi_close(dbi); if (err < 0) return err; |