From 65a262b9fcf2639f11dd63b20c7d8211ae2196d5 Mon Sep 17 00:00:00 2001 From: Yihang Wang Date: Fri, 25 Oct 2024 12:21:34 +0800 Subject: [PATCH] refactor: update dependencies and add GORM models This commit updates the dependencies in the go.mod file, including adding the indirect dependencies for the packages `github.com/jinzhu/inflection`, `github.com/jinzhu/now`, `github.com/mattn/go-sqlite3`, `gorm.io/driver/sqlite`, and `gorm.io/gorm`. It also adds new GORM models for the database tables `LogEntry`, `Listener`, `Machine`, and `Record`. --- go.mod | 7 ++++++- go.sum | 14 ++++++++++++-- pkg/models/gorm.go | 22 ++++++++++++++++++++++ pkg/models/listener.go | 1 + pkg/models/log.go | 24 ++++++++++++++++++++++++ pkg/models/machine.go | 1 + pkg/models/record.go | 1 + 7 files changed, 67 insertions(+), 3 deletions(-) create mode 100644 pkg/models/gorm.go create mode 100644 pkg/models/listener.go create mode 100644 pkg/models/log.go create mode 100644 pkg/models/machine.go create mode 100644 pkg/models/record.go diff --git a/go.mod b/go.mod index 5250c62..b18f078 100644 --- a/go.mod +++ b/go.mod @@ -15,6 +15,8 @@ require ( go.uber.org/fx v1.22.2 go.uber.org/zap v1.26.0 gopkg.in/yaml.v2 v2.4.0 + gorm.io/driver/sqlite v1.5.6 + gorm.io/gorm v1.25.12 ) require ( @@ -28,12 +30,15 @@ require ( github.com/go-playground/universal-translator v0.18.1 // indirect github.com/go-playground/validator/v10 v10.19.0 // indirect github.com/goccy/go-json v0.10.2 // indirect + github.com/jinzhu/inflection v1.0.0 // indirect + github.com/jinzhu/now v1.1.5 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 // indirect github.com/klauspost/cpuid/v2 v2.2.7 // indirect github.com/kr/pretty v0.3.0 // indirect github.com/leodido/go-urn v1.4.0 // indirect github.com/mattn/go-isatty v0.0.20 // indirect + github.com/mattn/go-sqlite3 v1.14.24 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/pelletier/go-toml/v2 v2.1.1 // indirect @@ -49,7 +54,7 @@ require ( golang.org/x/crypto v0.21.0 // indirect golang.org/x/net v0.23.0 // indirect golang.org/x/sys v0.21.0 // indirect - golang.org/x/text v0.14.0 // indirect + golang.org/x/text v0.19.0 // indirect golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect google.golang.org/protobuf v1.33.0 // indirect gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect diff --git a/go.sum b/go.sum index e93a195..40c3fc5 100644 --- a/go.sum +++ b/go.sum @@ -44,6 +44,10 @@ github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= github.com/jessevdk/go-flags v1.6.1 h1:Cvu5U8UGrLay1rZfv/zP7iLpSHGUZ/Ou68T0iX1bBK4= github.com/jessevdk/go-flags v1.6.1/go.mod h1:Mk8T1hIAWpOiJiHa9rJASDK2UGWji0EuPGBnNLMooyc= +github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= +github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= +github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ= +github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 h1:iQTw/8FWTuc7uiaSepXwyf3o52HaUYcV+Tu66S3F5GA= @@ -66,6 +70,8 @@ github.com/matishsiao/goInfo v0.0.0-20240924010139-10388a85396f h1:XDrsC/9hdgiU9 github.com/matishsiao/goInfo v0.0.0-20240924010139-10388a85396f/go.mod h1:aEt7p9Rvh67BYApmZwNDPpgircTO2kgdmDUoF/1QmwA= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-sqlite3 v1.14.24 h1:tpSp2G2KyMnnQu99ngJ47EIkWVmliIizyZBfPrBWDRM= +github.com/mattn/go-sqlite3 v1.14.24/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -125,8 +131,8 @@ golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= -golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM= +golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= @@ -141,5 +147,9 @@ gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gorm.io/driver/sqlite v1.5.6 h1:fO/X46qn5NUEEOZtnjJRWRzZMe8nqJiQ9E+0hi+hKQE= +gorm.io/driver/sqlite v1.5.6/go.mod h1:U+J8craQU6Fzkcvu8oLeAQmi50TkwPEhHDEjQZXDah4= +gorm.io/gorm v1.25.12 h1:I0u8i2hWQItBq1WfE0o2+WuL9+8L21K9e2HHSTE/0f8= +gorm.io/gorm v1.25.12/go.mod h1:xh7N7RHfYlNc5EmcI/El95gXusucDrQnHXe0+CgWcLQ= nullprogram.com/x/optparse v1.0.0/go.mod h1:KdyPE+Igbe0jQUrVfMqDMeJQIJZEuyV7pjYmp6pbG50= rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= diff --git a/pkg/models/gorm.go b/pkg/models/gorm.go new file mode 100644 index 0000000..f638734 --- /dev/null +++ b/pkg/models/gorm.go @@ -0,0 +1,22 @@ +package models + +import ( + "log/slog" + "os" + + "gorm.io/driver/sqlite" + "gorm.io/gorm" +) + +func init() { + db, err := gorm.Open(sqlite.Open("db.sqlite3"), &gorm.Config{}) + if err != nil { + slog.Error("failed to open database", slog.String("error", err.Error())) + os.Exit(1) + } + err = db.AutoMigrate(&LogEntry{}) + if err != nil { + slog.Error("failed to migrate database", slog.String("error", err.Error())) + os.Exit(1) + } +} diff --git a/pkg/models/listener.go b/pkg/models/listener.go new file mode 100644 index 0000000..2640e7f --- /dev/null +++ b/pkg/models/listener.go @@ -0,0 +1 @@ +package models diff --git a/pkg/models/log.go b/pkg/models/log.go new file mode 100644 index 0000000..be1cc99 --- /dev/null +++ b/pkg/models/log.go @@ -0,0 +1,24 @@ +package models + +import ( + "gorm.io/gorm" +) + +// LogLevel represents the log level of a log entry +type LogLevel string + +const ( + // LogLevelError represents an error log level + LogLevelError LogLevel = "error" + // LogLevelInfo represents an info log level + LogLevelInfo LogLevel = "info" + // LogLevelDebug represents a debug log level + LogLevelDebug LogLevel = "debug" +) + +// LogEntry represents a log entry in the database +type LogEntry struct { + gorm.Model + Level LogLevel + Message string +} diff --git a/pkg/models/machine.go b/pkg/models/machine.go new file mode 100644 index 0000000..2640e7f --- /dev/null +++ b/pkg/models/machine.go @@ -0,0 +1 @@ +package models diff --git a/pkg/models/record.go b/pkg/models/record.go new file mode 100644 index 0000000..2640e7f --- /dev/null +++ b/pkg/models/record.go @@ -0,0 +1 @@ +package models