From 52451f85b5607160c8cfd2691bd4e8ad4ec5c0fd Mon Sep 17 00:00:00 2001 From: Josiah Glosson Date: Wed, 12 Mar 2025 11:10:33 -0500 Subject: [PATCH] Attempt to fix cache issue --- packages/app-lib/src/state/cache.rs | 46 ++++++++++++++++++++++++----- 1 file changed, 38 insertions(+), 8 deletions(-) diff --git a/packages/app-lib/src/state/cache.rs b/packages/app-lib/src/state/cache.rs index 000ff4eea..82c23cb87 100644 --- a/packages/app-lib/src/state/cache.rs +++ b/packages/app-lib/src/state/cache.rs @@ -1420,7 +1420,8 @@ impl CachedEntry { sqlx::query!( " - INSERT INTO cache (id, data_type, alias, data, expires) + MERGE INTO cache AS target + USING ( SELECT json_extract(value, '$.id') AS id, json_extract(value, '$.data_type') AS data_type, @@ -1430,15 +1431,44 @@ impl CachedEntry { FROM json_each($1) WHERE TRUE - ON CONFLICT (id, data_type) DO UPDATE SET - alias = excluded.alias, - data = excluded.data, - expires = excluded.expires + ) as items + ON target.data_type = items.data_type AND target.alias = items.alias + WHEN MATCHED THEN + UPDATE SET id = items.id, + data_type = items.data_type, + alias = items.alias, + data = items.data, + expires = items.expires + WHEN NOT MATCHED THEN + INSERT (id, data_type, alias, data, expires) + VALUES (items.id, items.data_type, items.alias, items.data, items.expires) ", - items, + items ) - .execute(exec) - .await?; + .execute(exec) + .await?; + + // sqlx::query!( + // " + // INSERT INTO cache (id, data_type, alias, data, expires) + // SELECT + // json_extract(value, '$.id') AS id, + // json_extract(value, '$.data_type') AS data_type, + // json_extract(value, '$.alias') AS alias, + // json_extract(value, '$.data') AS data, + // json_extract(value, '$.expires') AS expires + // FROM + // json_each($1) + // WHERE TRUE + // ON CONFLICT (id, data_type) DO UPDATE SET + // alias = excluded.alias, + // data = excluded.data, + // expires = excluded.expires + // ", + // items, + // ) + // .execute(exec) + // .await?; Ok(()) }