This commit is contained in:
38
internal/handlers/resource_schema.go
Normal file
38
internal/handlers/resource_schema.go
Normal file
@@ -0,0 +1,38 @@
|
||||
package handlers
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/jackc/pgx/v5/pgxpool"
|
||||
)
|
||||
|
||||
// EnsureResourceI18nColumns adds per-locale text columns and backfills from legacy fields.
|
||||
func EnsureResourceI18nColumns(ctx context.Context, pool *pgxpool.Pool) error {
|
||||
_, err := pool.Exec(ctx, `
|
||||
ALTER TABLE resources ADD COLUMN IF NOT EXISTS title_zh_tw TEXT;
|
||||
ALTER TABLE resources ADD COLUMN IF NOT EXISTS title_zh_cn TEXT;
|
||||
ALTER TABLE resources ADD COLUMN IF NOT EXISTS title_en TEXT;
|
||||
ALTER TABLE resources ADD COLUMN IF NOT EXISTS description_zh_tw TEXT;
|
||||
ALTER TABLE resources ADD COLUMN IF NOT EXISTS description_zh_cn TEXT;
|
||||
ALTER TABLE resources ADD COLUMN IF NOT EXISTS description_en TEXT;
|
||||
ALTER TABLE resources ADD COLUMN IF NOT EXISTS body_text_zh_tw TEXT;
|
||||
ALTER TABLE resources ADD COLUMN IF NOT EXISTS body_text_zh_cn TEXT;
|
||||
ALTER TABLE resources ADD COLUMN IF NOT EXISTS body_text_en TEXT`)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
_, err = pool.Exec(ctx, `
|
||||
UPDATE resources SET title_zh_tw = title WHERE COALESCE(title_zh_tw, '') = '' AND COALESCE(title, '') <> '';
|
||||
UPDATE resources SET description_zh_tw = description WHERE description_zh_tw IS NULL AND description IS NOT NULL;
|
||||
UPDATE resources SET body_text_zh_tw = body_text WHERE body_text_zh_tw IS NULL AND body_text IS NOT NULL;
|
||||
UPDATE resources SET title_zh_cn = title WHERE language = 'zh-CN' AND COALESCE(title_zh_cn, '') = '';
|
||||
UPDATE resources SET description_zh_cn = description WHERE language = 'zh-CN' AND description_zh_cn IS NULL;
|
||||
UPDATE resources SET body_text_zh_cn = body_text WHERE language = 'zh-CN' AND body_text_zh_cn IS NULL;
|
||||
UPDATE resources SET title_en = title WHERE language = 'en' AND COALESCE(title_en, '') = '';
|
||||
UPDATE resources SET description_en = description WHERE language = 'en' AND description_en IS NULL;
|
||||
UPDATE resources SET body_text_en = body_text WHERE language = 'en' AND body_text_en IS NULL;
|
||||
UPDATE resources SET title = COALESCE(NULLIF(title_zh_tw, ''), title);
|
||||
UPDATE resources SET description = description_zh_tw;
|
||||
UPDATE resources SET body_text = body_text_zh_tw`)
|
||||
return err
|
||||
}
|
||||
Reference in New Issue
Block a user