From 6d28d680e362815203a3c82b1e8baa4236eee6d5 Mon Sep 17 00:00:00 2001 From: ened Date: Thu, 8 Jun 2023 23:08:41 +0900 Subject: [PATCH] Clean code for candle validation --- KissMeConsole/Sources/KissConsole+CSV.swift | 12 ++++--- KissMeConsole/Sources/KissConsole.swift | 36 +++++++++++++-------- KissMeConsole/Sources/test.swift | 2 +- 3 files changed, 30 insertions(+), 20 deletions(-) diff --git a/KissMeConsole/Sources/KissConsole+CSV.swift b/KissMeConsole/Sources/KissConsole+CSV.swift index 36ddf9d..94529ce 100644 --- a/KissMeConsole/Sources/KissConsole+CSV.swift +++ b/KissMeConsole/Sources/KissConsole+CSV.swift @@ -107,6 +107,7 @@ extension KissConsole { case invalidCsvHeader case invalidBusinessDate case invalidConclusionTime + case unimplemetedFunction var description: String { switch self { @@ -116,21 +117,22 @@ extension KissConsole { case .invalidCsvHeader: return "invalidCsvHeader" case .invalidBusinessDate: return "invalidBusinessDate" case .invalidConclusionTime: return "invalidConclusionTime" + case .unimplemetedFunction: return "unimplemetedFunction" } } } - static private func validateCandleMinute(_ fileUrl: URL) -> CandleValidation { + static func validateCandleDay(_ fileUrl: URL) -> CandleValidation { // TODO: - return .ok + return .unimplemetedFunction } - static private func validateCandlePeriod(_ fileUrl: URL) -> CandleValidation { + static func validateCandleWeek(_ fileUrl: URL) -> CandleValidation { // TODO: - return .ok + return .unimplemetedFunction } - static func validateCandle(_ fileUrl: URL) -> CandleValidation { + static func validateCandleMinute(_ fileUrl: URL) -> CandleValidation { let fileNameFrag = fileUrl.lastPathComponent.split(separator: ".") guard fileNameFrag.count == 2 else { return .invalidFileName diff --git a/KissMeConsole/Sources/KissConsole.swift b/KissMeConsole/Sources/KissConsole.swift index 5025a1b..13c2711 100644 --- a/KissMeConsole/Sources/KissConsole.swift +++ b/KissMeConsole/Sources/KissConsole.swift @@ -691,7 +691,7 @@ extension KissConsole { } - private func validateAllCsvs(period: CandleFilePeriod) throws { + func validateAllCsvs(filePriod: CandleFilePeriod) throws { guard let enumerator = FileManager.subPathFiles("data") else { throw GeneralError.noCsvFile } @@ -702,33 +702,40 @@ extension KissConsole { continue } - let fileName = fileUrl.lastPathComponent let periodDir = fileUrl.deletingLastPathComponent() let period = periodDir.lastPathComponent let productNoDir = periodDir.deletingLastPathComponent() let productNo = productNoDir.lastPathComponent - guard let _ = Int(productNo), period == "min" else { + guard let _ = Int(productNo), period == filePriod.rawValue else { continue } urls.append(fileUrl) } - + var lastTime = Date.appTime for (index, url) in urls.enumerated() { - let r = KissConsole.validateCandle(url) + + let r: CandleValidation + switch filePriod { + case .minute: r = KissConsole.validateCandleMinute(url) + case .day: r = KissConsole.validateCandleDay(url) + case .weak: r = KissConsole.validateCandleWeek(url) + } + + switch r { + case .ok, .invalidFileName: + break + default: + print("csv invalid: \(r) at \(url)") + throw GeneralError.invalidCsvFile + } + let curTime = Date.appTime if (curTime - lastTime) > 5 { lastTime = curTime print("checking... \(index+1)/\(urls.count)") } - switch r { - case .ok, .invalidFileName: - continue - default: - print("csv invalid: \(r) at \(url)") - throw GeneralError.invalidCsvFile - } } print("DONE csv valid \(urls.count)") } @@ -745,7 +752,7 @@ extension KissConsole { guard let period = period else { return } do { - try validateAllCsvs(period: period) + try validateAllCsvs(filePriod: period) } catch { print(error) } @@ -800,7 +807,8 @@ extension KissConsole { } } - private func getAllProduct(baseDate: Date) async -> [DomesticShop.Product] { + + func getAllProduct(baseDate: Date) async -> [DomesticShop.Product] { var pageNo = 0 var shopItems = [DomesticShop.Product]() diff --git a/KissMeConsole/Sources/test.swift b/KissMeConsole/Sources/test.swift index 1bc0e9f..430cc22 100644 --- a/KissMeConsole/Sources/test.swift +++ b/KissMeConsole/Sources/test.swift @@ -136,7 +136,7 @@ private func check_candle_csv() { } for case let fileUrl as URL in enumerator { - let r = KissConsole.validateCandle(fileUrl) + let r = KissConsole.validateCandleMinute(fileUrl) switch r { case .ok, .invalidFileName: print("OK \(fileUrl)")