在寫業務邏輯程式碼前,我習慣先定義出資料,及規劃大概的業務邏輯流程。
我們待辦事項資料預想會有一些欄位:
其他未來可以擴充的欄位...
設定好之後就可以定義資料了。
我們在 Model 資料夾內新建一個 TodoEvent.swift,並實作 Migrator:
import Foundation
import SQLite
import Sworm
struct TodoEvent {
    var id: Int64
    var title: String
    var createAt: Date
    var complete: Bool
}
extension TodoEvent: Migrator {
    static var table: Tablex { Tablex("events") }
    
    static let id = Expression<Int64>("id")
    static let title = Expression<String>("title")
    static let createAt = Expression<Date>("create_at")
    static let complete = Expression<Bool>("complete")
    
    static func migrate(_ db: Connection) throws {
        try db.run(table.create(ifNotExists: true) { t in
            t.column(id, primaryKey: true)
            t.column(title)
            t.column(createAt)
            t.column(complete)
        })
    }
    
    static func parse(_ row: Row) throws -> TodoEvent {
        return TodoEvent(
            id: try row.get(id),
            title: try row.get(title),
            createAt: try row.get(createAt),
            complete: try row.get(complete)
        )
    }
    
    func setter() -> [Setter] {
        return [
            TodoEvent.title <- title,
            TodoEvent.createAt <- createAt,
            TodoEvent.complete <- complete
        ]
    }
}
目前這一版 App 只會規劃新增跟刪除待辦事項。
筆者習慣使用 Mermaid 來畫流程圖。
業務邏輯流程規劃出來之後,就會比較知道實際的邏輯要怎麼寫,會遇到什麼問題。
資料定義跟業務邏輯規劃,雖然沒有碰到程式碼,但對寫程式碼的幫助超乎想像的大。
試著用紙筆或 Mermaid 把你的流程畫下來吧!