DEV Community

邱敬幃 Pardn Chiu
邱敬幃 Pardn Chiu

Posted on

GO-SQLite@v0.1.0: 鏈式語法 SQLite 連線模組

cover


v0.0.0 -> v0.1.0

Summary

go-sqlite 初始版本發布,基於 sqlite3 驅動與 database/sql 建構的輕量級 SQLite ORM,提供連線池管理、Schema Builder 與流暢的查詢建構器 API,與 go-mysql 保持一致的介面設計。

Changes

FEAT

  • 新增連線池管理,支援可配置的連線存活時間與自動從路徑推導 key
  • 新增 Schema Builder 的 Create() 方法,支援欄位定義、主鍵、自動遞增、唯一約束、預設值與外鍵
  • 新增 Insert 方法:Insert()InsertContext()InsertReturningID()InsertContextReturningID()
  • 新增衝突處理策略:InsertConflict() 支援 IGNORE/REPLACE/ABORT/FAIL/ROLLBACK 模式
  • 新增 ON CONFLICT DO UPDATE 支援 upsert 操作
  • 新增 Select 查詢建構器:Select()Where()OrWhere()Join()LeftJoin()OrderBy()Limit()Offset()
  • 新增查詢執行方法:Get()GetContext() 回傳 *sql.Rows
  • 新增便捷方法:First()FirstContext()Count()CountContext()
  • 新增 Total() 視窗函式 (COUNT(*) OVER()) 支援分頁與總數查詢
  • 新增 Update 方法:Update()UpdateContext() 支援 map 資料更新
  • 新增欄位修改器:Increase()Decrease()Toggle() 支援原子更新
  • 新增原始查詢包裝:Database.Query()Database.QueryContext()Database.Exec()Database.ExecContext()

REFACTOR

  • 將單檔結構拆分為模組化元件:instance.go、builder.go、insert.go、select.go、select_ext.go、select_where.go、select_or_where.go、update.go、utils.go
  • 將欄位驗證與引號邏輯抽離至 utils.go,提供 validateColumn()quote()
  • 統一 ForeignKey 為結構型別 (Foreign) 以簡化 API
  • 新增查詢執行後自動清除 Builder 狀態的 builderClear()
  • 移除測試用 main 函式,強化連線初始化的 nil check 與 ping 驗證

Files Changed

File Status Tag
instance.go Added FEAT
builder.go Added FEAT
insert.go Added FEAT
select.go Added FEAT
select_ext.go Added FEAT
select_where.go Added FEAT
select_or_where.go Added FEAT
update.go Added FEAT
utils.go Added REFACTOR
main_test.go Added TEST
README.md Added DOC
.gitignore Modified CHORE
main.go Deleted REMOVE

©️ 2026 邱敬幃 Pardn Chiu

Top comments (0)