pricey worky
This commit is contained in:
@@ -5,8 +5,10 @@ from typing import Generator
|
||||
import os
|
||||
from sqlalchemy import inspect
|
||||
from services.tcgplayer import TCGPlayerService
|
||||
#from services.pricing import PricingService
|
||||
from services.pricing import PricingService
|
||||
from services.file import FileService
|
||||
from db.models import Price
|
||||
from datetime import datetime
|
||||
|
||||
|
||||
import logging
|
||||
@@ -48,6 +50,17 @@ def get_db() -> Generator[Session, None, None]:
|
||||
with get_db_session() as session:
|
||||
yield session
|
||||
|
||||
def prepopulate_data(db: Session, db_exist: bool = False) -> None:
|
||||
file_service = FileService(db)
|
||||
tcgplayer_service = TCGPlayerService(db, file_service)
|
||||
pricing_service = PricingService(db, file_service, tcgplayer_service)
|
||||
if not db_exist:
|
||||
tcgplayer_service.populate_tcgplayer_groups()
|
||||
file = tcgplayer_service.load_tcgplayer_cards()
|
||||
pricing_service.cron_load_prices(file)
|
||||
else:
|
||||
pricing_service.cron_load_prices()
|
||||
|
||||
def init_db() -> None:
|
||||
"""Initialize database tables and run first-time setup if needed"""
|
||||
from .models import Base
|
||||
@@ -57,22 +70,24 @@ def init_db() -> None:
|
||||
table in inspector.get_table_names()
|
||||
for table in Base.metadata.tables.keys()
|
||||
)
|
||||
# if tables_exist:
|
||||
# drop all tables except file
|
||||
# for table in inspector.get_table_names():
|
||||
# if table != 'files':
|
||||
# Base.metadata.drop_all(bind=engine, tables=[Base.metadata.tables[table]])
|
||||
# logger.info(f"Dropped table: {table}")
|
||||
if tables_exist:
|
||||
with get_db_session() as db:
|
||||
# get date created of latest pricing record
|
||||
latest_price = db.query(Price).order_by(Price.date_created.desc()).first()
|
||||
if latest_price:
|
||||
# check if it is greater than 1.5 hours old
|
||||
if (datetime.now() - latest_price.date_created).total_seconds() > 5400:
|
||||
prepopulate_data(db, db_exist=True)
|
||||
else:
|
||||
prepopulate_data(db, db_exist=True)
|
||||
|
||||
# Create tables if they don't exist
|
||||
Base.metadata.create_all(bind=engine)
|
||||
|
||||
# Run first-time setup only if tables were just created
|
||||
if not tables_exist:
|
||||
# with get_db_session() as session:
|
||||
# tcgplayer_service = TCGPlayerService(session, PricingService(session), FileService(session))
|
||||
# tcgplayer_service.populate_tcgplayer_groups()
|
||||
# tcgplayer_service.cron_load_prices()
|
||||
with get_db_session() as db:
|
||||
prepopulate_data(db)
|
||||
logger.info("First-time database setup completed")
|
||||
|
||||
logger.info("Database initialization completed")
|
||||
|
Reference in New Issue
Block a user