sql generator
This commit is contained in:
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,117 @@
|
||||
-- =============================================================================
|
||||
-- عبایی گلد — ادغام const با کاتالوگ goldAliii
|
||||
--
|
||||
-- منبع مقادیر: abaeigold_client.json
|
||||
-- قالب: 10 کلید goldali
|
||||
-- =============================================================================
|
||||
|
||||
START TRANSACTION;
|
||||
|
||||
SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
|
||||
ALTER TABLE `const`
|
||||
MODIFY COLUMN `title_fa` VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL;
|
||||
|
||||
-- 1) INSERT
|
||||
|
||||
INSERT INTO `const` (`key`, `value`, `title_fa`)
|
||||
SELECT 'limited_price', '', 'سقف قیمت محدود'
|
||||
WHERE NOT EXISTS (SELECT 1 FROM `const` WHERE `key` = 'limited_price' LIMIT 1);
|
||||
INSERT INTO `const` (`key`, `value`, `title_fa`)
|
||||
SELECT 'is_gateway_open', '', 'باز بودن درگاه پرداخت'
|
||||
WHERE NOT EXISTS (SELECT 1 FROM `const` WHERE `key` = 'is_gateway_open' LIMIT 1);
|
||||
INSERT INTO `const` (`key`, `value`, `title_fa`)
|
||||
SELECT 'liman', 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vMjEyLjIzLjIwMS4xNzMvc2VydmVyL2F1dGgvbG9naW4iLCJpYXQiOjE3Nzk2MzcxNTEsImV4cCI6MTc4MjIyOTE1MSwibmJmIjoxNzc5NjM3MTUxLCJqdGkiOiJFaHdqRXhiY2xDRmxsY25sIiwic3ViIjoiMzM0NiIsInBydiI6IjFkMGEwMjBhY2Y1YzRiNmM0OTc5ODlkZjFhYmYwZmJkNGU4YzhkNjMifQ.GQrsnIDkcHGeXQGdfoiv1xFEqqek0M05CMRK3zk-PAE', 'توکن لیمان'
|
||||
WHERE NOT EXISTS (SELECT 1 FROM `const` WHERE `key` = 'liman' LIMIT 1);
|
||||
INSERT INTO `const` (`key`, `value`, `title_fa`)
|
||||
SELECT 'header_banner', '', 'بنر بالای صفحه'
|
||||
WHERE NOT EXISTS (SELECT 1 FROM `const` WHERE `key` = 'header_banner' LIMIT 1);
|
||||
INSERT INTO `const` (`key`, `value`, `title_fa`)
|
||||
SELECT 'app_closed', 'false', 'بسته بودن اپ'
|
||||
WHERE NOT EXISTS (SELECT 1 FROM `const` WHERE `key` = 'app_closed' LIMIT 1);
|
||||
INSERT INTO `const` (`key`, `value`, `title_fa`)
|
||||
SELECT 'main_product', '13', 'محصول آبشده پیشفرض'
|
||||
WHERE NOT EXISTS (SELECT 1 FROM `const` WHERE `key` = 'main_product' LIMIT 1);
|
||||
INSERT INTO `const` (`key`, `value`, `title_fa`)
|
||||
SELECT 'gram', '', 'گرم ثبتنام'
|
||||
WHERE NOT EXISTS (SELECT 1 FROM `const` WHERE `key` = 'gram' LIMIT 1);
|
||||
INSERT INTO `const` (`key`, `value`, `title_fa`)
|
||||
SELECT 'first_customer_wallet_value', '', 'حداقل اولین خرید'
|
||||
WHERE NOT EXISTS (SELECT 1 FROM `const` WHERE `key` = 'first_customer_wallet_value' LIMIT 1);
|
||||
INSERT INTO `const` (`key`, `value`, `title_fa`)
|
||||
SELECT 'jibit_counter', '0', 'شمارنده جیبیت'
|
||||
WHERE NOT EXISTS (SELECT 1 FROM `const` WHERE `key` = 'jibit_counter' LIMIT 1);
|
||||
INSERT INTO `const` (`key`, `value`, `title_fa`)
|
||||
SELECT 'price', '[]', 'لیست قیمت TGJU (JSON)'
|
||||
WHERE NOT EXISTS (SELECT 1 FROM `const` WHERE `key` = 'price' LIMIT 1);
|
||||
|
||||
-- 2) UPDATE
|
||||
|
||||
UPDATE `const` SET
|
||||
`title_fa` = 'سقف قیمت محدود',
|
||||
`value` = '',
|
||||
`updated_at` = NOW()
|
||||
WHERE `key` = 'limited_price';
|
||||
UPDATE `const` SET
|
||||
`title_fa` = 'باز بودن درگاه پرداخت',
|
||||
`value` = '',
|
||||
`updated_at` = NOW()
|
||||
WHERE `key` = 'is_gateway_open';
|
||||
UPDATE `const` SET
|
||||
`title_fa` = 'توکن لیمان',
|
||||
`value` = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vMjEyLjIzLjIwMS4xNzMvc2VydmVyL2F1dGgvbG9naW4iLCJpYXQiOjE3Nzk2MzcxNTEsImV4cCI6MTc4MjIyOTE1MSwibmJmIjoxNzc5NjM3MTUxLCJqdGkiOiJFaHdqRXhiY2xDRmxsY25sIiwic3ViIjoiMzM0NiIsInBydiI6IjFkMGEwMjBhY2Y1YzRiNmM0OTc5ODlkZjFhYmYwZmJkNGU4YzhkNjMifQ.GQrsnIDkcHGeXQGdfoiv1xFEqqek0M05CMRK3zk-PAE',
|
||||
`updated_at` = NOW()
|
||||
WHERE `key` = 'liman';
|
||||
UPDATE `const` SET
|
||||
`title_fa` = 'بنر بالای صفحه',
|
||||
`value` = '',
|
||||
`updated_at` = NOW()
|
||||
WHERE `key` = 'header_banner';
|
||||
UPDATE `const` SET
|
||||
`title_fa` = 'بسته بودن اپ',
|
||||
`value` = 'false',
|
||||
`updated_at` = NOW()
|
||||
WHERE `key` = 'app_closed';
|
||||
UPDATE `const` SET
|
||||
`title_fa` = 'محصول آبشده پیشفرض',
|
||||
`value` = '13',
|
||||
`updated_at` = NOW()
|
||||
WHERE `key` = 'main_product';
|
||||
UPDATE `const` SET
|
||||
`title_fa` = 'گرم ثبتنام',
|
||||
`value` = '',
|
||||
`updated_at` = NOW()
|
||||
WHERE `key` = 'gram';
|
||||
UPDATE `const` SET
|
||||
`title_fa` = 'حداقل اولین خرید',
|
||||
`value` = '',
|
||||
`updated_at` = NOW()
|
||||
WHERE `key` = 'first_customer_wallet_value';
|
||||
UPDATE `const` SET
|
||||
`title_fa` = 'شمارنده جیبیت',
|
||||
`value` = '0',
|
||||
`updated_at` = NOW()
|
||||
WHERE `key` = 'jibit_counter';
|
||||
UPDATE `const` SET
|
||||
`title_fa` = 'لیست قیمت TGJU (JSON)',
|
||||
`value` = '[]',
|
||||
`updated_at` = NOW()
|
||||
WHERE `key` = 'price';
|
||||
|
||||
-- 3) DELETE extras
|
||||
|
||||
DELETE FROM `const`
|
||||
WHERE `key` NOT IN (
|
||||
'limited_price',
|
||||
'is_gateway_open',
|
||||
'liman',
|
||||
'header_banner',
|
||||
'app_closed',
|
||||
'main_product',
|
||||
'gram',
|
||||
'first_customer_wallet_value',
|
||||
'jibit_counter',
|
||||
'price'
|
||||
);
|
||||
|
||||
COMMIT;
|
||||
@@ -0,0 +1,352 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Generate client merge SQL (settings + const) from:
|
||||
- goldAli catalog template (abshode_rahimi_merge_goldali_catalog.sql UPDATE blocks)
|
||||
- client JSON: { "settings": [...], "const": [...] }
|
||||
|
||||
Usage:
|
||||
python generate_merge_sql.py abaeigold_client.json abaeigold
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
import re
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
SQL_DIR = Path(__file__).resolve().parent
|
||||
CATALOG_SQL = SQL_DIR / "abshode_rahimi_merge_goldali_catalog.sql"
|
||||
|
||||
CONST_CATALOG: list[dict] = [
|
||||
{"key": "limited_price", "title_fa": "سقف قیمت محدود", "default": ""},
|
||||
{"key": "is_gateway_open", "title_fa": "باز بودن درگاه پرداخت", "default": ""},
|
||||
{"key": "liman", "title_fa": "توکن لیمان", "default": ""},
|
||||
{"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": "first_customer_wallet_value", "title_fa": "حداقل اولین خرید", "default": ""},
|
||||
{"key": "jibit_counter", "title_fa": "شمارنده جیبیت", "default": "0"},
|
||||
{"key": "price", "title_fa": "لیست قیمت TGJU (JSON)", "default": "[]"},
|
||||
]
|
||||
|
||||
# Legacy client keys → catalog key (value only)
|
||||
SETTINGS_ALIASES = {
|
||||
"liman_token": "const:liman",
|
||||
}
|
||||
|
||||
# Keys dropped from client settings (logs, legacy goldir in settings if any)
|
||||
SETTINGS_SKIP = {
|
||||
"montzar_order_response",
|
||||
"montzar_last_product_log",
|
||||
"liman_token",
|
||||
}
|
||||
|
||||
CONST_SKIP_PREFIXES = ("goldir",)
|
||||
CONST_SKIP_KEYS = {"log", "last_order_log"}
|
||||
|
||||
|
||||
def normalize_key(key: str) -> str:
|
||||
return key.strip().replace("\r", "").replace("\n", "")
|
||||
|
||||
|
||||
def sql_str(value: str | None) -> str:
|
||||
if value is None:
|
||||
return "NULL"
|
||||
return "'" + str(value).replace("\\", "\\\\").replace("'", "''") + "'"
|
||||
|
||||
|
||||
def _parse_sql_field(line: str) -> str | None:
|
||||
line = line.strip().rstrip(",")
|
||||
if line.endswith("= NULL"):
|
||||
return None
|
||||
eq = line.index("=")
|
||||
raw = line[eq + 1 :].strip()
|
||||
if raw.startswith("'") and raw.endswith("'"):
|
||||
return raw[1:-1].replace("''", "'")
|
||||
return raw
|
||||
|
||||
|
||||
def parse_catalog_updates(text: str) -> dict[str, dict]:
|
||||
catalog: dict[str, dict] = {}
|
||||
blocks = re.split(r"(?=UPDATE `settings` SET)", text)
|
||||
for block in blocks:
|
||||
if not block.startswith("UPDATE `settings` SET"):
|
||||
continue
|
||||
key_m = re.search(
|
||||
r"`updated_at` = NOW\(\)\s+WHERE `key` = '([^']+)';", block
|
||||
)
|
||||
if not key_m:
|
||||
continue
|
||||
key = key_m.group(1)
|
||||
fields: dict[str, str | None] = {}
|
||||
for line in block.splitlines():
|
||||
line = line.strip()
|
||||
for col in ("title_fa", "can_edit", "type", "description"):
|
||||
if line.startswith(f"`{col}` ="):
|
||||
fields[col] = _parse_sql_field(line)
|
||||
catalog[key] = {
|
||||
"title_fa": fields.get("title_fa") or "",
|
||||
"can_edit": int(fields.get("can_edit") or 0),
|
||||
"type": fields.get("type"),
|
||||
"description": fields.get("description"),
|
||||
}
|
||||
|
||||
# fallback: ensure full key list from DELETE block
|
||||
delete_m = re.search(
|
||||
r"DELETE FROM `settings`\s+WHERE `key` NOT IN \(\s*(.*?)\s*\);",
|
||||
text,
|
||||
re.S,
|
||||
)
|
||||
if delete_m:
|
||||
for key in re.findall(r"'([^']+)'", delete_m.group(1)):
|
||||
catalog.setdefault(
|
||||
key,
|
||||
{"title_fa": "", "can_edit": 1, "type": "text", "description": None},
|
||||
)
|
||||
catalog.pop("price_method", None)
|
||||
return catalog
|
||||
|
||||
|
||||
def load_client_rows(path: Path) -> tuple[dict[str, str | None], dict[str, str | None]]:
|
||||
data = json.loads(path.read_text(encoding="utf-8"))
|
||||
settings: dict[str, str | None] = {}
|
||||
const: dict[str, str | None] = {}
|
||||
|
||||
for row in data.get("settings", []):
|
||||
key = normalize_key(row["key"])
|
||||
if key in SETTINGS_SKIP:
|
||||
continue
|
||||
val = row.get("value")
|
||||
if val is not None and isinstance(val, str):
|
||||
val = val.strip()
|
||||
settings[key] = val if val != "" else None
|
||||
|
||||
for row in data.get("const", []):
|
||||
key = normalize_key(row["key"])
|
||||
if key in CONST_SKIP_KEYS or key.startswith(CONST_SKIP_PREFIXES):
|
||||
continue
|
||||
val = row.get("value")
|
||||
if val is not None and isinstance(val, str):
|
||||
val = val.strip()
|
||||
const[key] = val if val != "" else None
|
||||
|
||||
# liman_token in settings → const.liman
|
||||
if "liman_token" in {normalize_key(r["key"]) for r in data.get("settings", [])}:
|
||||
for row in data.get("settings", []):
|
||||
if normalize_key(row["key"]) == "liman_token" and row.get("value"):
|
||||
const["liman"] = row["value"]
|
||||
|
||||
# montzar_price → price_provider
|
||||
mp = settings.get("montzar_price")
|
||||
if mp and str(mp).lower() in ("true", "1"):
|
||||
settings["price_provider"] = "montzar"
|
||||
elif settings.get("main_product_price") and str(settings.get("main_product_price")).lower() == "true":
|
||||
settings["price_provider"] = "main_product"
|
||||
elif not settings.get("price_provider"):
|
||||
settings.setdefault("price_provider", "montzar" if mp and str(mp).lower() in ("true", "1") else "")
|
||||
|
||||
# main_product from const if missing in settings
|
||||
if const.get("main_product") and not settings.get("main_product"):
|
||||
settings["main_product"] = const["main_product"]
|
||||
|
||||
return settings, const
|
||||
|
||||
|
||||
def is_active_value(value: str | None) -> int:
|
||||
if value is None or value == "":
|
||||
return 0
|
||||
return 1
|
||||
|
||||
|
||||
def generate_settings_sql(
|
||||
client_name: str,
|
||||
client_name_fa: str,
|
||||
catalog: dict[str, dict],
|
||||
client_settings: dict[str, str | None],
|
||||
) -> str:
|
||||
lines: list[str] = [
|
||||
"-- =============================================================================",
|
||||
f"-- {client_name_fa} — ادغام settings با کاتالوگ goldAliii",
|
||||
"--",
|
||||
f"-- منبع مقادیر: {client_name}_client.json",
|
||||
f"-- قالب کلیدها: goldali ({len(catalog)} کلید)",
|
||||
"--",
|
||||
"-- قوانین:",
|
||||
"-- • کلید مشترک → value از کلاینت، metadata از کاتالوگ",
|
||||
"-- • کلید کاتالوگ بدون مقدار در کلاینت → value=''، is_active=0",
|
||||
"-- • کلیدهای اضافی کلاینت → DELETE",
|
||||
"--",
|
||||
f"-- قبل از اجرا: USE دیتابیس {client_name_fa} + بکاپ",
|
||||
"-- =============================================================================",
|
||||
"",
|
||||
"START TRANSACTION;",
|
||||
"",
|
||||
"SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci;",
|
||||
"",
|
||||
"ALTER TABLE `settings`",
|
||||
" MODIFY COLUMN `description` TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL,",
|
||||
" MODIFY COLUMN `title_fa` VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL,",
|
||||
" MODIFY COLUMN `type` VARCHAR(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL;",
|
||||
"",
|
||||
"-- 1) INSERT",
|
||||
"",
|
||||
]
|
||||
|
||||
catalog_keys = sorted(catalog.keys())
|
||||
|
||||
for key in catalog_keys:
|
||||
meta = catalog[key]
|
||||
val = client_settings.get(key)
|
||||
if val is None:
|
||||
val = ""
|
||||
active = is_active_value(val if val != "" else None)
|
||||
lines.append(
|
||||
"INSERT INTO `settings` (`key`, `value`, `title_fa`, `can_edit`, `is_active`, `description`, `type`)"
|
||||
)
|
||||
lines.append(
|
||||
f"SELECT {sql_str(key)}, {sql_str(val)}, {sql_str(meta['title_fa'])}, "
|
||||
f"{meta['can_edit']}, {active}, {sql_str(meta['description'])}, {sql_str(meta['type'])}"
|
||||
)
|
||||
lines.append(f"WHERE NOT EXISTS (SELECT 1 FROM `settings` WHERE `key` = {sql_str(key)} LIMIT 1);")
|
||||
|
||||
lines.extend(["", "-- 2) UPDATE", ""])
|
||||
|
||||
for key in catalog_keys:
|
||||
meta = catalog[key]
|
||||
val = client_settings.get(key)
|
||||
if val is None:
|
||||
val = ""
|
||||
active = is_active_value(val if val != "" else None)
|
||||
lines.append("UPDATE `settings` SET")
|
||||
lines.append(f" `title_fa` = {sql_str(meta['title_fa'])},")
|
||||
lines.append(f" `can_edit` = {meta['can_edit']},")
|
||||
lines.append(f" `type` = {sql_str(meta['type'])},")
|
||||
lines.append(f" `description` = {sql_str(meta['description'])},")
|
||||
lines.append(f" `value` = {sql_str(val)},")
|
||||
lines.append(f" `is_active` = {active},")
|
||||
lines.append(" `updated_at` = NOW()")
|
||||
lines.append(f"WHERE `key` = {sql_str(key)};")
|
||||
|
||||
lines.extend([
|
||||
"",
|
||||
"-- 3) logo_login normalize",
|
||||
"",
|
||||
"DELETE FROM `settings`",
|
||||
"WHERE `key` LIKE 'logo_login%' AND `key` <> 'logo_login'",
|
||||
" AND EXISTS (SELECT 1 FROM (SELECT `id`, `key` FROM `settings`) AS `s` WHERE `s`.`key` = 'logo_login');",
|
||||
"",
|
||||
"UPDATE `settings` SET",
|
||||
" `key` = 'logo_login',",
|
||||
" `value` = TRIM(REPLACE(REPLACE(`value`, CHAR(13), ''), CHAR(10), '')),",
|
||||
" `updated_at` = NOW()",
|
||||
"WHERE `key` LIKE 'logo_login%' AND `key` <> 'logo_login';",
|
||||
"",
|
||||
"-- 4) DELETE extras",
|
||||
"",
|
||||
"DELETE FROM `settings`",
|
||||
"WHERE `key` NOT IN (",
|
||||
])
|
||||
for i, key in enumerate(catalog_keys):
|
||||
comma = "," if i < len(catalog_keys) - 1 else ""
|
||||
lines.append(f" {sql_str(key)}{comma}")
|
||||
lines.append(");")
|
||||
lines.extend([
|
||||
"",
|
||||
"DELETE FROM `settings` WHERE `key` = 'price_method';",
|
||||
"",
|
||||
"COMMIT;",
|
||||
"",
|
||||
])
|
||||
return "\n".join(lines)
|
||||
|
||||
|
||||
def generate_const_sql(
|
||||
client_name: str,
|
||||
client_name_fa: str,
|
||||
client_const: dict[str, str | None],
|
||||
) -> str:
|
||||
lines: list[str] = [
|
||||
"-- =============================================================================",
|
||||
f"-- {client_name_fa} — ادغام const با کاتالوگ goldAliii",
|
||||
"--",
|
||||
f"-- منبع مقادیر: {client_name}_client.json",
|
||||
"-- قالب: 10 کلید goldali",
|
||||
"-- =============================================================================",
|
||||
"",
|
||||
"START TRANSACTION;",
|
||||
"",
|
||||
"SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci;",
|
||||
"",
|
||||
"ALTER TABLE `const`",
|
||||
" MODIFY COLUMN `title_fa` VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL;",
|
||||
"",
|
||||
"-- 1) INSERT",
|
||||
"",
|
||||
]
|
||||
|
||||
for item in CONST_CATALOG:
|
||||
key = item["key"]
|
||||
val = client_const.get(key)
|
||||
if val is None:
|
||||
val = item["default"]
|
||||
lines.append("INSERT INTO `const` (`key`, `value`, `title_fa`)")
|
||||
lines.append(
|
||||
f"SELECT {sql_str(key)}, {sql_str(val)}, {sql_str(item['title_fa'])}"
|
||||
)
|
||||
lines.append(f"WHERE NOT EXISTS (SELECT 1 FROM `const` WHERE `key` = {sql_str(key)} LIMIT 1);")
|
||||
|
||||
lines.extend(["", "-- 2) UPDATE", ""])
|
||||
|
||||
for item in CONST_CATALOG:
|
||||
key = item["key"]
|
||||
val = client_const.get(key)
|
||||
if val is None:
|
||||
val = item["default"]
|
||||
lines.append("UPDATE `const` SET")
|
||||
lines.append(f" `title_fa` = {sql_str(item['title_fa'])},")
|
||||
lines.append(f" `value` = {sql_str(val)},")
|
||||
lines.append(" `updated_at` = NOW()")
|
||||
lines.append(f"WHERE `key` = {sql_str(key)};")
|
||||
|
||||
allowed = [item["key"] for item in CONST_CATALOG]
|
||||
lines.extend(["", "-- 3) DELETE extras", "", "DELETE FROM `const`", "WHERE `key` NOT IN ("])
|
||||
for i, key in enumerate(allowed):
|
||||
comma = "," if i < len(allowed) - 1 else ""
|
||||
lines.append(f" {sql_str(key)}{comma}")
|
||||
lines.extend([");", "", "COMMIT;", ""])
|
||||
return "\n".join(lines)
|
||||
|
||||
|
||||
def main() -> None:
|
||||
if len(sys.argv) < 3:
|
||||
print(__doc__)
|
||||
sys.exit(1)
|
||||
|
||||
client_json = Path(sys.argv[1])
|
||||
client_slug = sys.argv[2]
|
||||
client_name_fa = sys.argv[3] if len(sys.argv) > 3 else client_slug
|
||||
|
||||
catalog_text = CATALOG_SQL.read_text(encoding="utf-8")
|
||||
catalog = parse_catalog_updates(catalog_text)
|
||||
if not catalog:
|
||||
print("ERROR: could not parse catalog from", CATALOG_SQL)
|
||||
sys.exit(1)
|
||||
|
||||
client_settings, client_const = load_client_rows(client_json)
|
||||
|
||||
settings_sql = generate_settings_sql(client_slug, client_name_fa, catalog, client_settings)
|
||||
const_sql = generate_const_sql(client_slug, client_name_fa, client_const)
|
||||
|
||||
out_settings = SQL_DIR / f"{client_slug}_merge_goldali_catalog.sql"
|
||||
out_const = SQL_DIR / f"{client_slug}_merge_goldali_const.sql"
|
||||
out_settings.write_text(settings_sql, encoding="utf-8")
|
||||
out_const.write_text(const_sql, encoding="utf-8")
|
||||
|
||||
print(f"Wrote {out_settings} ({len(catalog)} keys)")
|
||||
print(f"Wrote {out_const} ({len(CONST_CATALOG)} keys)")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -0,0 +1,85 @@
|
||||
{
|
||||
"const": [
|
||||
{"key": "main_product", "value": "13"},
|
||||
{"key": "header_banner", "value": null},
|
||||
{"key": "goldir", "value": null},
|
||||
{"key": "goldir_password", "value": null},
|
||||
{"key": "goldir_mobile", "value": null},
|
||||
{"key": "goldir_order_response", "value": null},
|
||||
{"key": "goldir_price", "value": null},
|
||||
{"key": "goldir_diff", "value": null},
|
||||
{"key": "goldir_mazaneh", "value": null},
|
||||
{"key": "goldir_truly_buy_mazaneh", "value": null},
|
||||
{"key": "goldir_truly_sell_mazaneh", "value": null},
|
||||
{"key": "log", "value": null},
|
||||
{"key": "last_order_log", "value": null},
|
||||
{"key": "jibit_counter", "value": "0"},
|
||||
{"key": "app_closed", "value": "false"}
|
||||
],
|
||||
"settings": [
|
||||
{"key": "name_fa", "value": "عبایی گلد"},
|
||||
{"key": "name_en", "value": "abaei_gold"},
|
||||
{"key": "app_url", "value": "https://abaeigold.ir"},
|
||||
{"key": "bace_url", "value": "91.212.174.137"},
|
||||
{"key": "logo_login\r\n", "value": "logo_login\r\n"},
|
||||
{"key": "logo_register", "value": "logo_register"},
|
||||
{"key": "admin_url", "value": "https://abaeigold.ir/admin/"},
|
||||
{"key": "tahesab_token", "value": null},
|
||||
{"key": "tahesab_db", "value": null},
|
||||
{"key": "is_requaire_referral", "value": "true"},
|
||||
{"key": "has_page_earn_money", "value": "false"},
|
||||
{"key": "has_page_fund", "value": "true"},
|
||||
{"key": "has_page_permission", "value": "true"},
|
||||
{"key": "has_page_price_trigger", "value": "true"},
|
||||
{"key": "has_page_physical_gold", "value": "true"},
|
||||
{"key": "color_primary", "value": "#0A1B37"},
|
||||
{"key": "color_secondary", "value": "#0A1B37"},
|
||||
{"key": "fee_service_charge_percentage", "value": "0.005"},
|
||||
{"key": "has_chat", "value": "true"},
|
||||
{"key": "server_url", "value": "https://abaeigold.ir/api"},
|
||||
{"key": "key", "value": "abaeigold"},
|
||||
{"key": "liman_token", "value": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vMjEyLjIzLjIwMS4xNzMvc2VydmVyL2F1dGgvbG9naW4iLCJpYXQiOjE3Nzk2MzcxNTEsImV4cCI6MTc4MjIyOTE1MSwibmJmIjoxNzc5NjM3MTUxLCJqdGkiOiJFaHdqRXhiY2xDRmxsY25sIiwic3ViIjoiMzM0NiIsInBydiI6IjFkMGEwMjBhY2Y1YzRiNmM0OTc5ODlkZjFhYmYwZmJkNGU4YzhkNjMifQ.GQrsnIDkcHGeXQGdfoiv1xFEqqek0M05CMRK3zk-PAE"},
|
||||
{"key": "telegram_bot_token", "value": null},
|
||||
{"key": "fee_cash", "value": "500000"},
|
||||
{"key": "fee_single", "value": "500000"},
|
||||
{"key": "send_to_tahesab", "value": "false"},
|
||||
{"key": "fee_free", "value": "0"},
|
||||
{"key": "charge_notif", "value": "false"},
|
||||
{"key": "auto_active_customer", "value": "false"},
|
||||
{"key": "open_register", "value": "true"},
|
||||
{"key": "tabanGohar_price", "value": "false"},
|
||||
{"key": "main_product_price", "value": "false"},
|
||||
{"key": "tahesab_bank_account", "value": null},
|
||||
{"key": "referral_id", "value": "required"},
|
||||
{"key": "group_sms", "value": "false"},
|
||||
{"key": "bale_bot_token", "value": null},
|
||||
{"key": "jibit_verification", "value": "false"},
|
||||
{"key": "gift_for_referrer", "value": "0.005"},
|
||||
{"key": "display_montzar", "value": "true"},
|
||||
{"key": "referral_limit", "value": ""},
|
||||
{"key": "close_price", "value": "true"},
|
||||
{"key": "startDay", "value": "10:00"},
|
||||
{"key": "endDay", "value": "20:30"},
|
||||
{"key": "montzar_mobile", "value": "09901810700"},
|
||||
{"key": "montzar_password", "value": "09901810700"},
|
||||
{"key": "montzar_product_id", "value": "25"},
|
||||
{"key": "montzar_price", "value": "true"},
|
||||
{"key": "buy_fee", "value": "0"},
|
||||
{"key": "sell_fee", "value": "0"},
|
||||
{"key": "montzar_base_url", "value": "https://limangold.ir"},
|
||||
{"key": "montzar_token", "value": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2xpbWFuZ29sZC5pci9zZXJ2ZXIvYXV0aC9sb2dpbiIsImlhdCI6MTc4MDQ5MjE0MiwiZXhwIjoxNzgzMDg0MTQyLCJuYmYiOjE3ODA0OTIxNDIsImp0aSI6IkZyYWwzN09jMzB4SHJRM1MiLCJzdWIiOiIzMzQ2IiwicHJ2IjoiMWQwYTAyMGFjZjVjNGI2YzQ5Nzk4OWRmMWFiZjBmYmQ0ZThjOGQ2MyJ9.cw31HhaBYJtNvTNnJwctU1J5tGp1-FDtIQVSU67HZA8"},
|
||||
{"key": "montzar_closed", "value": "false"},
|
||||
{"key": "montzar_open_buy", "value": "true"},
|
||||
{"key": "montzar_open_sell", "value": "true"},
|
||||
{"key": "montzar_diff", "value": "300106.05286206"},
|
||||
{"key": "montzar_mazaneh", "value": "778600000"},
|
||||
{"key": "montzar_truly_buy_mazaneh", "value": "779900000"},
|
||||
{"key": "montzar_truly_sell_mazaneh", "value": "777300000"},
|
||||
{"key": "montzar_order_response", "value": "[]"},
|
||||
{"key": "montzar_last_product_log", "value": "{}"},
|
||||
{"key": "show_last_price", "value": "false"},
|
||||
{"key": "montzar_live_price", "value": "179740440.58339"},
|
||||
{"key": "product_update_price_on_list", "value": "true"},
|
||||
{"key": "product_auto_close_open_on_list", "value": "true"}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user