You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
PadelClubData/PadelClubData/Data/TeamScore.swift

117 lines
3.6 KiB

//
// TeamScore.swift
// Padel Tournament
//
// Created by razmig on 10/03/2024.
//
import Foundation
import LeStorage
@Observable
final public class TeamScore: BaseTeamScore, SideStorable {
// static func resourceName() -> String { "team-scores" }
// static func tokenExemptedMethods() -> [HTTPMethod] { return [] }
// static func filterByStoreIdentifier() -> Bool { return true }
// static var relationshipNames: [String] = ["match"]
//
// var id: String = Store.randomId()
// var lastUpdate: Date
// var match: String
// var teamRegistration: String?
// //var playerRegistrations: [String] = []
// var score: String?
// var walkOut: Int?
// var luckyLoser: Int?
//
// var storeId: String? = nil
init(match: String, teamRegistration: String? = nil, score: String? = nil, walkOut: Int? = nil, luckyLoser: Int? = nil) {
super.init(match: match, teamRegistration: teamRegistration, score: score, walkOut: walkOut, luckyLoser: luckyLoser)
// self.match = match
// self.teamRegistration = teamRegistration
//// self.playerRegistrations = playerRegistrations
// self.score = score
// self.walkOut = walkOut
// self.luckyLoser = luckyLoser
}
init(match: String, team: TeamRegistration?) {
super.init(match: match)
if let team {
self.teamRegistration = team.id
}
}
required init(from decoder: Decoder) throws {
try super.init(from: decoder)
}
required public init() {
super.init()
}
var tournamentStore: TournamentStore? {
guard let storeId else {
fatalError("missing store id for \(String(describing: type(of: self)))")
}
return TournamentLibrary.shared.store(tournamentId: storeId)
//
// if let store = self.store as? TournamentStore {
// return store
// }
// fatalError("missing store for \(String(describing: type(of: self)))")
}
// MARK: - Computed dependencies
public func matchObject() -> Match? {
return self.tournamentStore?.matches.findById(self.match)
}
public var team: TeamRegistration? {
guard let teamRegistration else {
return nil
}
return self.tournamentStore?.teamRegistrations.findById(teamRegistration)
}
// MARK: -
public func isWalkOut() -> Bool {
return walkOut != nil
}
// enum CodingKeys: String, CodingKey {
// case _id = "id"
// case _storeId = "storeId"
// case _lastUpdate = "lastUpdate"
// case _match = "match"
// case _teamRegistration = "teamRegistration"
// //case _playerRegistrations = "playerRegistrations"
// case _score = "score"
// case _walkOut = "walkOut"
// case _luckyLoser = "luckyLoser"
// }
//
// public func encode(to encoder: Encoder) throws {
// var container = encoder.container(keyedBy: CodingKeys.self)
//
// try container.encode(id, forKey: ._id)
// try container.encode(storeId, forKey: ._storeId)
// try container.encode(lastUpdate, forKey: ._lastUpdate)
// try container.encode(match, forKey: ._match)
// try container.encode(teamRegistration, forKey: ._teamRegistration)
// try container.encode(score, forKey: ._score)
// try container.encode(walkOut, forKey: ._walkOut)
// try container.encode(luckyLoser, forKey: ._luckyLoser)
// }
func insertOnServer() {
self.tournamentStore?.teamScores.writeChangeAndInsertOnServer(instance: self)
}
}