diff --git a/api/migrations/20231221181946_create-tables.down.sql b/api/migrations/20231221181946_create-tables.down.sql index 078db25..0205930 100644 --- a/api/migrations/20231221181946_create-tables.down.sql +++ b/api/migrations/20231221181946_create-tables.down.sql @@ -2,8 +2,11 @@ DROP INDEX IF EXISTS status_name_uniq_idx; DROP INDEX IF EXISTS user_username_uniq_idx; DROP INDEX IF EXISTS user_email_uniq_idx; DROP INDEX IF EXISTS permission_name_uniq_idx; +DROP INDEX IF EXISTS account_type_name_uniq_idx; -DROP TABLE IF EXISTS public.user_permission; +DROP TABLE IF EXISTS public.account; DROP TABLE IF EXISTS public.permission; DROP TABLE IF EXISTS public.user; +DROP TABLE IF EXISTS public.budget CASCADE; DROP TABLE IF EXISTS public.status CASCADE; +DROP TABLE IF EXISTS public.account_type CASCADE; diff --git a/api/migrations/20231221181946_create-tables.up.sql b/api/migrations/20231221181946_create-tables.up.sql index 8ffcd60..e2e8afa 100644 --- a/api/migrations/20231221181946_create-tables.up.sql +++ b/api/migrations/20231221181946_create-tables.up.sql @@ -18,6 +18,27 @@ VALUES ('Removed'), ('Quarantined'); +CREATE TABLE IF NOT EXISTS + public.account_type ( + id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY, + name TEXT NOT NULL, + created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(), + updated_at TIMESTAMP WITH TIME ZONE NULL + ); + +CREATE UNIQUE INDEX IF NOT EXISTS account_type_name_uniq_idx ON public.account_type(name); + +INSERT INTO + public.account_type ( + name + ) +VALUES + ('Asset'), + ('Equity'), + ('Expense'), + ('Liability'), + ('Revenue'); + CREATE TABLE IF NOT EXISTS public.user ( id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY, @@ -43,9 +64,24 @@ CREATE TABLE IF NOT EXISTS CREATE UNIQUE INDEX IF NOT EXISTS permission_name_uniq_idx ON public.permission(name); CREATE TABLE IF NOT EXISTS - public.user_permission ( + public.budget ( id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY, - permission_id INT NOT NULL REFERENCES permission(id), - user_id INT NOT NULL REFERENCES public.user(id), - status_id INT NOT NULL REFERENCES status(id) + name TEXT NOT NULL, + description TEXT NULL, + status_id INT NOT NULL REFERENCES status(id) DEFAULT 1, + created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(), + updated_at TIMESTAMP WITH TIME ZONE NULL + ); + +CREATE TABLE IF NOT EXISTS + public.account ( + id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY, + account_type_id INT NOT NULL REFERENCES account_type(id), + budget_id INT NOT NULL REFERENCES budget(id), + name TEXT NOT NULL, + description TEXT NULL, + currency_code TEXT NOT NULL, + status_id INT NOT NULL REFERENCES status(id) DEFAULT 1, + created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(), + updated_at TIMESTAMP WITH TIME ZONE NULL ); diff --git a/api/src/requests/user/mod.rs b/api/src/requests/user/mod.rs index 60893bf..4d33436 100644 --- a/api/src/requests/user/mod.rs +++ b/api/src/requests/user/mod.rs @@ -17,7 +17,7 @@ pub fn requests(state: AppState) -> Router { "/user", Router::new() .route("/", post(user_registration_post_handler)) - .route("/:user_id/verify", get(user_verification_get_handler)), + .route("/{user_id}/verify", get(user_verification_get_handler)), ) .with_state(state.clone()) } diff --git a/api/src/services/config.rs b/api/src/services/config.rs index 4de7b48..eef0689 100644 --- a/api/src/services/config.rs +++ b/api/src/services/config.rs @@ -63,7 +63,7 @@ impl Config { } pub fn logging_directive(&self) -> String { - format!("{}={}", env!("CARGO_PKG_NAME"), self.log) + format!("{}={}", env!("CARGO_PKG_NAME").replace('-', "_"), self.log) } pub fn assets_dir(&self) -> &Path { @@ -79,22 +79,13 @@ impl Config { } } -#[derive(Clone, Copy, Debug, Deserialize)] -#[serde(untagged)] +#[derive(Clone, Copy, Debug, Deserialize, Eq, PartialEq)] +#[serde(rename_all = "lowercase")] pub enum ConfigLogLevel { - #[serde(rename = "trace")] Trace, - - #[serde(rename = "debug")] Debug, - - #[serde(rename = "info")] Info, - - #[serde(rename = "warn")] Warn, - - #[serde(rename = "error")] Error, } @@ -153,6 +144,7 @@ impl ConfigCache { "{}:{}@{}:{}", self.user, self.password, self.host, self.port )) + .path_and_query("/") .build() .unwrap() }