This commit is contained in:
Trey t
2026-01-19 23:21:33 -06:00
parent 6cddf601e3
commit 19dd1791f1
6 changed files with 121 additions and 6 deletions

View File

@@ -107,7 +107,7 @@ class Game:
"away_team_canonical_id": self.away_team_id,
"stadium_canonical_id": self.stadium_id,
"is_playoff": is_playoff,
"broadcast": broadcast,
"broadcast_info": broadcast,
}
@classmethod

View File

@@ -81,6 +81,7 @@ class Stadium:
"sport": self.sport.upper(), # iOS Sport enum expects uppercase (e.g., "NFL")
"primary_team_abbrevs": primary_team_abbrevs or [],
"year_opened": self.opened_year,
"timezone_identifier": self.timezone,
}
@classmethod

View File

@@ -135,6 +135,12 @@ STADIUM_MAPPINGS: dict[str, dict[str, StadiumInfo]] = {
"stadium_mlb_spring_lecom_park": StadiumInfo("stadium_mlb_spring_lecom_park", "LECOM Park", "Bradenton", "FL", "USA", "mlb", 27.4939, -82.5753),
"stadium_mlb_spring_charlotte_sports_park": StadiumInfo("stadium_mlb_spring_charlotte_sports_park", "Charlotte Sports Park", "Port Charlotte", "FL", "USA", "mlb", 26.9992, -82.1817),
"stadium_mlb_spring_cacti_park": StadiumInfo("stadium_mlb_spring_cacti_park", "CACTI Park of the Palm Beaches", "West Palm Beach", "FL", "USA", "mlb", 26.7697, -80.1014),
"stadium_mlb_spring_joker_marchant": StadiumInfo("stadium_mlb_spring_joker_marchant", "Publix Field at Joker Marchant Stadium", "Lakeland", "FL", "USA", "mlb", 28.0655, -81.9545),
# Special venues
"stadium_mlb_las_vegas_ballpark": StadiumInfo("stadium_mlb_las_vegas_ballpark", "Las Vegas Ballpark", "Las Vegas", "NV", "USA", "mlb", 36.0925, -115.1775, "America/Los_Angeles"),
"stadium_mlb_mexico_alfredo_harp_helu": StadiumInfo("stadium_mlb_mexico_alfredo_harp_helu", "Estadio Alfredo Harp Helu", "Mexico City", "CDMX", "Mexico", "mlb", 19.3825, -99.0928, "America/Mexico_City"),
"stadium_mlb_field_of_dreams": StadiumInfo("stadium_mlb_field_of_dreams", "Field of Dreams", "Dyersville", "IA", "USA", "mlb", 42.4671, -91.1095, "America/Chicago"),
"stadium_mlb_journey_bank_ballpark": StadiumInfo("stadium_mlb_journey_bank_ballpark", "Journey Bank Ballpark", "Williamsport", "PA", "USA", "mlb", 41.2415, -77.0011),
},
"nfl": {
"stadium_nfl_state_farm_stadium": StadiumInfo("stadium_nfl_state_farm_stadium", "State Farm Stadium", "Glendale", "AZ", "USA", "nfl", 33.5276, -112.2626),

View File

@@ -1822,5 +1822,107 @@
"stadium_canonical_id": "stadium_mlb_spring_cacti_park",
"valid_from": null,
"valid_until": null
},
{
"alias_name": "publix field at joker marchant stadium",
"stadium_canonical_id": "stadium_mlb_spring_joker_marchant",
"valid_from": null,
"valid_until": null
},
{
"alias_name": "joker marchant stadium",
"stadium_canonical_id": "stadium_mlb_spring_joker_marchant",
"valid_from": null,
"valid_until": null
},
{
"alias_name": "publix field",
"stadium_canonical_id": "stadium_mlb_spring_joker_marchant",
"valid_from": null,
"valid_until": null
},
{
"alias_name": "lakeland",
"stadium_canonical_id": "stadium_mlb_spring_joker_marchant",
"valid_from": null,
"valid_until": null
},
{
"alias_name": "tigertown",
"stadium_canonical_id": "stadium_mlb_spring_joker_marchant",
"valid_from": null,
"valid_until": null
},
{
"alias_name": "las vegas ballpark",
"stadium_canonical_id": "stadium_mlb_las_vegas_ballpark",
"valid_from": null,
"valid_until": null
},
{
"alias_name": "vegas ballpark",
"stadium_canonical_id": "stadium_mlb_las_vegas_ballpark",
"valid_from": null,
"valid_until": null
},
{
"alias_name": "estadio alfredo harp helu",
"stadium_canonical_id": "stadium_mlb_mexico_alfredo_harp_helu",
"valid_from": null,
"valid_until": null
},
{
"alias_name": "alfredo harp helu",
"stadium_canonical_id": "stadium_mlb_mexico_alfredo_harp_helu",
"valid_from": null,
"valid_until": null
},
{
"alias_name": "diablos rojos stadium",
"stadium_canonical_id": "stadium_mlb_mexico_alfredo_harp_helu",
"valid_from": null,
"valid_until": null
},
{
"alias_name": "mexico city stadium",
"stadium_canonical_id": "stadium_mlb_mexico_alfredo_harp_helu",
"valid_from": null,
"valid_until": null
},
{
"alias_name": "field of dreams",
"stadium_canonical_id": "stadium_mlb_field_of_dreams",
"valid_from": null,
"valid_until": null
},
{
"alias_name": "dyersville",
"stadium_canonical_id": "stadium_mlb_field_of_dreams",
"valid_from": null,
"valid_until": null
},
{
"alias_name": "journey bank ballpark",
"stadium_canonical_id": "stadium_mlb_journey_bank_ballpark",
"valid_from": null,
"valid_until": null
},
{
"alias_name": "bb&t ballpark williamsport",
"stadium_canonical_id": "stadium_mlb_journey_bank_ballpark",
"valid_from": null,
"valid_until": null
},
{
"alias_name": "williamsport ballpark",
"stadium_canonical_id": "stadium_mlb_journey_bank_ballpark",
"valid_from": null,
"valid_until": null
},
{
"alias_name": "little league classic",
"stadium_canonical_id": "stadium_mlb_journey_bank_ballpark",
"valid_from": null,
"valid_until": null
}
]

View File

@@ -121,6 +121,7 @@ final class CanonicalStadium {
var yearOpened: Int?
var imageURL: String?
var sport: String
var timezoneIdentifier: String?
// User-correctable fields (preserved during sync)
var userNickname: String?
@@ -145,7 +146,8 @@ final class CanonicalStadium {
capacity: Int,
yearOpened: Int? = nil,
imageURL: String? = nil,
sport: String
sport: String,
timezoneIdentifier: String? = nil
) {
self.canonicalId = canonicalId
self.uuid = uuid ?? Self.deterministicUUID(from: canonicalId)
@@ -161,6 +163,7 @@ final class CanonicalStadium {
self.yearOpened = yearOpened
self.imageURL = imageURL
self.sport = sport
self.timezoneIdentifier = timezoneIdentifier
}
var source: DataSource {
@@ -181,7 +184,8 @@ final class CanonicalStadium {
capacity: capacity,
sport: Sport(rawValue: sport) ?? .mlb,
yearOpened: yearOpened,
imageURL: imageURL.flatMap { URL(string: $0) }
imageURL: imageURL.flatMap { URL(string: $0) },
timeZoneIdentifier: timezoneIdentifier
)
}

View File

@@ -46,6 +46,7 @@ actor BootstrapService {
let sport: String
let primary_team_abbrevs: [String]
let year_opened: Int?
let timezone_identifier: String?
}
private struct JSONCanonicalTeam: Codable {
@@ -71,7 +72,7 @@ actor BootstrapService {
let away_team_canonical_id: String
let stadium_canonical_id: String
let is_playoff: Bool
let broadcast: String?
let broadcast_info: String?
}
private struct JSONStadiumAlias: Codable {
@@ -214,7 +215,8 @@ actor BootstrapService {
longitude: jsonStadium.longitude,
capacity: jsonStadium.capacity,
yearOpened: jsonStadium.year_opened,
sport: jsonStadium.sport
sport: jsonStadium.sport,
timezoneIdentifier: jsonStadium.timezone_identifier
)
context.insert(canonical)
}
@@ -437,7 +439,7 @@ actor BootstrapService {
sport: jsonGame.sport,
season: jsonGame.season,
isPlayoff: jsonGame.is_playoff,
broadcastInfo: jsonGame.broadcast
broadcastInfo: jsonGame.broadcast_info
)
context.insert(game)
}