diff --git a/.gitignore b/.gitignore index 2d669dc..8cac0ad 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ target/ go_client/openapi.json crates/storage-sled/sled_db test.db +src/storage/database.db diff --git a/migrations/20240501152243_KvSecret.sql b/migrations/20240501152243_KvSecret.sql new file mode 100644 index 0000000..190d7f5 --- /dev/null +++ b/migrations/20240501152243_KvSecret.sql @@ -0,0 +1,28 @@ +-- Add migration script here + +CREATE TABLE metadata ( + secret_path TEXT PRIMARY KEY NOT NULL, + + cas_required INTEGER NOT NULL, -- no bool datatype in sqlite + created_time TIMESTAMP NOT NULL, + delete_version_after TEXT, -- Maybe NOT NULL + max_versions INTEGER NOT NULL, + -- current_version INTEGER NOT NULL, + -- oldest_version INTEGER NOT NULL, + updated_time TIMESTAMP NOT NULL, + custom_data TEXT +); + +CREATE TABLE secret_versions ( + secret_data TEXT NOT NULL, + + created_time TIMESTAMP NOT NULL, + deletion_time TIMESTAMP, + + version_number INTEGER NOT NULL DEFAULT 0, + secret_path TEXT NOT NULL, + PRIMARY KEY (secret_path, version_number), + FOREIGN KEY (secret_path) REFERENCES metadata(secret_path) +); + +CREATE INDEX idx_secret_versions_secret_path ON secret_versions (secret_path); diff --git a/src/engines/kv/structs.rs b/src/engines/kv/structs.rs index 444cec4..563c2eb 100644 --- a/src/engines/kv/structs.rs +++ b/src/engines/kv/structs.rs @@ -1,6 +1,6 @@ use chrono::{DateTime, Utc}; use serde::{Deserialize, Serialize}; -use std::{collections::HashMap, hash::Hash, vec}; +use std::{collections::HashMap, vec}; #[derive(Serialize, Deserialize, Debug)] pub struct KvSecret {