Skip to content
Permalink
Browse files

Add SQL query for fetching a snapshot from a given id

  • Loading branch information
umeshksingla authored and neverpanic committed Aug 5, 2017
1 parent 48f6300 commit 1ee0193df0b461163c0f1347cdde5ffc26617f53
Showing with 45 additions and 3 deletions.
  1. +44 −2 src/cregistry/entry.c
  2. +1 −1 src/cregistry/entry.h
@@ -1566,12 +1566,54 @@ char* reg_snapshot_get_id(reg_registry* reg, char* id, reg_error* errPtr) {

}

snapshot* reg_snapshot_get(reg_registry* reg, char* id, reg_error* errPtr) {
reg_snapshot* reg_snapshot_get(reg_registry* reg, char* id, reg_error* errPtr) {

printf("inside cregistry get snapshot..\n");

sqlite3_stmt* stmt = NULL;
reg_entry* entry = NULL;
char* query = "SELECT id FROM registry.snapshots ORDER BY id DESC LIMIT 1";

char* query = "SELECT * FROM registry.snapshots "
"INNER JOIN "
"registry.snapshot_ports ON "
"snapshots.id=snapshot_ports.snapshots_id "
"LEFT JOIN "
"registry.snapshot_port_variants ON "
"snapshot_ports.id=snapshot_port_variants.snapshot_ports_id"
"WHERE snapshots.id=?";

if ((sqlite3_prepare_v2(reg->db, query, -1, &stmt, NULL) == SQLITE_OK)
&& sqlite3_bind_int64(stmt, 1, sqlite_int64(id)) == SQLITE_OK ) {

int r;
do {
r = sqlite3_step(stmt);
switch (r) {
case SQLITE_ROW:
reg_snapshot* snapshot;
// TODO
break;
case SQLITE_DONE:
errPtr->code = REG_NOT_FOUND;
errPtr->description = sqlite3_mprintf("no matching snapshot found for id = %s", id);
errPtr->free = (reg_error_destructor*) sqlite3_free;
break;
case SQLITE_BUSY:
continue;
default:
reg_sqlite_error(reg->db, errPtr, query);
break;
}
} while (r == SQLITE_BUSY);

} else {
reg_sqlite_error(reg->db, errPtr, query);
}

if (stmt) {
sqlite3_finalize(stmt);
}
return snapshot;
}

/**
@@ -123,7 +123,7 @@ int get_parsed_variants(char* variants_str, variant* all_variants,
char* delim, int* variant_count);

char* reg_snapshot_get_id(reg_registry* reg, reg_error* errPtr);
snapshot* reg_snapshot_get(reg_registry* reg, char* id, reg_error* errPtr);
reg_snapshot* reg_snapshot_get(reg_registry* reg, char* id, reg_error* errPtr);

int reg_all_open_entries(reg_registry* reg, reg_entry*** entries);

0 comments on commit 1ee0193

Please sign in to comment.
You can’t perform that action at this time.