Clean code for candle validation

This commit is contained in:
2023-06-08 23:08:41 +09:00
parent 9d72842b12
commit 6d28d680e3
3 changed files with 30 additions and 20 deletions

View File

@@ -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

View File

@@ -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]()

View File

@@ -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)")