pricey worky

This commit is contained in:
2025-02-07 13:52:28 -05:00
parent 964fdd641b
commit 511b070cbb
6 changed files with 134 additions and 272 deletions

View File

@@ -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")