Commit Graph

97 Commits

Author SHA1 Message Date
Cal Corum
ab23161500 Fix delete endpoint using wrong key for creator_id
Was accessing 'creator_id' but get_custom_command_by_id() returns 'creator_db_id'.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-28 16:07:05 -06:00
Cal Corum
6ff7ac1f62 Add all-season player search endpoint
- /api/v3/players/search now supports season=0 or omitting season to search ALL seasons
- Results ordered by most recent season first
- Added all_seasons field in response to indicate search mode
- Added numpy<2.0.0 constraint for server compatibility

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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-23 14:26:16 -06:00
Cal Corum
99f501e748 Fix custom command creator POST validation (v2.3.1)
Changed CustomCommandCreatorModel.id from required `int` to `Optional[int] = None`
to allow POST requests to create new creators without specifying an ID (database
auto-generates it).

Bug: Users couldn't create custom commands with /new-cc - API returned 422 error
"Field required" for missing id field.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-13 16:31:47 -06:00
Cal Corum
ef67b716e7 Fix teams endpoint to return results sorted by ID ascending
Added default order_by(Team.id.asc()) to get_teams endpoint to ensure
consistent ordering of results.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 13:30:50 -06:00
Cal Corum
d9ca88c1c8 Fix custom command creation constraint violation
Exclude 'creator' nested object from model_dump when creating custom commands.
The issue was that Pydantic was including both creator_id and creator fields,
causing Peewee to receive a nested dict that resulted in NULL creator_id values
in the database insert, violating the NOT NULL constraint.

This fix ensures only creator_id is passed to the ORM for foreign key mapping.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-14 08:09:44 -06:00
Cal Corum
0c865a29bc Pitcher decision bug fixed 2025-10-27 14:57:14 -05:00
Cal Corum
7ce64a14ea Update caching rules & Add DELETE /draftlist 2025-10-25 20:15:56 -05:00
Cal Corum
a3f84ac935 CLAUDE: Add team roster cache invalidation to all player mutations
- Fix unsafe dict access in PUT endpoint roster cache invalidation
- Add roster cache invalidation to PATCH, POST, and DELETE endpoints
- Use wildcard pattern to invalidate all roster caches since:
  * Team IDs may change in PUT/PATCH operations
  * Multiple teams affected in bulk POST operations
  * Ensures stale roster data is never served

This ensures team rosters are immediately updated when players are
added, removed, or transferred between teams.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-23 17:08:43 -05:00
Cal Corum
76ce9f3c47 CLAUDE: Add sorting and pagination to pitching totals endpoint
- Add sort parameter support (player, team, wpa, repri, pa, newest/oldest)
- Add pagination with page_num and limit
- Ensure minimum limit of 1 to prevent errors

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-23 16:52:32 -05:00
Cal Corum
e75c1fbc7d CLAUDE: Complete PostgreSQL migration for custom commands
- Update CLAUDE.md to reflect PostgreSQL-only architecture
- Add table_name Meta class to CustomCommand models for PostgreSQL
- Remove SQLite-specific LIKE queries, use PostgreSQL ILIKE
- Refactor custom command creator info handling
- Add helper functions for database operations
- Fix creator data serialization in execute endpoint

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-23 16:07:18 -05:00
Cal Corum
4db6982bc5 CLAUDE: Add Redis cache invalidation to player mutation endpoints
- Add cache invalidation to PUT, PATCH, POST, and DELETE endpoints
- Invalidate all player list, search, and detail caches on data changes
- Increase cache TTLs now that invalidation ensures accuracy:
  - GET /players: 10min → 30min
  - GET /players/search: 5min → 15min
  - GET /players/{player_id}: 10min → 30min

This ensures users see updated player data immediately after changes
while benefiting from longer cache lifetimes for read operations.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-23 16:02:00 -05:00
Cal Corum
a9e749640d Added /search endpoint to /players 2025-10-17 16:37:01 -05:00
Cal Corum
d32f9a8239 Added HelpCommands 2025-10-17 16:36:40 -05:00
Cal Corum
a540a3e7f3 Add Redis Caching 2025-08-27 22:49:37 -05:00
Cal Corum
2c3835c8ac Added SeasonPitchingStats 2025-08-26 00:17:57 -05:00
Cal Corum
8c492273dc Postgres Query Updates
Fixing query errors caused by Postgres vs SQLite
2025-08-25 07:19:13 -05:00
Cal Corum
54a1a407d0 CLAUDE: Season batting stats table and selective update system
Major database enhancement implementing fast-querying season batting stats:

Database Schema:
- Created seasonbattingstats table with composite primary key (player_id, season)
- All batting stats (counting + calculated): pa, ab, avg, obp, slg, ops, woba, etc.
- Proper foreign key constraints and performance indexes
- Production-ready SQL creation script included

Selective Update System:
- update_season_batting_stats() function with PostgreSQL upsert logic
- Triggers on game PATCH operations to update affected player stats
- Recalculates complete season stats from stratplay data
- Efficient updates of only players who participated in modified games

API Enhancements:
- Enhanced SeasonBattingStats.get_top_hitters() with full filtering support
- New /api/v3/views/season-stats/batting/refresh endpoint for season rebuilds
- Updated views endpoint to use centralized get_top_hitters() method
- Support for team, player, min PA, and pagination filtering

Infrastructure:
- Production database sync Docker service with SSH automation
- Comprehensive error handling and logging throughout
- Fixed Peewee model to match actual table structure (no auto-id)
- Updated CLAUDE.md with dev server info and sync commands

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-23 22:18:27 -05:00
Cal Corum
c05d00d60e DB Error Handling
Added error handling wrapper and fixed SQLite -> Postgres issues
2025-08-20 19:33:40 -05:00
Cal Corum
91ae5a972f Local migration fully functional 2025-08-20 09:52:46 -05:00
Cal Corum
79a559088a CLAUDE: Phase 1 PostgreSQL migration fixes complete
- Fixed 4 critical schema issues blocking migration
- Resolved integer overflow by converting Discord IDs to strings
- Fixed VARCHAR length limits for Google Photos URLs
- Made injury_count field nullable for NULL values
- Successfully migrating 7/30 tables (5,432+ records)

Issues resolved:
- CONSTRAINT-CURRENT-INJURY_COUNT-001: Made nullable
- DATA_QUALITY-PLAYER-NAME-001: Increased VARCHAR limits to 1000
- MIGRATION_LOGIC-TEAM-INTEGER-001: Discord IDs now strings
- MIGRATION_LOGIC-DRAFTDATA-INTEGER-001: Channel IDs now strings

New issues discovered for Phase 2:
- CONSTRAINT-CURRENT-BSTATCOUNT-001: NULL stats count
- CONSTRAINT-TEAM-AUTO_DRAFT-001: NULL auto draft flag

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-18 18:09:45 -05:00
Cal Corum
27369a92fb Added custom_commands endpoint 2025-08-18 16:27:39 -05:00
Cal Corum
57c943e340 CLAUDE: Add custom commands system with migration from legacy database
- Add CustomCommandCreator and CustomCommand models to db_engine.py
- Add comprehensive custom commands API router with full CRUD operations
- Include migration script for transferring 140 commands from sba_is_fun.db
- Add FastAPI integration for /api/v3/custom_commands endpoints
- Implement usage tracking, search, autocomplete, and statistics features
- Add grace period handling for unused commands to prevent deletion
- Include comprehensive documentation for migration process

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-17 16:31:39 -05:00
Cal Corum
e85cac61df Fix dupe check on sbaplayers 2025-06-11 00:33:09 -05:00
Cal Corum
1d652ee5fa Added SbaPlayer table 2025-05-30 21:41:40 -05:00
Cal Corum
cd1321553e Logging updates 2024-12-16 09:03:23 -06:00
Cal Corum
ffb70f1633 Update stratplay.py
Fixed catcher stats in /fielding
2024-10-31 09:48:47 -05:00
Cal Corum
4e21e42b6d Update stratplay.py
Fixed group_by not properly grouping SB/CS and decisions
2024-10-30 21:38:19 -05:00
Cal Corum
4380c26319 Add Swagger support 2024-07-14 13:23:37 -05:00
Cal Corum
a935688518 Update players.py
Migrate patch players to put and add new patch players endpoint
2024-07-03 11:19:39 -05:00
Cal Corum
0d13fc939f Add s_type to /plays 2024-06-03 12:08:56 -05:00
Cal Corum
183e4bc91e Season 8 Decision Fix 2024-01-29 00:03:49 -06:00
Cal Corum
1ef4974218 Update stratplay.py
Added re24 to /batting and /pitching pulls
2024-01-22 23:22:51 -06:00
Cal Corum
fae1439365 Season 9 Additions 2024-01-14 22:44:23 -06:00
Cal Corum
025445bb99 Parameter modernization 2023-12-21 00:09:44 -06:00
Cal Corum
1168d7abaa Param updates to /plays 2023-12-04 13:38:53 -06:00
Cal Corum
342eb50362 Update stratplay.py
Add page_num param to play queries
2023-11-29 09:57:23 -06:00
Cal Corum
85b855492f Update stratplay.py
Add pitcher_team_id to raw plays
2023-11-05 00:53:51 -05:00
Cal Corum
9f635630e5 Added error check for pitchers with 0 ABs 2023-10-14 23:44:31 -05:00
Cal Corum
523b0a760e Add GHOST to position list 2023-10-04 23:25:25 -05:00
Cal Corum
c9655b8266 Added player_name param to /awards 2023-09-17 21:38:31 -05:00
Cal Corum
ff27abd408 Updated /plays/fielding 2023-09-17 11:47:45 -05:00
Cal Corum
b8c1096b86 Added play_num param to /plays 2023-09-16 18:36:50 -05:00
Cal Corum
1fa2a207ee Update csv exports 2023-09-15 22:38:37 -05:00
Cal Corum
761a279fc8 Added complex_to_csv 2023-09-15 01:29:00 -05:00
Cal Corum
5fae0a30df Add query_to_csv 2023-09-15 00:03:23 -05:00
Cal Corum
bc37568c8e Update stratplay.py
Fix SB stats in playergame group_by
2023-09-11 23:19:14 -05:00
Cal Corum
d8ef59dae0 Stat updates for website 2023-09-10 19:16:36 -05:00
Cal Corum
5e773b3076 Update stratplay.py
Fixed woba bug with 1 PA & 1 IBB
2023-09-01 12:41:47 -05:00
Cal Corum
f9c578187e Update stratplay.py
- Added hit param to /plays
- Added to /plays/batting and /plays/pitching:
-- "league"  group_by option
-- inning param
-- rbi% output
2023-08-31 11:41:34 -05:00
Cal Corum
b3d2854210 Added left on base stats 2023-08-29 15:04:02 -05:00