Commit Graph

92 Commits

Author SHA1 Message Date
Cal Corum
1f78bd188b Fix missed timestamp issues in stats POST handlers
- Fix batstats.py and pitstats.py POST handlers to convert timestamps
- Fix Pydantic model defaults from *100000 to *1000 (wrong multiplier)

Found during second-pass audit.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 22:45:15 -06:00
Cal Corum
f4aafa35e7 Fix PostgreSQL timestamp conversion for stats GET filters
Convert milliseconds to datetime for created filter in batstats.py
and pitstats.py GET endpoints.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 22:41:00 -06:00
Cal Corum
f3b0b90860 Fix PostgreSQL timestamp handling in gauntletruns.py
- Convert milliseconds to datetime for GET filters (created_after/before, ended_after/before)
- Fix is_active filter to use is_null() instead of comparing to 0
- Fix PATCH to use datetime.now() instead of int timestamps
- Fix POST to convert timestamps and use None for nullable ended field
- Update Pydantic model defaults to None instead of int

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 22:39:45 -06:00
Cal Corum
e1c39cfb17 Fix PostgreSQL timestamp conversion for GET filters
Convert milliseconds timestamps to datetime for created_after filter
in notifications and created_after/before filters in paperdex.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 22:38:06 -06:00
Cal Corum
127c4fca65 Fix PostgreSQL timestamp conversion for POST/PATCH endpoints
Convert milliseconds timestamps from Discord bot to datetime objects
for PostgreSQL DateTimeField columns in notifications, packs, paperdex,
and rewards routers. Also fix rewards GET created_after filter.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 22:37:31 -06:00
Cal Corum
cb89a61196 Fix PostgreSQL upsert column names and CSV null handling
- Fix upsert_many() to use column_name for EXCLUDED references
  (ForeignKeyField columns end in _id, e.g., batter -> batter_id)
- Add null checks in batting/pitching CSV output for player, team, game
  fields to prevent 'NoneType' not subscriptable errors

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 17:28:40 -06:00
Cal Corum
3dce457463 Fix flashback cardset legality and rewards timestamp handling
- Add 2018 Promos (14) and 2022 Promos (4) to flashback mode legal cardsets
- Convert Unix timestamps to datetime in rewards POST/PATCH for PostgreSQL

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 15:08:21 -06:00
Cal Corum
23bf59e3db Add production deployment config and fix stringified list parsing
- Fix /legal-check endpoint to handle card_ids passed as stringified list
- Add compose.production.yml for akamai deployment (pd_api container)
- Add migrate_missing_data.py script for filling gaps from initial migration

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 14:03:07 -06:00
Cal Corum
392833a5d9 Add missing GROUP BY to decisions/rest endpoint for PostgreSQL
PostgreSQL requires GROUP BY for all non-aggregated columns when using
aggregate functions. Added group_by(pitcher, game) to the StratPlay query
that calculates pitcher innings in the /decisions/rest endpoint.
2026-01-26 22:01:38 -06:00
Cal Corum
92fc101e38 Fix PostgreSQL compatibility for GROUP BY queries and aggregations
- Fix NULL handling for FK checks in stratplays.py: use x.field_id instead
  of x.field to avoid triggering FK lookups on potentially missing rows
- Cast boolean is_start to integer for SUM() - PostgreSQL cannot sum booleans
- Add missing GROUP BY clause to Decision aggregate query
- Add Case import for boolean-to-integer casting
- Update migration script with boolean/datetime column mappings
- Exclude legacy battingstat/pitchingstat tables from migration
- Add comprehensive POSTGRES_MIGRATION_GUIDE.md documentation

Tested: /plays/batting and /plays/pitching endpoints work with group_by=player
2026-01-26 21:59:25 -06:00
Cal Corum
0cba52cea5 PostgreSQL migration: Complete code preparation phase
- Add db_helpers.py with cross-database upsert functions for SQLite/PostgreSQL
- Replace 12 on_conflict_replace() calls with PostgreSQL-compatible upserts
- Add unique indexes: StratPlay(game, play_num), Decision(game, pitcher)
- Add max_length to Team model fields (abbrev, sname, lname)
- Fix boolean comparison in teams.py (== 0/1 to == False/True)
- Create migrate_to_postgres.py with ID-preserving migration logic
- Create audit_sqlite.py for pre-migration data integrity checks
- Add PROJECT_PLAN.json for migration tracking
- Add .secrets/ to .gitignore for credentials

Audit results: 658,963 records across 29 tables, 2,390 orphaned stats (expected)

Based on Major Domo migration lessons learned (33 issues resolved there)
2026-01-25 23:05:54 -06:00
Cal Corum
fbe8623eb4 Merge branch 'main' into postgres-migration 2026-01-25 22:53:35 -06:00
Cal Corum
09924faea5 Normalize Player.franchise to city-agnostic values
- Add SQL migration script to update all franchise values
- Change AI roster queries from Team.lname to Team.sname
- Add FRANCHISE_NORMALIZE helper for bulk imports
- Update St Louis Cardinals hardcoded fix

Enables cross-era player matching for AI rosters (fixes Oakland Athletics issue)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-07 12:00:45 -06:00
Cal Corum
1517283114 CLAUDE: Fix GROUP BY queries for PostgreSQL compatibility
- Refactor get_batting_totals() to conditionally build SELECT fields based on group_by parameter
- Refactor get_pitching_totals() with same pattern
- Ensures all non-aggregated SELECT fields are included in GROUP BY clause
- Based on successful Major Domo migration pattern
2025-11-07 10:25:00 -06:00
Cal Corum
db0635b01d Added search endpoints 2025-10-08 14:21:44 -05:00
Cal Corum
b20d0cdf88 Adding card variant support 2025-07-22 09:26:23 -05:00
Cal Corum
adaa8206c8 Players bug fix 2025-05-29 22:19:34 -05:00
Cal Corum
0b8234f9d6 Add poop_max to game summary 2024-12-23 10:14:02 -06:00
Cal Corum
21fe5c419a Flip image libraries due to white bar bug 2024-11-04 23:17:07 -06:00
Cal Corum
1e4569dfbf Clean up root_validators
Remove root_path from FastAPI
Update Season 8 Cardsets
Force pydantic 1.x
2024-11-03 01:46:40 -05:00
Cal Corum
17416cd50f Log mlbplayer dupes
Update cardsets for season 8
2024-11-02 23:44:32 -05:00
Cal Corum
2a2961983a Added All-Star teams to record 2024-08-19 14:38:20 -05:00
Cal Corum
a265b83c63 Add support for exhibition games 2024-07-14 13:23:15 -05:00
Cal Corum
18a6ed2ebd Support for Exhibition games & Swagger updates 2024-07-11 15:07:23 -05:00
Cal Corum
179947b536 Add schema privacy to docs 2024-07-07 22:53:29 -05:00
Cal Corum
421eea19ac Bugfixes 2024-06-03 12:09:44 -05:00
Cal Corum
d0c3caaf87 Add support for buying Promo pack 2024-05-13 17:03:48 -05:00
Cal Corum
79b59bb376 MlbPlayers update
Add initial support for /mlbplayers
2024-05-13 15:37:00 -05:00
Cal Corum
aca7d6df23 Add gauntlet_id to /games 2024-05-13 15:36:34 -05:00
Cal Corum
e4d2e432dd Fix standings bug & s9 update 2024-04-27 08:50:51 -05:00
Cal Corum
11568a2d2e Fix pitcher decisions across game_types 2024-04-27 08:50:33 -05:00
Cal Corum
563f46c30c Update human legal-check 2024-03-01 20:01:56 -06:00
Cal Corum
ac14e8517e Add high-inning preference for AI lineups 2024-02-24 23:34:36 -06:00
Cal Corum
eb49ded2d4 Add player_id to ratings & flashback rename 2023-11-20 01:00:10 -06:00
Cal Corum
b9e922acba Fix dupe PotG stats 2023-11-19 14:30:30 -06:00
Cal Corum
d81b63ce92 Update pitchingcardratings.py
Fix BB/9 inverse rating
2023-11-19 12:26:33 -06:00
Cal Corum
d9a63e1949 Add scouting update endpoint 2023-11-18 14:45:09 -06:00
Cal Corum
eb0babc78c Major League Campaign update
Prep for flashback campaign
2023-11-05 20:04:30 -06:00
Cal Corum
e9eb21b6b7 Update decisions.py
Bug fixing
2023-10-31 14:46:31 -05:00
Cal Corum
57bb15cf1b Added decisions/rest 2023-10-31 11:02:28 -05:00
Cal Corum
c884f45c17 Batting stats re24 sort update 2023-10-30 21:17:33 -05:00
Cal Corum
c0a94613a3 Serve scouting by static csv 2023-10-30 10:25:44 -05:00
Cal Corum
24cf331803 Pitching Basic Ratings Complete + Batting Refactor 2023-10-29 17:48:38 -05:00
Cal Corum
fb151f6bae Update gtype params 2023-10-29 14:11:08 -05:00
Cal Corum
60a4910735 Add image-reset call 2023-10-29 14:10:52 -05:00
Cal Corum
053f577c45 Tweak OF Arm rating 2023-10-29 14:10:39 -05:00
Cal Corum
07df617ae0 Refactor scouting df pull 2023-10-29 00:50:32 -05:00
Cal Corum
6dfbd33605 Update battingcardratings.py
Move db.close() to proper spot later in function
2023-10-29 00:50:01 -05:00
Cal Corum
eca69fe13c Bug fixes 2023-10-29 00:49:36 -05:00
Cal Corum
1a9f15b489 Clear excess logging 2023-10-27 20:05:12 -05:00