Common Library
此目錄包含專案中常用的工具和函式庫,提供可重用的功能模組。
目錄結構
common/
├── baseProtocol/
│ ├── baseProtocol.go # baseProtocol 的主要實現
│ ├── baseProtocol_test.go # baseProtocol 的單元測試
├── external/ # 外部依賴相關模組
├── fasthttpClient/
│ ├── fasthttpClient.go # fasthttpClient 用於呼叫第三方 API 的功能
├── fiber/
│ ├── handler/
│ │ ├── healthcheck/
│ │ │ ├── healthcheck.go # 健康檢查的處理器
│ │ ├── tracehandler/
│ │ ├── config.go # TraceHandler 的配置
│ ├── router/
│ │ ├── healthcheck/
│ │ ├── healthcheck.go # 健康檢查的路由設定
│ ├── fullLog/
│ ├── fullLog.go # 全量日誌記錄功能
├── ilog/
│ ├── ilog.go # 日誌系統的主要實現
│ ├── ilog_model.go # 日誌系統的數據模型
│ ├── ilog_write.go # 日誌系統的寫入功能
│ ├── ilog_test.go # 日誌系統的單元測試
│ ├── utils.go # 日誌系統的輔助工具
├── jsonutils/
│ ├── time.go # 時間相關的 JSON 工具
│ ├── time_test.go # 時間工具的單元測試
│ ├── sql.go # SQL 與 JSON 的轉換工具
│ ├── entity.go # 通用 JSON 實體工具
│ ├── entity_test.go # JSON 實體工具的單元測試
│ ├── bytes.go # Bytes 的 JSON 工具
├── logstash/
│ ├── logstash.go # Logstash 客戶端的實現
├── mgo/
│ ├── model.go # MongoDB 連線的模型定義
│ ├── mgo.go # MongoDB 連線管理與操作
│ ├── mgo_test.go # MongoDB 相關功能的單元測試
├── mysql/
│ ├── mysql.go # MySQL 連線管理與操作
│ ├── mysql_model.go # MySQL 連線的模型定義
│ ├── mysql_test.go # MySQL 相關功能的單元測試
│ ├── mysql_utils_test.go # MySQL 工具的單元測試
├── querytool/
│ ├── querytool.go # QueryTool 的主要實現
│ ├── querytool_test.go # QueryTool 的單元測試
├── redis/
│ ├── redis.go # Redis 連線管理與操作
│ ├── model.go # Redis 的模型定義
├── tools/
│ ├── tools.go # 通用工具函式
功能模組
QueryTool
是一個用於執行查詢的工具,包含以下功能:
Execute
方法:模擬執行查詢並返回結果。
ParseAndValidateDynamicQueryParams
函數:解析並驗證動態的 Query Parameters。
fasthttpClient
fasthttpClient
提供與第三方 API 的高效互動功能,基於 fasthttp
實現。
baseProtocol
baseProtocol
提供基礎協議處理功能,適用於多種場景的協議解析與封裝。
healthcheck
healthcheck
提供健康檢查的處理器和路由設定,用於檢查服務的可用性。
fulllog
fulllog
提供全量日誌記錄功能,記錄請求和回應的完整內容,便於調試和追蹤。
ilog
ilog
是一個高效的日誌系統,支持以下功能:
- 支援多種日誌級別(如 DEBUG、INFO、ERROR 等)。
- 支援本地和雲端日誌寫入。
- 支援結構化日誌數據(如 JSON 格式)。
- 提供標籤、追蹤 ID 和 HTTP 請求/回應的記錄功能。
jsonutils
jsonutils
提供 JSON 與其他數據格式的轉換工具,包含以下功能:
UnixMilli
和 Unix
:時間戳的 JSON 序列化與反序列化。
Entity
:通用 JSON 實體工具,支持靈活的數據結構。
SQLByte
:SQL 與 JSON 的數據轉換。
Bytes
:處理 []byte
的 JSON 工具。
logstash
logstash
提供與 Logstash 的整合功能,包含以下功能:
- 支援 TCP 協議與 Logstash 進行日誌傳輸。
- 支援自定義環境、服務名稱與日誌結構。
- 提供多種日誌級別(如 INFO、ERROR 等)。
使用範例
// 創建客戶端
config := &logstash.Config{
Host: "localhost",
Port: 5044,
Protocol: "tcp",
Environment: "production",
Service: "my-service",
}
client, err := logstash.NewClient(config)
if (err != nil) {
log.Fatal(err)
}
defer client.Close()
// 記錄日誌
client.Info("這是一條信息日誌", map[string]interface{}{
"user_id": 123,
"action": "login",
})
mgo
mgo
提供 MongoDB 的連線管理與操作功能,包含以下功能:
- 支援多個 MongoDB 連線的初始化與管理。
- 提供連線池的管理,確保高效的資源使用。
- 支援從環境變數中讀取 MongoDB 連線資訊。
mysql
mysql
提供 MySQL 的連線管理與操作功能,包含以下功能:
- 支援多個 MySQL 連線的初始化與管理。
- 提供連線池的管理,確保高效的資源使用。
- 支援將查詢結果轉換為通用的
map
或 JSON 格式。
- 提供交易管理工具(如
Rommit
函數)。
redis
redis
提供 Redis 的連線管理與操作功能,包含以下功能:
- 支援單節點與集群模式的 Redis 連線。
- 提供靈活的配置選項(如 URL、配置結構或 Redis 原生選項)。
- 支援 Redis 的多種命令與功能(如管道、事務、Pub/Sub 等)。
tools
提供通用的工具函式,包含以下功能:
- 字串處理(如加密、哈希、隨機字串生成)。
- JSON 處理(如自動解析 JSON 字串或檔案)。
- 時間處理(如獲取當前毫秒級時間戳)。
- 網路檢查(如確認伺服器是否啟動)。
- 其他實用工具(如結構體打印、函式名稱獲取)。
測試
所有模組均包含對應的單元測試,測試文件位於與模組相同的目錄中,文件名以 _test.go
結尾。
如何執行測試
請確保已安裝 Go 環境,並執行以下命令來運行測試:
cd /Users/ekkoshih/Desktop/va/common
go test ./...