Merge remote-tracking branch 'origin/master'
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user