From ae643fda35ad950f29a74a0c5170108b7d414cf8 Mon Sep 17 00:00:00 2001 From: ened Date: Tue, 20 Jun 2023 23:36:10 +0900 Subject: [PATCH] Rewrite holiday merging --- .../Sources/KissConsole+Candle.swift | 21 ++++++++----------- KissMeConsole/Sources/KissConsole+Price.swift | 2 +- 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/KissMeConsole/Sources/KissConsole+Candle.swift b/KissMeConsole/Sources/KissConsole+Candle.swift index 0752f6d..73c280f 100644 --- a/KissMeConsole/Sources/KissConsole+Candle.swift +++ b/KissMeConsole/Sources/KissConsole+Candle.swift @@ -188,20 +188,17 @@ extension KissConsole { let result = try await account!.getHolyday(baseDate: day) do { - let olds = try [HolidyResult.OutputDetail].readCsv(fromFile: KissConsole.holidayUrl) if let output = result.output { - /// Merge current holidays and new holidays - var recents = output.map { $0 } - for old in olds { - if let _ = recents.first(where: { $0.baseDate == old.baseDate }) { - continue + try output.mergeCsv(toFile: KissConsole.holidayUrl, merging: { this, file in + var merged = this + for old in file { + if nil == this.first(where: { $0.baseDate == old.baseDate }) { + merged.append(old) + } } - recents.append(old) - } - recents.sort(by: { $0.baseDate < $1.baseDate }) - - /// Write back with merged one - try recents.writeCsv(toFile: KissConsole.holidayUrl, localized: localized) + merged.sort(by: { $0.baseDate < $1.baseDate }) + return merged + }, localized: localized) } } catch { print(error) diff --git a/KissMeConsole/Sources/KissConsole+Price.swift b/KissMeConsole/Sources/KissConsole+Price.swift index 02c18b3..6e58b91 100644 --- a/KissMeConsole/Sources/KissConsole+Price.swift +++ b/KissMeConsole/Sources/KissConsole+Price.swift @@ -138,7 +138,7 @@ extension KissConsole { } merged.sort(by: { $0.stockBusinessDate > $1.stockBusinessDate }) return merged - }, localized: false) + }, localized: localized) } } try await Task.sleep(nanoseconds: 1_000_000_000 / PreferredShortsTPS)