71 lines
2.0 KiB
Python
71 lines
2.0 KiB
Python
import json
|
|
from pathlib import Path
|
|
|
|
from app.models import (
|
|
SessionLocal,
|
|
Token,
|
|
Version,
|
|
Base,
|
|
engine,
|
|
)
|
|
|
|
BASE_DIR = Path(__file__).resolve().parent.parent
|
|
SEED_TOKEN = BASE_DIR / "tokenList.json"
|
|
SEED_VERSION = BASE_DIR / "versionAndroid.json"
|
|
|
|
|
|
def init_db():
|
|
Base.metadata.create_all(engine)
|
|
seed()
|
|
|
|
|
|
def seed():
|
|
session = SessionLocal()
|
|
try:
|
|
if session.query(Token).count() == 0 and SEED_TOKEN.exists():
|
|
data = json.loads(SEED_TOKEN.read_text(encoding="utf-8"))
|
|
for t in data["tokenList"]:
|
|
session.add(
|
|
Token(
|
|
idfToken=int(t["idfToken"]),
|
|
position=int(t["position"]),
|
|
typeBlockchain=t["typeBlockchain"],
|
|
name=t["name"],
|
|
symbol=t["symbol"],
|
|
contractAddr=t["contractAddr"],
|
|
decimals=int(t["decimals"]),
|
|
iconUrl=t.get("iconUrl") or "",
|
|
filename=t.get("filename") or "",
|
|
is_live=t.get("is_live") in (1, "1", "true", True),
|
|
)
|
|
)
|
|
if session.query(Version).count() == 0 and SEED_VERSION.exists():
|
|
v = json.loads(SEED_VERSION.read_text(encoding="utf-8"))
|
|
session.add(
|
|
Version(
|
|
id=1,
|
|
idVersion=int(v["idVersion"]),
|
|
appName=v["appName"],
|
|
acceptableVersion=int(v["acceptableVersion"]),
|
|
latestVersion=int(v["latestVersion"]),
|
|
)
|
|
)
|
|
session.commit()
|
|
finally:
|
|
session.close()
|
|
|
|
|
|
def list_tokens():
|
|
session = SessionLocal()
|
|
try:
|
|
return session.query(Token).order_by(Token.position.asc()).all()
|
|
finally:
|
|
session.close()
|
|
|
|
|
|
def get_version():
|
|
session = SessionLocal()
|
|
try:
|
|
return session.query(Version).filter(Version.id == 1).first()
|
|
finally:
|
|
session.close() |