Clean code for candle validation
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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]()
|
||||
|
||||
|
||||
@@ -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)")
|
||||
|
||||
Reference in New Issue
Block a user