mirror of
https://github.com/zkldi/Tachi.git
synced 2026-09-29 18:37:58 +03:00
fix: new migration; fix broken showcase stats
This commit is contained in:
@@ -69,11 +69,11 @@ jobs:
|
||||
VITE_RECAPTCHA_KEY: "6LcsYbIpAAAAAEJffjIXmbQcxj_SBZG7BnSPjF4L"
|
||||
VITE_SERVER_URL: "https://v3-boku.tachi.ac"
|
||||
VITE_DISCORD: "https://discord.gg/E4n8ZZF5ES"
|
||||
VITE_CDN_URL: "https://cdn-v3-boku.tachi.ac"
|
||||
VITE_CDN_URL: "https://cdn-boku.tachi.ac"
|
||||
TACHI_NAME: "Bokutachi"
|
||||
BUILD_OUT_DIR: /tmp/boku
|
||||
|
||||
- name: Build Kamaitachi (v3)
|
||||
- name: Build Kamaitachi
|
||||
run: bun run --filter tachi-client build
|
||||
env:
|
||||
VITE_MANDATE_LOGIN: true
|
||||
@@ -83,7 +83,7 @@ jobs:
|
||||
VITE_MIN_CLIENT_ID: "A0DBDBB063CD800530EF01C6488B282137E0191E"
|
||||
VITE_DISCORD: "https://discord.gg/NNgGJbpQUj"
|
||||
VITE_TCHIC_MODE: "kamai"
|
||||
VITE_CDN_URL: "https://cdn-v3-kamai.tachi.ac"
|
||||
VITE_CDN_URL: "https://cdn-kamai.tachi.ac"
|
||||
VITE_GIT_REPO: "GitHub:zkldi/Tachi"
|
||||
VITE_RECAPTCHA_KEY: "6LcsYbIpAAAAAEJffjIXmbQcxj_SBZG7BnSPjF4L"
|
||||
TACHI_NAME: "Kamaitachi"
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
-- Remove showcase entries that reference deleted charts or folders (slug + game).
|
||||
-- `game_profile.showcase` is a JSONB array; chart entries use mode "chart" + chartID;
|
||||
-- folder entries use mode "folder" + slug, scoped to game_profile.game.
|
||||
|
||||
UPDATE game_profile AS gp
|
||||
SET showcase = cleaned.new_showcase
|
||||
FROM (
|
||||
SELECT
|
||||
gp_inner.user_id,
|
||||
gp_inner.game,
|
||||
COALESCE(
|
||||
(
|
||||
SELECT jsonb_agg(t.elem ORDER BY t.ordinality)
|
||||
FROM jsonb_array_elements(gp_inner.showcase) WITH ORDINALITY AS t(elem, ordinality)
|
||||
WHERE CASE t.elem->>'mode'
|
||||
WHEN 'chart' THEN EXISTS (
|
||||
SELECT 1
|
||||
FROM chart AS c
|
||||
WHERE c.id = t.elem->>'chartID'
|
||||
)
|
||||
WHEN 'folder' THEN EXISTS (
|
||||
SELECT 1
|
||||
FROM folder AS f
|
||||
WHERE f.game = gp_inner.game
|
||||
AND f.slug = t.elem->>'slug'
|
||||
)
|
||||
ELSE TRUE
|
||||
END
|
||||
),
|
||||
'[]'::jsonb
|
||||
) AS new_showcase
|
||||
FROM game_profile AS gp_inner
|
||||
WHERE jsonb_typeof(gp_inner.showcase) = 'array'
|
||||
AND jsonb_array_length(gp_inner.showcase) > 0
|
||||
) AS cleaned
|
||||
WHERE gp.user_id = cleaned.user_id
|
||||
AND gp.game = cleaned.game
|
||||
AND gp.showcase IS DISTINCT FROM cleaned.new_showcase;
|
||||
Reference in New Issue
Block a user