From 83c5768935190d2a3af726718280b7ae788b844e Mon Sep 17 00:00:00 2001 From: DSeeLP <46624152+DSeeLP@users.noreply.github.com> Date: Tue, 11 Mar 2025 11:12:56 +0100 Subject: [PATCH] make account names unique per user not globally --- migrations/000000_baseline.sql | 5 +++-- src/model/user.rs | 2 +- tests/integration/account-list.hurl | 14 ++++++-------- tests/integration/user-account-list.hurl | 2 +- tests/integration/user-list.hurl | 2 -- 5 files changed, 11 insertions(+), 14 deletions(-) diff --git a/migrations/000000_baseline.sql b/migrations/000000_baseline.sql index 3ec6b97..da1033e 100644 --- a/migrations/000000_baseline.sql +++ b/migrations/000000_baseline.sql @@ -7,8 +7,9 @@ create table users( create table accounts( id uuid primary key, "user" uuid not null references users(id), - name varchar(32) not null unique, - balance bigint not null default 0 constraint positive_balance check (balance >= 0) + name varchar(32) not null, + balance bigint not null default 0 constraint positive_balance check (balance >= 0), + unique ("user", name) ); create table transactions( diff --git a/src/model/user.rs b/src/model/user.rs index 2cc97f0..87393cf 100644 --- a/src/model/user.rs +++ b/src/model/user.rs @@ -59,7 +59,7 @@ impl User { tx.execute(&stmt, &[&id, &name, &hash]) .await .map_err(|err| unique_violation(err, conflict_error))?; - Account::create(&mut tx, Some(id), id, name) + Account::create(&mut tx, Some(id), id, "personal") .await .map_err(|err| unique_violation(err, conflict_error))?; tx.commit().await?; diff --git a/tests/integration/account-list.hurl b/tests/integration/account-list.hurl index 76bd8fd..2e825e0 100644 --- a/tests/integration/account-list.hurl +++ b/tests/integration/account-list.hurl @@ -12,14 +12,12 @@ GET {{host}}/api/accounts?limit=50 Authorization: Bearer {{token}} HTTP 200 [Asserts] -jsonpath "$.pagination.total" == 7 jsonpath "$.pagination.limit" == 50 jsonpath "$.pagination.offset" == 0 jsonpath "$.result" isCollection -jsonpath "$.result[0].name" == "user1" -jsonpath "$.result[1].name" == "user2" -jsonpath "$.result[2].name" == "user3" -jsonpath "$.result[3].name" == "user4" -jsonpath "$.result[4].name" == "user5" -jsonpath "$.result[5].name" == "user6" -jsonpath "$.result[6].name" == "test-user" +jsonpath "$.result[0].name" == "personal" +jsonpath "$.result[1].name" == "personal" +jsonpath "$.result[2].name" == "personal" +jsonpath "$.result[3].name" == "personal" +jsonpath "$.result[4].name" == "personal" +jsonpath "$.result[5].name" == "personal" diff --git a/tests/integration/user-account-list.hurl b/tests/integration/user-account-list.hurl index 2db5425..1ad0966 100644 --- a/tests/integration/user-account-list.hurl +++ b/tests/integration/user-account-list.hurl @@ -13,5 +13,5 @@ Authorization: Bearer {{token}} HTTP 200 [Asserts] jsonpath "$.result" isCollection -jsonpath "$.result[0].name" == "user1" +jsonpath "$.result[0].name" == "personal" jsonpath "$.result[0].balance" == 100000 diff --git a/tests/integration/user-list.hurl b/tests/integration/user-list.hurl index d99b215..adcefca 100644 --- a/tests/integration/user-list.hurl +++ b/tests/integration/user-list.hurl @@ -12,7 +12,6 @@ GET {{host}}/api/users?limit=50 Authorization: Bearer {{token}} HTTP 200 [Asserts] -jsonpath "$.pagination.total" == 7 jsonpath "$.pagination.limit" == 50 jsonpath "$.pagination.offset" == 0 jsonpath "$.result" isCollection @@ -22,4 +21,3 @@ jsonpath "$.result[2].name" == "user3" jsonpath "$.result[3].name" == "user4" jsonpath "$.result[4].name" == "user5" jsonpath "$.result[5].name" == "user6" -jsonpath "$.result[6].name" == "test-user"