Skip to content

Commit a9b5d6c

Browse files
committed
Update Logging.swift
1 parent be0aaaf commit a9b5d6c

File tree

1 file changed

+38
-21
lines changed

1 file changed

+38
-21
lines changed

RsyncUI/Model/Loggdata/Logging.swift

Lines changed: 38 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -157,37 +157,54 @@ final class Logging {
157157

158158
/*
159159

160-
func addLogPermanentStore(scheduleRecords: [TypeLogData]) {
161-
scheduleRecords.forEach { logData in
162-
let hiddenID = logData.0
163-
let stats = logData.1
164-
let currentDate = Date()
165-
let dateString = currentDate.en_string_from_date()
166-
167-
guard let config = getConfig(hiddenID: hiddenID) else { return }
160+
struct ScheduleLogData {
161+
let hiddenID: String
162+
let stats: String
163+
}
164+
165+
enum LogError: Error {
166+
case insertionFailed(ids: [String])
167+
}
168+
169+
func addLogToPermanentStore(scheduleRecords: [ScheduleLogData]) throws {
170+
let dateString = Date().en_string_from_date()
171+
var failedInserts: [String] = []
172+
173+
for record in scheduleRecords {
174+
guard let config = getConfig(hiddenID: record.hiddenID) else {
175+
failedInserts.append(record.hiddenID)
176+
continue
177+
}
168178

169-
let annotatedResult = formatLogResult(stats: stats, config: config)
179+
let result = formatLogResult(stats: record.stats, config: config)
170180

171-
// Try updating existing record first, then create new if needed
172-
let wasInserted = addLogExisting(hiddenID: hiddenID,
173-
result: annotatedResult,
174-
date: dateString)
175-
|| addLogNew(hiddenID: hiddenID,
176-
result: annotatedResult,
177-
date: dateString)
181+
let success = updateExistingLog(hiddenID: record.hiddenID, result: result, date: dateString)
182+
|| createNewLog(hiddenID: record.hiddenID, result: result, date: dateString)
178183

179-
// Optional: Handle insertion failure if needed
180-
// if !wasInserted { /* log error */ }
184+
if !success {
185+
failedInserts.append(record.hiddenID)
186+
}
181187
}
182188

183-
WriteLogRecordsJSON(localeProfile, logRecords)
189+
try persistLogs()
190+
191+
if !failedInserts.isEmpty {
192+
throw LogError.insertionFailed(ids: failedInserts)
193+
}
184194
}
185195

186196
private func formatLogResult(stats: String, config: Config) -> String {
187-
guard config.task == SharedReference.shared.snapshot else { return stats }
197+
guard config.task == SharedReference.shared.snapshot else {
198+
return stats
199+
}
188200

189-
let snapshotNumber = (config.snapshotNum ?? 1) - 1
201+
let snapshotNumber = max((config.snapshotNum ?? 1) - 1, 1)
190202
return "(\(snapshotNumber)) \(stats)"
191203
}
204+
205+
private func persistLogs() throws {
206+
// Renamed and potentially throwing version
207+
writeLogRecordsJSON(localeProfile, logRecords)
208+
}
192209

193210
*/

0 commit comments

Comments
 (0)