Adds didSet generator for data properties

sync3
Laurent 6 months ago
parent d78a9a739e
commit e554999d8a
  1. 9
      PadelClubData/Data/Gen/BaseGroupStage.swift
  2. 11
      PadelClubData/Data/Gen/BaseMatch.swift
  3. 7
      PadelClubData/Data/Gen/BaseRound.swift
  4. 3
      PadelClubData/Data/Gen/GroupStage.json
  5. 3
      PadelClubData/Data/Gen/Match.json
  6. 3
      PadelClubData/Data/Gen/Round.json
  7. 23
      PadelClubData/Data/Gen/generator.py
  8. 8
      PadelClubData/Data/GroupStage.swift
  9. 12
      PadelClubData/Data/Match.swift
  10. 8
      PadelClubData/Data/Round.swift

@ -19,12 +19,9 @@ public class BaseGroupStage: SyncedModelObject, SyncedStorable {
public var format: MatchFormat? = nil
public var startDate: Date? = nil {
didSet {
if self.tournamentValue()?.hasStarted() == false {
plannedStartDate = startDate
}
self.didSetStartDate()
}
}
public var name: String? = nil
public var step: Int = 0
public var plannedStartDate: Date? = nil
@ -55,6 +52,8 @@ public class BaseGroupStage: SyncedModelObject, SyncedStorable {
super.init()
}
public func didSetStartDate() {}
public enum CodingKeys: String, CodingKey {
case _id = "id"
case _tournament = "tournament"
@ -118,4 +117,4 @@ public class BaseGroupStage: SyncedModelObject, SyncedStorable {
]
}
}
}

@ -17,14 +17,9 @@ public class BaseMatch: SyncedModelObject, SyncedStorable {
public var groupStage: String? = nil
public var startDate: Date? = nil {
didSet {
if self.roundValue()?.tournamentObject()?.hasStarted() == false {
plannedStartDate = startDate
} else if self.groupStageValue()?.tournamentObject()?.hasStarted() == false {
plannedStartDate = startDate
}
self.didSetStartDate()
}
}
public var endDate: Date? = nil
public var index: Int = 0
public var format: MatchFormat? = nil
@ -75,6 +70,8 @@ public class BaseMatch: SyncedModelObject, SyncedStorable {
super.init()
}
public func didSetStartDate() {}
public enum CodingKeys: String, CodingKey {
case _id = "id"
case _round = "round"
@ -169,4 +166,4 @@ public class BaseMatch: SyncedModelObject, SyncedStorable {
]
}
}
}

@ -19,12 +19,9 @@ public class BaseRound: SyncedModelObject, SyncedStorable {
public var format: MatchFormat? = nil
public var startDate: Date? = nil {
didSet {
if self.tournamentValue()?.hasStarted() == false {
plannedStartDate = startDate
}
self.didSetStartDate()
}
}
public var groupStageLoserBracket: Bool = false
public var loserBracketMode: LoserBracketMode = .automatic
public var plannedStartDate: Date? = nil
@ -55,6 +52,8 @@ public class BaseRound: SyncedModelObject, SyncedStorable {
super.init()
}
public func didSetStartDate() {}
public enum CodingKeys: String, CodingKey {
case _id = "id"
case _tournament = "tournament"

@ -33,7 +33,8 @@
"name": "startDate",
"type": "Date",
"optional": true,
"defaultValue": "nil"
"defaultValue": "nil",
"generateDidSet": true
},
{
"name": "name",

@ -26,7 +26,8 @@
{
"name": "startDate",
"type": "Date",
"optional": true
"optional": true,
"generateDidSet": true
},
{
"name": "endDate",

@ -35,7 +35,8 @@
{
"name": "startDate",
"type": "Date",
"optional": true
"optional": true,
"generateDidSet": true
},
{
"name": "groupStageLoserBracket",

@ -19,6 +19,7 @@ class SwiftModelGenerator:
is_sync = model_data.get("synchronizable", False)
is_observable = model_data.get("observable", False)
properties = model_data["properties"]
did_set_properties = []
# Get protocol specific configurations
resource = self.make_resource_name(model_name)
@ -53,7 +54,16 @@ class SwiftModelGenerator:
if prop.get("optional", False):
swift_type += "?"
default_value = prop.get("defaultValue", "nil" if prop.get("optional", False) else self._get_default_value(swift_type))
lines.append(f" public var {prop['name']}: {swift_type} = {default_value}")
generate_didset = prop.get("generateDidSet", False)
generate_didset_str = " {" if generate_didset else ""
lines.append(f" public var {prop['name']}: {swift_type} = {default_value}{generate_didset_str}")
if generate_didset:
cap_name = prop['name'][0].upper() + prop['name'][1:]
did_set_properties.append(cap_name)
lines.append(" didSet {")
lines.append(f" self.didSet{cap_name}()")
lines.append(" }")
lines.append(" }")
lines.append("")
@ -61,6 +71,11 @@ class SwiftModelGenerator:
lines.extend(self._generate_constructor(model_name, properties))
lines.append("")
# Add didSet
if did_set_properties:
lines.extend(self._generate_didset_methods(did_set_properties))
lines.append("")
# CodingKeys
lines.extend(self._generate_coding_keys(model_name, properties, is_observable))
lines.append("")
@ -148,6 +163,12 @@ class SwiftModelGenerator:
return lines
def _generate_didset_methods(self, properties) -> List[str]:
lines = []
for prop in properties:
lines.append(f" public func didSet{prop}() {{}}")
return lines
def _generate_foreign_key_methods(self, properties: List[Dict[str, Any]]) -> List[str]:
lines = []
for prop in properties:

@ -26,6 +26,14 @@ final public class GroupStage: BaseGroupStage, SideStorable {
return TournamentLibrary.shared.store(tournamentId: self.tournament)
}
// MARK: - DidSet
public override func didSetStartDate() {
if self.tournamentValue()?.hasStarted() == false {
plannedStartDate = startDate
}
}
// MARK: - Computed dependencies
public func _matches() -> [Match] {

@ -36,6 +36,18 @@ final public class Match: BaseMatch, SideStorable {
super.init()
}
// MARK: - DidSet
public override func didSetStartDate() {
if self.roundValue()?.tournamentObject()?.hasStarted() == false {
plannedStartDate = startDate
} else if self.groupStageValue()?.tournamentObject()?.hasStarted() == false {
plannedStartDate = startDate
}
}
// MARK: -
public func setMatchName(_ serverName: String?) {
self.name = serverName
}

@ -43,6 +43,14 @@ final public class Round: BaseRound, SideStorable {
super.init()
}
// MARK: - DidSet
public override func didSetStartDate() {
if self.tournamentValue()?.hasStarted() == false {
plannedStartDate = startDate
}
}
// MARK: - Computed dependencies
public var tournamentStore: TournamentStore? {

Loading…
Cancel
Save