Merge remote-tracking branch 'origin/master'

This commit is contained in:
M_Kececi
2026-06-24 22:54:32 +03:00
parent be7ccdc466
commit 583af0230a
6 changed files with 337 additions and 150 deletions

View File

@@ -133,12 +133,6 @@ CREATE TABLE IF NOT EXISTS mk_dim_token_map (
}
}
// One-time bootstrap for mk_dim_token_map from authoritative PG data, if empty.
// This avoids heuristics (dfblob filename inference) polluting the token map on first deploy.
if err := seedDimTokenMapFromMmitemDim(pg); err != nil {
return err
}
if err := seedPricingTargetMapRows(pg, "mk_price_target_map_pg", "sdprcgrp_id"); err != nil {
return err
}
@@ -161,81 +155,6 @@ WHERE is_active = TRUE
return nil
}
func seedDimTokenMapFromMmitemDim(pg *sql.DB) error {
// Seed dimval1 only if it's currently empty.
var hasDimval1 int
_ = pg.QueryRow(`SELECT 1 FROM mk_dim_token_map WHERE dim_column='dimval1' LIMIT 1`).Scan(&hasDimval1)
if hasDimval1 == 0 {
// Prefer the most-used dim_id for a given code if duplicates exist, to keep the mapping stable.
if _, err := pg.Exec(`
WITH usage AS (
SELECT val1 AS dim_id, COUNT(*) AS cnt
FROM mmitem_dim
WHERE val1 IS NOT NULL
GROUP BY val1
),
candidates AS (
SELECT UPPER(BTRIM(d.code)) AS token, d.id AS dim_id, u.cnt
FROM usage u
JOIN dfgrp d ON d.id = u.dim_id
WHERE d.code IS NOT NULL
AND BTRIM(d.code) <> ''
),
picked AS (
SELECT DISTINCT ON (token) token, dim_id
FROM candidates
ORDER BY token, cnt DESC, dim_id
)
INSERT INTO mk_dim_token_map (dim_column, token, dim_id, updated_at)
SELECT 'dimval1', token, dim_id, now()
FROM picked
ON CONFLICT (dim_column, token)
DO UPDATE SET dim_id = EXCLUDED.dim_id, updated_at = EXCLUDED.updated_at
`); err != nil {
return err
}
}
// Seed dimval3 only if it's currently empty and there is at least one val3 in mmitem_dim.
var hasDimval3 int
_ = pg.QueryRow(`SELECT 1 FROM mk_dim_token_map WHERE dim_column='dimval3' LIMIT 1`).Scan(&hasDimval3)
if hasDimval3 == 0 {
var anyVal3 int
_ = pg.QueryRow(`SELECT 1 FROM mmitem_dim WHERE val3 IS NOT NULL LIMIT 1`).Scan(&anyVal3)
if anyVal3 != 0 {
if _, err := pg.Exec(`
WITH usage AS (
SELECT val3 AS dim_id, COUNT(*) AS cnt
FROM mmitem_dim
WHERE val3 IS NOT NULL
GROUP BY val3
),
candidates AS (
SELECT UPPER(BTRIM(d.code)) AS token, d.id AS dim_id, u.cnt
FROM usage u
JOIN dfgrp d ON d.id = u.dim_id
WHERE d.code IS NOT NULL
AND BTRIM(d.code) <> ''
),
picked AS (
SELECT DISTINCT ON (token) token, dim_id
FROM candidates
ORDER BY token, cnt DESC, dim_id
)
INSERT INTO mk_dim_token_map (dim_column, token, dim_id, updated_at)
SELECT 'dimval3', token, dim_id, now()
FROM picked
ON CONFLICT (dim_column, token)
DO UPDATE SET dim_id = EXCLUDED.dim_id, updated_at = EXCLUDED.updated_at
`); err != nil {
return err
}
}
}
return nil
}
func seedPricingTargetMapRows(pg *sql.DB, tableName string, valueColumn string) error {
currencies := []string{"TRY", "USD", "EUR"}
for _, currency := range currencies {