外部訂單匯入
曾經沒寫好的程式,試看看重構
需求
會有多家廠商提供訂單的 csv ,要將其匯入到自有的資料庫。每家的廠商提供的 csv 都相差非常多。目標是做一個小框架,讓新廠商的加入很簡單,程式也必須好讀好維護。
舊版
很多重複的程式碼,多一個外部來源就得複製既有的程式碼做修改,共同的部分抽取的很爛。(已經無法翻出來做範例了)
新版
- 每家廠商是一個 module ,module 須定義自有資料庫需要的欄位
- 欄位的定義是函數
流程
- 是先利用一個 key 的函數來分群(訂單的資料結構是巢狀的, csv 都是打平過的,需要還原成巢狀)
- 對每一個訂單的資料,呼叫定義好的函數來做欄位的轉換(這樣的彈性很大,有些廠商是會把兩個欄位放在同一個欄位,或者相反)