Adds button to import data from the dev server

multistore
Laurent 1 year ago
parent f2a14ed81d
commit fc982e5f07
  1. 78
      PadelClub/Utils/Patcher.swift
  2. 10
      PadelClub/Views/Navigation/Toolbox/ToolboxView.swift

@ -10,6 +10,7 @@ import LeStorage
enum Patch: String, CaseIterable {
case alexisLeDu
case importDataFromDev
var id: String {
return "padelclub.app.patch.\(self.rawValue)"
@ -18,18 +19,23 @@ enum Patch: String, CaseIterable {
class Patcher {
static func applyIfNeeded() {
for patch in Patch.allCases {
if UserDefaults.standard.value(forKey: patch.id) == nil {
self._applyPatch(patch)
UserDefaults.standard.setValue(true, forKey: patch.id)
}
}
}
// static func applyIfNeeded() {
// for patch in Patch.allCases {
// if UserDefaults.standard.value(forKey: patch.id) == nil {
// do {
// try self.applyPatch(patch)
// UserDefaults.standard.setValue(true, forKey: patch.id)
// } catch {
// Logger.error(error)
// }
// }
// }
// }
fileprivate static func _applyPatch(_ patch: Patch) {
static func applyPatch(_ patch: Patch) {
switch patch {
case .alexisLeDu: self._patchAlexisLeDu()
case .importDataFromDev: self._importDataFromDev()
}
}
@ -49,4 +55,58 @@ class Patcher {
}
fileprivate static func _importDataFromDev() {
guard let userId = Store.main.userId else {
return
}
let services = Services(url: "https://xlr.alwaysdata.net/roads/")
if services.hasToken() {
Task {
let clubs: [Club] = try await services.get()
let events: [Event] = try await services.get()
let tournaments: [Tournament] = try await services.get()
let rounds: [Round] = try await services.get()
let groupStages: [GroupStage] = try await services.get()
let matches: [Match] = try await services.get()
let teamRegistrations: [TeamRegistration] = try await services.get()
let teamScores: [TeamScore] = try await services.get()
let playerRegistrations: [PlayerRegistration] = try await services.get()
let courts: [Court] = try await services.get()
let dateIntervals: [DateInterval] = try await services.get()
// for club in clubs {
// club.creator = userId
// }
for event in events {
event.creator = userId
if let clubId = event.club, DataStore.shared.clubs.findById(clubId) == nil {
if let club = clubs.first(where: { $0.id == clubId }) {
club.creator = userId
try? DataStore.shared.clubs.addOrUpdate(instance: club)
}
}
}
// try DataStore.shared.clubs.addOrUpdate(contentOfs: clubs)
try DataStore.shared.events.addOrUpdate(contentOfs: events)
try DataStore.shared.tournaments.addOrUpdate(contentOfs: tournaments)
try DataStore.shared.rounds.addOrUpdate(contentOfs: rounds)
try DataStore.shared.groupStages.addOrUpdate(contentOfs: groupStages)
try DataStore.shared.matches.addOrUpdate(contentOfs: matches)
try DataStore.shared.teamRegistrations.addOrUpdate(contentOfs: teamRegistrations)
try DataStore.shared.teamScores.addOrUpdate(contentOfs: teamScores)
try DataStore.shared.playerRegistrations.addOrUpdate(contentOfs: playerRegistrations)
try DataStore.shared.courts.addOrUpdate(contentOfs: courts)
try DataStore.shared.dateIntervals.addOrUpdate(contentOfs: dateIntervals)
}
}
}
}

@ -23,12 +23,20 @@ struct ToolboxView: View {
if Store.main.userId == "94f45ed2-8938-4c32-a4b6-e4525073dd33" {
Button {
Patcher.applyIfNeeded()
Patcher.applyPatch(.alexisLeDu)
} label: {
Text("Patch")
}
}
#if DEBUG
Button {
Patcher.applyPatch(.importDataFromDev)
} label: {
Text("Import from dev")
}
#endif
}
#if DEBUG

Loading…
Cancel
Save