Commit Graph

37 Commits

Author SHA1 Message Date
Cal Corum
c451e02c52 fix: remove hardcoded fallback password from PostgreSQL connection
All checks were successful
Build Docker Image / build (pull_request) Successful in 18m25s
Raise RuntimeError on startup if POSTGRES_PASSWORD env var is not set,
instead of silently falling back to a known password in source code.

Closes #C2 from postgres migration review.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 23:15:07 -05:00
Cal Corum
5ac9cce7f0 fix: replace bare except: with except Exception: (#29)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-17 16:29:21 -05:00
Cal Corum
9558da6ace fix: remove empty WEEK_NUMS dict from db_engine.py (#34)
Dead code - module-level constant defined but never referenced.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-17 16:28:07 -05:00
Cal Corum
126ce53951 fix: Sort games chronologically in standings recalculation for accurate streaks
Some checks failed
Build Docker Image / build (pull_request) Failing after 20s
The standings recalculate function was processing games in arbitrary database
order, causing win/loss streaks to be calculated incorrectly. Added explicit
ordering by week and game_num (ascending) to ensure games are processed
chronologically.

This fixes inconsistent streak values that were reported due to the streak
logic depending on processing games in the correct temporal sequence.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-10 14:44:58 -06:00
Cal Corum
254ce2ddc5 Add salary_cap column to Team model (v2.2.0)
- Add optional salary_cap (REAL/float) column to team table
- Create migration file for PostgreSQL schema change
- Update Peewee model with FloatField(null=True)

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 07:28:16 -06: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
d32f9a8239 Added HelpCommands 2025-10-17 16:36:40 -05:00
Cal Corum
2c3835c8ac Added SeasonPitchingStats 2025-08-26 00:17:57 -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
f49adf3c64 CLAUDE: Phase 2 PostgreSQL migration BREAKTHROUGH complete
🚀 MASSIVE SUCCESS: 77% of tables now migrating successfully!

Major Achievements:
- 23/30 tables successfully migrating (up from 7/30)
- ~373,000 records migrated (up from ~5,432)
- ALL schema compatibility issues resolved
- ALL NULL constraint issues resolved

Issues resolved in Phase 2:
- CONSTRAINT-CURRENT-BSTATCOUNT-001: Made nullable
- CONSTRAINT-CURRENT-PSTATCOUNT-001: Made nullable
- CONSTRAINT-TEAM-AUTO_DRAFT-001: Made nullable
- CONSTRAINT-CURRENT-BET_WEEK-001: Made nullable (bonus discovery)
- CONSTRAINT-TEAM-GMID-001: Made nullable (bonus discovery)

Major tables now working:
 current (11 records)
 team (546 records)
 player (12,232 records)
 battingstat (105,413 records)
 pitchingstat (35,281 records)
 stratgame (2,468 records)
 stratplay (192,790 records)

Remaining issues (7 tables): Foreign key dependencies and missing tables

Next: Phase 3 - Foreign key resolution for final 23% of tables

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-18 18:31:18 -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
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
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
Peter
df73e49406 Improve alias naming 2024-11-16 09:12:30 -06:00
Peter
c5b546d0ed Align home_score with runs_scored for pythag record 2024-11-15 16:52:29 -06:00
Cal Corum
fae1439365 Season 9 Additions 2024-01-14 22:44:23 -06: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
63641dafb3 Update db_engine.py
Handle count() == 0 bug
2023-09-15 00:36:22 -05:00
Cal Corum
5fae0a30df Add query_to_csv 2023-09-15 00:03:23 -05:00
Cal Corum
f6e9e6c7fd Standings updates
Added /standings/team/{id} endpoint
Fixed pythag calculation
2023-08-24 14:29:07 -05:00
Cal Corum
5110d8b497 Fix WC GB bug 2023-08-23 11:25:11 -05:00
Cal Corum
1b653943a5 Update rest_ip from int to float 2023-08-19 01:14:55 -05:00
Cal Corum
85c8b441fa Update standings calculations 2023-08-11 09:32:35 -05:00
Cal Corum
505d0a1a8a Add divisions, update standings 2023-08-05 00:28:00 -05:00
Cal Corum
cc3ff1d071 Add managers to /games 2023-07-31 00:29:04 -05:00
Cal Corum
40df835d98 /plays and /decisions
Added /plays validators for scorecard, first pass at /decisions
2023-07-29 00:13:07 -05:00
Cal Corum
5718ce1af9 /injuries fully functional 2023-07-27 23:41:57 -05:00
Cal Corum
6e299f01cb /plays fully functional 2023-07-26 13:14:30 -05:00
Cal Corum
dd027f7fa0 Added /games 2023-07-25 00:19:33 -05:00
Cal Corum
6c03eabfe3 Season 8 Draft Fixes 2023-07-24 23:04:26 -05:00
Cal Corum
8b202fad1a Added draftdata and keepers 2023-07-17 23:08:24 -05:00
Cal Corum
782804424d Fix relative package issues 2023-05-05 11:06:11 -05:00
Cal Corum
7ac8b752ec Initial commit
File structure in place
/players and /current built
2023-03-21 16:09:46 -05:00