This commit is contained in:
2025-04-29 00:00:47 -04:00
parent 56ba750aad
commit c9bba8a26e
25 changed files with 1266 additions and 152052 deletions

View File

@ -3,7 +3,7 @@ from app.services.scheduler.base_scheduler import BaseScheduler
from app.services.base_service import BaseService
from sqlalchemy import text
import logging
from app.models.tcgplayer_inventory import UnmanagedTCGPlayerInventory, TCGPlayerInventory
logger = logging.getLogger(__name__)
class SchedulerService(BaseService):
@ -11,15 +11,6 @@ class SchedulerService(BaseService):
# Initialize BaseService with None as model since this service doesn't have a specific model
super().__init__(None)
self.scheduler = BaseScheduler()
async def update_tcgplayer_price_history_daily(self, db):
"""
Update the TCGPlayer price history table
"""
with transaction(db):
await db.execute(text("""REFRESH MATERIALIZED VIEW CONCURRENTLY most_recent_tcgplayer_price;"""))
logger.info("TCGPlayer price history refreshed")
async def update_open_orders_hourly(self, db):
"""
@ -64,6 +55,19 @@ class SchedulerService(BaseService):
except Exception as e:
logger.error(f"Error updating all orders: {str(e)}")
raise
async def refresh_tcgplayer_inventory_table(self, db):
"""
Refresh the TCGPlayer inventory table
"""
tcgplayer_inventory_service = self.service_manager.get_service('tcgplayer_inventory')
with transaction(db):
db.query(UnmanagedTCGPlayerInventory).delete()
db.query(TCGPlayerInventory).delete()
db.flush()
await tcgplayer_inventory_service.refresh_tcgplayer_inventory_table(db)
db.flush()
await tcgplayer_inventory_service.refresh_unmanaged_tcgplayer_inventory_table(db)
async def start_scheduled_tasks(self, db):
"""Start all scheduled tasks"""
@ -79,11 +83,11 @@ class SchedulerService(BaseService):
func=lambda: self.update_all_orders_daily(db),
cron_expression="0 3 * * *" # Run at 3:00 AM every day
)
# Schedule TCGPlayer price history update to run daily at 1 AM
# Schedule TCGPlayer inventory refresh to run every 3 hours
await self.scheduler.schedule_task(
task_name="update_tcgplayer_price_history_daily",
func=lambda: self.update_tcgplayer_price_history_daily(db),
cron_expression="0 1 * * *" # Run at 1:00 AM every day
task_name="refresh_tcgplayer_inventory_table",
func=lambda: self.refresh_tcgplayer_inventory_table(db),
cron_expression="21 */3 * * *" # Run at minute 0 of every 3rd hour
)
self.scheduler.start()