fix bug
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Generate client merge SQL (settings + const) from:
|
||||
- goldAli catalog template (abshode_rahimi_merge_goldali_catalog.sql UPDATE blocks)
|
||||
- reference catalog template (abshode_rahimi_merge_goldali_catalog.sql UPDATE blocks)
|
||||
- client JSON: { "settings": [...], "const": [...] }
|
||||
|
||||
Usage:
|
||||
@@ -25,7 +25,7 @@ CONST_CATALOG: list[dict] = [
|
||||
{"key": "header_banner", "title_fa": "بنر بالای صفحه", "default": ""},
|
||||
{"key": "app_closed", "title_fa": "بسته بودن اپ", "default": "false"},
|
||||
{"key": "main_product", "title_fa": "محصول آبشده پیشفرض", "default": "13"},
|
||||
{"key": "gram", "title_fa": "گرم ثبتنام", "default": ""},
|
||||
{"key": "gram", "title_fa": "گرم ثبتنام", "default": "0"},
|
||||
{"key": "first_customer_wallet_value", "title_fa": "حداقل اولین خرید", "default": ""},
|
||||
{"key": "jibit_counter", "title_fa": "شمارنده جیبیت", "default": "0"},
|
||||
{"key": "price", "title_fa": "لیست قیمت TGJU (JSON)", "default": "[]"},
|
||||
@@ -41,8 +41,45 @@ SETTINGS_SKIP = {
|
||||
"montzar_order_response",
|
||||
"montzar_last_product_log",
|
||||
"liman_token",
|
||||
"is_requaire_referral",
|
||||
}
|
||||
|
||||
# metadata overrides for catalog keys (e.g. editable in admin panel)
|
||||
SETTINGS_META_OVERRIDES: dict[str, dict] = {
|
||||
"referral_id": {
|
||||
"can_edit": 1,
|
||||
"description": "required = اجباری؛ خالی = اختیاری|required,",
|
||||
},
|
||||
}
|
||||
|
||||
LEGACY_SETTINGS_DELETE = ("is_requaire_referral",)
|
||||
|
||||
|
||||
def legacy_referral_migration_sql() -> list[str]:
|
||||
"""اگر is_requaire_referral قدیمی روشن بود → referral_id = required"""
|
||||
return [
|
||||
"-- legacy is_requaire_referral → referral_id",
|
||||
"UPDATE `settings` AS r",
|
||||
"SET",
|
||||
" r.`value` = 'required',",
|
||||
" r.`is_active` = 1,",
|
||||
" r.`updated_at` = NOW()",
|
||||
"WHERE r.`key` = 'referral_id'",
|
||||
" AND EXISTS (",
|
||||
" SELECT 1",
|
||||
" FROM (",
|
||||
" SELECT `value`, `is_active`",
|
||||
" FROM `settings`",
|
||||
" WHERE `key` = 'is_requaire_referral'",
|
||||
" LIMIT 1",
|
||||
" ) AS leg",
|
||||
" WHERE leg.`is_active` = 1",
|
||||
" AND LOWER(TRIM(COALESCE(leg.`value`, ''))) IN ('true', '1', 'yes')",
|
||||
" )",
|
||||
" AND TRIM(COALESCE(r.`value`, '')) <> 'required';",
|
||||
"",
|
||||
]
|
||||
|
||||
CONST_SKIP_PREFIXES = ("goldir",)
|
||||
CONST_SKIP_KEYS = {"log", "last_order_log"}
|
||||
|
||||
@@ -168,7 +205,7 @@ def generate_settings_sql(
|
||||
) -> str:
|
||||
lines: list[str] = [
|
||||
"-- =============================================================================",
|
||||
f"-- {client_name_fa} — ادغام settings با کاتالوگ goldAliii",
|
||||
f"-- {client_name_fa} — ادغام settings با کاتالوگ واحد",
|
||||
"--",
|
||||
f"-- منبع مقادیر: {client_name}_client.json",
|
||||
f"-- قالب کلیدها: goldali ({len(catalog)} کلید)",
|
||||
@@ -176,6 +213,7 @@ def generate_settings_sql(
|
||||
"-- قوانین:",
|
||||
"-- • کلید مشترک → value از کلاینت، metadata از کاتالوگ",
|
||||
"-- • کلید کاتالوگ بدون مقدار در کلاینت → value=''، is_active=0",
|
||||
"-- • هر setting با value پر → is_active=1 (الزام ConfigService)",
|
||||
"-- • کلیدهای اضافی کلاینت → DELETE",
|
||||
"--",
|
||||
f"-- قبل از اجرا: USE دیتابیس {client_name_fa} + بکاپ",
|
||||
@@ -197,7 +235,9 @@ def generate_settings_sql(
|
||||
catalog_keys = sorted(catalog.keys())
|
||||
|
||||
for key in catalog_keys:
|
||||
meta = catalog[key]
|
||||
meta = dict(catalog[key])
|
||||
if key in SETTINGS_META_OVERRIDES:
|
||||
meta.update(SETTINGS_META_OVERRIDES[key])
|
||||
val = client_settings.get(key)
|
||||
if val is None:
|
||||
val = ""
|
||||
@@ -214,7 +254,9 @@ def generate_settings_sql(
|
||||
lines.extend(["", "-- 2) UPDATE", ""])
|
||||
|
||||
for key in catalog_keys:
|
||||
meta = catalog[key]
|
||||
meta = dict(catalog[key])
|
||||
if key in SETTINGS_META_OVERRIDES:
|
||||
meta.update(SETTINGS_META_OVERRIDES[key])
|
||||
val = client_settings.get(key)
|
||||
if val is None:
|
||||
val = ""
|
||||
@@ -243,6 +285,11 @@ def generate_settings_sql(
|
||||
" `updated_at` = NOW()",
|
||||
"WHERE `key` LIKE 'logo_login%' AND `key` <> 'logo_login';",
|
||||
"",
|
||||
"-- 3b) legacy is_requaire_referral → referral_id (قبل از DELETE)",
|
||||
"",
|
||||
])
|
||||
lines.extend(legacy_referral_migration_sql())
|
||||
lines.extend([
|
||||
"-- 4) DELETE extras",
|
||||
"",
|
||||
"DELETE FROM `settings`",
|
||||
@@ -256,6 +303,20 @@ def generate_settings_sql(
|
||||
"",
|
||||
"DELETE FROM `settings` WHERE `key` = 'price_method';",
|
||||
"",
|
||||
"-- 4b) حذف کلیدهای legacy",
|
||||
"",
|
||||
])
|
||||
for legacy_key in LEGACY_SETTINGS_DELETE:
|
||||
lines.append(f"DELETE FROM `settings` WHERE `key` = {sql_str(legacy_key)};")
|
||||
lines.extend([
|
||||
"",
|
||||
"-- 5) is_active — ConfigService فقط وقتی is_active=1 و value پر باشد میخواند",
|
||||
"",
|
||||
"UPDATE `settings` SET",
|
||||
" `is_active` = 1,",
|
||||
" `updated_at` = NOW()",
|
||||
"WHERE TRIM(COALESCE(`value`, '')) <> '';",
|
||||
"",
|
||||
"COMMIT;",
|
||||
"",
|
||||
])
|
||||
@@ -269,7 +330,7 @@ def generate_const_sql(
|
||||
) -> str:
|
||||
lines: list[str] = [
|
||||
"-- =============================================================================",
|
||||
f"-- {client_name_fa} — ادغام const با کاتالوگ goldAliii",
|
||||
f"-- {client_name_fa} — ادغام const با کاتالوگ واحد",
|
||||
"--",
|
||||
f"-- منبع مقادیر: {client_name}_client.json",
|
||||
"-- قالب: 10 کلید goldali",
|
||||
|
||||
Reference in New Issue
Block a user