From f27245f996b3551a37016a5d6cf680c99c8c2971 Mon Sep 17 00:00:00 2001 From: Lennart K <18233294+lennart-k@users.noreply.github.com> Date: Tue, 1 Jul 2025 13:49:43 +0200 Subject: [PATCH] fix(store_sqlite): Principal upsert --- ...319f0bc8f35dfdcf6a8247e03b1de3e2cabb2d3ab8ae.json | 12 ------------ ...9d4ff076575394e625dd19f00dea2d4c71a9f34a5952.json | 12 ++++++++++++ crates/store_sqlite/src/principal_store.rs | 8 +++++--- 3 files changed, 17 insertions(+), 15 deletions(-) delete mode 100644 .sqlx/query-2f043f62a7c0eae1023e319f0bc8f35dfdcf6a8247e03b1de3e2cabb2d3ab8ae.json create mode 100644 .sqlx/query-5c09c2a3c052188435409d4ff076575394e625dd19f00dea2d4c71a9f34a5952.json diff --git a/.sqlx/query-2f043f62a7c0eae1023e319f0bc8f35dfdcf6a8247e03b1de3e2cabb2d3ab8ae.json b/.sqlx/query-2f043f62a7c0eae1023e319f0bc8f35dfdcf6a8247e03b1de3e2cabb2d3ab8ae.json deleted file mode 100644 index e9e8047..0000000 --- a/.sqlx/query-2f043f62a7c0eae1023e319f0bc8f35dfdcf6a8247e03b1de3e2cabb2d3ab8ae.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "\n REPLACE INTO principals\n (id, displayname, principal_type, password_hash)\n VALUES (?, ?, ?, ?)\n ", - "describe": { - "columns": [], - "parameters": { - "Right": 4 - }, - "nullable": [] - }, - "hash": "2f043f62a7c0eae1023e319f0bc8f35dfdcf6a8247e03b1de3e2cabb2d3ab8ae" -} diff --git a/.sqlx/query-5c09c2a3c052188435409d4ff076575394e625dd19f00dea2d4c71a9f34a5952.json b/.sqlx/query-5c09c2a3c052188435409d4ff076575394e625dd19f00dea2d4c71a9f34a5952.json new file mode 100644 index 0000000..d866125 --- /dev/null +++ b/.sqlx/query-5c09c2a3c052188435409d4ff076575394e625dd19f00dea2d4c71a9f34a5952.json @@ -0,0 +1,12 @@ +{ + "db_name": "SQLite", + "query": "\n INSERT INTO principals\n (id, displayname, principal_type, password_hash) VALUES (?, ?, ?, ?)\n ON CONFLICT(id) DO UPDATE SET\n (displayname, principal_type, password_hash)\n = (excluded.displayname, excluded.principal_type, excluded.password_hash)\n ", + "describe": { + "columns": [], + "parameters": { + "Right": 4 + }, + "nullable": [] + }, + "hash": "5c09c2a3c052188435409d4ff076575394e625dd19f00dea2d4c71a9f34a5952" +} diff --git a/crates/store_sqlite/src/principal_store.rs b/crates/store_sqlite/src/principal_store.rs index 72f9337..b6429e0 100644 --- a/crates/store_sqlite/src/principal_store.rs +++ b/crates/store_sqlite/src/principal_store.rs @@ -114,9 +114,11 @@ impl AuthenticationProvider for SqlitePrincipalStore { let password = user.password.map(Secret::into_inner); sqlx::query!( r#" - REPLACE INTO principals - (id, displayname, principal_type, password_hash) - VALUES (?, ?, ?, ?) + INSERT INTO principals + (id, displayname, principal_type, password_hash) VALUES (?, ?, ?, ?) + ON CONFLICT(id) DO UPDATE SET + (displayname, principal_type, password_hash) + = (excluded.displayname, excluded.principal_type, excluded.password_hash) "#, user.id, user.displayname,