T17: backend penyimpanan bersama db.py (sqlite | mysql via PyMySQL)
- db.py: abstraksi connect/query/queryone/replace_snapshot; %s → ? utk sqlite; replace snapshot mysql = CREATE IF NOT EXISTS + DELETE + INSERT (MVCC) - config/.env.example: VEX_DB_BACKEND (default sqlite) + VEX_DB_HOST/PORT/USER/PASS/NAME - get_voters.persist → db.replace_snapshot; dashboard baca via db.query - LIKE pakai ESCAPE '!' (backslash memutus literal string MySQL, B2); db.query selalu kembalikan list (PyMySQL tuple vs sqlite list, B3) - docker-compose.yml: kontainer uji mariadb:11 (databisnisid-mariadb, 127.0.0.1:3306) - test_mariadb.py: suite integrasi opt-in (skip bila bukan mysql) - SPEC.md §V17/T17/B2/B3; AGENTS.md runbook
This commit is contained in:
1 parent
063fb5e5eb
commit
fdb5d0de15
12 files changed
+307
-79
No files matched your search
@@ -19,6 +19,16 @@ API_NODE = os.getenv('VEX_API_NODE', 'https://v2.vexascan.com:2096')
|
||||
# Lokasi basis data SQLite (dipakai fetcher & dashboard)
|
||||
DB_PATH = os.getenv('VEX_DB_PATH', 'voters.db')
|
||||
|
||||
# Backend basis data: 'sqlite' (default) atau 'mysql' (MariaDB/MySQL via PyMySQL)
|
||||
DB_BACKEND = os.getenv('VEX_DB_BACKEND', 'sqlite')
|
||||
|
||||
# Koneksi MariaDB/MySQL (dipakai saat DB_BACKEND='mysql')
|
||||
DB_HOST = os.getenv('VEX_DB_HOST', '127.0.0.1')
|
||||
DB_PORT = int(os.getenv('VEX_DB_PORT', '3306'))
|
||||
DB_USER = os.getenv('VEX_DB_USER', '')
|
||||
DB_PASS = os.getenv('VEX_DB_PASS', '')
|
||||
DB_NAME = os.getenv('VEX_DB_NAME', '')
|
||||
|
||||
# Syarat minimum stake (dalam VEX) untuk disimpan
|
||||
MIN_STAKED_VEX = float(os.getenv('VEX_MIN_STAKED_VEX', '1000'))
|
||||
|
||||
|
||||
Reference in new issue
Block a user