Cleanup code and prepare for AI usage
This commit is contained in:
@@ -0,0 +1,99 @@
|
||||
# tippliga — Domain Models & Operations
|
||||
|
||||
Core domain package with match, matchday, team, and league models plus operations for creating, updating, and managing the prediction league schedule. All extend `TLWMatchesManagerBase` or `TLWMatchesCreatorBase`.
|
||||
|
||||
## Base Classes
|
||||
|
||||
### BaseMatch (`de.jeyp91.BaseMatch`)
|
||||
Abstract class with shared match state: team IDs, goals (home/guest/overtime/penalty), datetime, status, KO flag, show-table flag, and a `COMPARISON` enum (`IDENTICAL`, `DIFFERENT`, `DIFFERENT_DATETIME`, `DIFFERENT_RESULT`).
|
||||
|
||||
Status constants:
|
||||
- `STATUS_NOTSTARTED = 0`
|
||||
- `STATUS_STARTED = 1`
|
||||
- `STATUS_PROVISIONAL_RESULT_AVAILABLE = 2`
|
||||
- `STATUS_FINISHED = 3`
|
||||
- `STATUS_NOT_EVALUATED = 4`
|
||||
|
||||
### TLWMatchesCreatorBase
|
||||
Abstract creator with `TLWMatches` list, `getSQLInsertString()` generating `REPLACE INTO` queries, `getMatchesForMatchday()`, and `getNumberOfMatchdays()`.
|
||||
|
||||
### TLWMatchesManagerBase
|
||||
Shared helpers used by updaters:
|
||||
- Date parsing from TLW (`yyyy-MM-dd HH:mm:ss`) and API-Football (`yyyy-MM-dd'T'HH:mm:ss`) formats
|
||||
- `getFirstMatchtimeTLW()` / `getFirstMatchtimeAPIFootball()` — earliest match in a list
|
||||
- `getDaysDifference()` — calendar day diff
|
||||
- `getMatchesStartingFromSecondDay()` / `getMatchesStartingFromSecondWeek()` — filter helpers for delivery date computation
|
||||
- `getMatchingMatch()` — matches an API match to a TLW match by home/guest team IDs
|
||||
|
||||
## Domain Models
|
||||
|
||||
### TLWMatch (extends BaseMatch)
|
||||
Full match model mapped from `phpbb_footb_matches` table. Multiple constructors:
|
||||
- From `ResultSet` (DB query)
|
||||
- From `APIFootballMatch` + `TeamIDMatcher` (API sync)
|
||||
- Manual constructors for creators
|
||||
- Copy constructor
|
||||
|
||||
Key methods:
|
||||
- `getSQLQueryInsert()` / `getSQLQueryReplace()` — generates SQL values
|
||||
- `updateMatch(APIFootballMatch)` — updates teams, goals, datetime from API data
|
||||
- `isSameMatchPlaceholder()` — matches placeholder config entries to existing matches
|
||||
|
||||
### TLWMatchday
|
||||
Mapped from `phpbb_footb_matchdays`. Fields: season, league, matchday, status, 3 delivery dates, matchday name, match count.
|
||||
|
||||
### TLWTeam
|
||||
Mapped from `phpbb_footb_teams`. Fields: season, league, team ID, name, short name, symbol, group ID, matchday.
|
||||
|
||||
### TLWLeague
|
||||
Mapped from `phpbb_footb_leagues`. Fields: season, league ID, league name, short name.
|
||||
|
||||
## Operations
|
||||
|
||||
### TLWMatchesCreatorFootball
|
||||
Builds match schedule from API-Football data and JSON config. For each matchday config entry:
|
||||
1. Resolves API matches via `APIFootballMatchesProvider`
|
||||
2. Creates `TLWMatch` objects with team IDs matched via `TeamIDMatcher`
|
||||
3. Fills remaining slots with placeholder matches (empty teams)
|
||||
|
||||
Handles `deliveryDateMode`: in `"single"` mode, matches beyond the first day get `status = -1` to prevent early betting on later matches.
|
||||
|
||||
### TLWMatchesCreatorTipperLeague
|
||||
Creates matches for tipper-vs-tipper leagues (where tippers are "teams"). Reads pairing config from `Tipper_Match_Pair_Config.json` and tipper-team mapping from `Tipper_Team_Config.json`.
|
||||
|
||||
### TLWMatchesCreatorTipperPokal
|
||||
Creates single-matchday knockout tournament matches from a tipper list config. Each pair of tippers is one match with `koMatch = 1` and `showTable = false`.
|
||||
|
||||
### TLWMatchesUpdaterFootball
|
||||
Compares current DB matches with latest API data and generates SQL UPDATE statements. Only operates on matchdays where the first match is still in the future. Updates:
|
||||
- Team IDs (via `TeamIDMatcher`)
|
||||
- Match datetimes
|
||||
- Status flags (0 = current matchday, -1 = next-day match, -2 = later)
|
||||
- `show_table` / `ko_match` flags
|
||||
|
||||
Also handles:
|
||||
- `addMissingMatches()` — inserts API matches not yet in DB (finds placeholder slots by datetime/formula)
|
||||
- `addPlaceholderMatches()` — adds config-defined placeholders for TBD matchups
|
||||
|
||||
### TLWMatchesResultsUpdater
|
||||
For finished matches, compares DB goals with API goals and pushes updates to the website via `TippligaWebsiteConnector`. Detects changes to:
|
||||
- Full-time goals
|
||||
- Overtime goals (for KO matches with `betKOType = 2`)
|
||||
- Penalty → overtime mapping (for `betKOType = 1` or `3`)
|
||||
- Status transitions from provisional to confirmed
|
||||
|
||||
### TLWMatchdaysCreator
|
||||
Computes delivery dates (betting deadlines) from match times. Supports two modes:
|
||||
- **"single"**: one deadline = first match time
|
||||
- **"multiple"** (default): 3 deadlines — first match, first match of second day, first match of second week
|
||||
|
||||
Also handles `additionalDeliveryDate` config flags for special matchday events.
|
||||
|
||||
### TLWMatchdaysUpdater
|
||||
Compares original DB matchdays with recomputed deadlines and generates SQL UPDATEs and Google Calendar syncs. Only updates future matchdays (deadline in the past is skipped).
|
||||
|
||||
### TLWTeamsCreator
|
||||
Extracts unique team IDs from a list of matches and generates `REPLACE INTO phpbb_footb_teams` SQL, preserving group and matchday info from match data.
|
||||
|
||||
### TLWTeamsUpdater
|
||||
Detects teams referenced in matches but not yet present in the league's team table. Generates INSERT SQL to add them (copies team metadata from existing entries in other seasons/leagues).
|
||||
Reference in New Issue
Block a user