Merge remote-tracking branch 'origin/master'
This commit is contained in:
@@ -133,6 +133,12 @@ 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 {
|
if err := seedPricingTargetMapRows(pg, "mk_price_target_map_pg", "sdprcgrp_id"); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -155,6 +161,81 @@ WHERE is_active = TRUE
|
|||||||
return nil
|
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 {
|
func seedPricingTargetMapRows(pg *sql.DB, tableName string, valueColumn string) error {
|
||||||
currencies := []string{"TRY", "USD", "EUR"}
|
currencies := []string{"TRY", "USD", "EUR"}
|
||||||
for _, currency := range currencies {
|
for _, currency := range currencies {
|
||||||
|
|||||||
Reference in New Issue
Block a user