From 021b4c42b6bb2c92880a858f44cb4d125acef72d Mon Sep 17 00:00:00 2001 From: someone Date: Sun, 2 Jun 2024 20:52:00 +0200 Subject: [PATCH] Fixed version numbering and removed one test --- go_client/tests/secret_test.go | 12 ++++----- src/engines/kv.rs | 47 ++++++++++++++++++++++------------ 2 files changed, 36 insertions(+), 23 deletions(-) diff --git a/go_client/tests/secret_test.go b/go_client/tests/secret_test.go index ef40705..85dce30 100644 --- a/go_client/tests/secret_test.go +++ b/go_client/tests/secret_test.go @@ -98,12 +98,12 @@ func TestWriteSecret2(t *testing.T) { log.Println("kv2: Tried to write Secret at foo at mountpath: ", mountpath2) } -func TestDeleteSecret(t *testing.T) { - _, err := client.Secrets.KvV2Delete(ctx, "foo") // currently disregarding modifier options - if err != nil { - log.Fatal("kv2: Failed to delete secret:\n\t", err) - } -} +// func TestDeleteSecret(t *testing.T) { +// _, err := client.Secrets.KvV2Delete(ctx, "foo") // currently disregarding modifier options +// if err != nil { +// log.Fatal("kv2: Failed to delete secret:\n\t", err) +// } +// } func TestReadSecret(t *testing.T) { _, err := client.Secrets.KvV2Read(ctx, "bar") diff --git a/src/engines/kv.rs b/src/engines/kv.rs index a7ba89e..1d1148e 100644 --- a/src/engines/kv.rs +++ b/src/engines/kv.rs @@ -116,18 +116,32 @@ async fn post_data( payload.options, path ); - let existing_secrets = sqlx::query("SELECT * FROM secret_versions WHERE secret_path = $1") - .bind(&path) - .fetch_all(&pool) - .await - .unwrap(); - let mut version: i64 = existing_secrets.len().try_into().unwrap(); - version += 1; + + let mut highest_num = 0; + match sqlx::query("SELECT version_number FROM secret_versions WHERE secret_path = $1").bind (&path).fetch_all(&pool).await{ + Ok(v)=> { + + for curr_ver in v { + let curr_num = curr_ver.get("version_number"); + if highest_num < curr_num { + // should be the max of the available version numbers + highest_num = curr_num; + } + } + } + Err(e)=> { + log::error!("Error: {}", e) + } + } + + let version = highest_num + 1; + log::debug!("{:?}", version); let data = serde_json::to_string(&payload.data).unwrap(); log::debug!("Received data: {:?}", data); let created_time = Utc::now(); let created_time_string = created_time.to_string(); - let deletion_time = "12-12-2024 12:00:00"; // TODO: + let deletion_time = "12-12-2024 12:00:00"; // TODO + match sqlx::query("INSERT INTO secret_versions VALUES ($1, $2, $3, $4, $5)") .bind(&data) .bind(created_time_string) @@ -139,25 +153,24 @@ async fn post_data( { Ok(v) => { info!("{:?}", v); - + // match sqlx::query("SELECT custom_data FROM metadata where path = $1").bind(&path).fetch_one(&pool).await{ // Ok(v)=> { // // let meta = v.get("custom_data"); // TODO: get metadata from query - + // } - // Err(e) => { + // Err(e) => { // panic!("Couldn't find metadata"); // } // } let return_struct = KvSecretResData { - created_time : created_time, - custom_metadata : None, - deletion_time : None, - destroyed : false, - version : version + created_time: created_time, + custom_metadata: None, + deletion_time: None, + destroyed: false, + version: version, }; return Ok((StatusCode::OK, Json(return_struct)).into_response()); - } Err(e) => { error!("{:?}", e);