From 3d02b41dbac80ee86544d832bb0d35cb8ef725e4 Mon Sep 17 00:00:00 2001 From: noreply Date: Mon, 29 Jul 2024 10:07:22 +0800 Subject: [PATCH] add sqlite --- .github/workflows/docker-alpine.yml | 2 +- Dockerfile_alpine => Dockerfile | 5 ++- src/.env.example | 6 +++- src/go.mod | 4 ++- src/go.sum | 6 ++++ src/model/dao/mdb.go | 2 ++ src/model/dao/mdb_sqlite.go | 48 +++++++++++++++++++++++++++++ 7 files changed, 67 insertions(+), 6 deletions(-) rename Dockerfile_alpine => Dockerfile (85%) create mode 100644 src/model/dao/mdb_sqlite.go diff --git a/.github/workflows/docker-alpine.yml b/.github/workflows/docker-alpine.yml index 247060f..13fa017 100644 --- a/.github/workflows/docker-alpine.yml +++ b/.github/workflows/docker-alpine.yml @@ -22,7 +22,7 @@ jobs: uses: docker/build-push-action@v4 with: context: . - file: ./Dockerfile_alpine + file: ./Dockerfile push: true tags: | ${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:alpine diff --git a/Dockerfile_alpine b/Dockerfile similarity index 85% rename from Dockerfile_alpine rename to Dockerfile index 492b343..4bcbccf 100644 --- a/Dockerfile_alpine +++ b/Dockerfile @@ -1,10 +1,10 @@ FROM golang:alpine as builder -# ENV CGO_ENABLED=1 +RUN apk add --no-cache --update git build-base +ENV CGO_ENABLED=1 WORKDIR /app COPY ./src . -# RUN apk add --no-cache --update git build-base RUN go mod tidy \ && go build -ldflags "-s -w" \ -o epusdt . @@ -14,7 +14,6 @@ ENV TZ=Asia/Shanghai RUN apk --no-cache add ca-certificates tzdata WORKDIR /app - COPY --from=builder /app/static /app/static COPY --from=builder /app/static /static COPY --from=builder /app/epusdt . diff --git a/src/.env.example b/src/.env.example index 99ad350..50f1c57 100644 --- a/src/.env.example +++ b/src/.env.example @@ -17,9 +17,13 @@ log_max_size=32 log_max_age=7 max_backups=3 -#数据库类型,默认为mysql类型,可配置项: postgres,mysql +#数据库类型,默认为mysql类型,可配置项: postgres,mysql,sqlite db_type=postgres +# sqlite配置 +sqlite_database_filename= +sqlite_table_prefix= + # postgres配置 postgres_host=127.0.0.1 postgres_port=3306 diff --git a/src/go.mod b/src/go.mod index de50d12..a5fee51 100644 --- a/src/go.mod +++ b/src/go.mod @@ -22,7 +22,7 @@ require ( gopkg.in/telebot.v3 v3.0.0 gorm.io/driver/mysql v1.5.1 gorm.io/driver/postgres v1.5.2 - gorm.io/gorm v1.25.4 + gorm.io/gorm v1.25.7-0.20240204074919-46816ad31dde ) require ( @@ -45,6 +45,7 @@ require ( github.com/magiconair/properties v1.8.5 // indirect github.com/mattn/go-colorable v0.1.12 // indirect github.com/mattn/go-isatty v0.0.14 // indirect + github.com/mattn/go-sqlite3 v1.14.22 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/mapstructure v1.4.2 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect @@ -69,4 +70,5 @@ require ( gopkg.in/ini.v1 v1.63.2 // indirect gopkg.in/natefinch/lumberjack.v2 v2.0.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect + gorm.io/driver/sqlite v1.5.6 // indirect ) diff --git a/src/go.sum b/src/go.sum index df99e4e..7fa3747 100644 --- a/src/go.sum +++ b/src/go.sum @@ -286,6 +286,8 @@ github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOA github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= +github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o4kU= +github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= @@ -829,9 +831,13 @@ gorm.io/driver/mysql v1.5.1 h1:WUEH5VF9obL/lTtzjmML/5e6VfFR/788coz2uaVCAZw= gorm.io/driver/mysql v1.5.1/go.mod h1:Jo3Xu7mMhCyj8dlrb3WoCaRd1FhsVh+yMXb1jUInf5o= gorm.io/driver/postgres v1.5.2 h1:ytTDxxEv+MplXOfFe3Lzm7SjG09fcdb3Z/c056DTBx0= gorm.io/driver/postgres v1.5.2/go.mod h1:fmpX0m2I1PKuR7mKZiEluwrP3hbs+ps7JIGMUBpCgl8= +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.1/go.mod h1:L4uxeKpfBml98NYqVqwAdmV1a2nBtAec/cf3fpucW/k= gorm.io/gorm v1.25.4 h1:iyNd8fNAe8W9dvtlgeRI5zSVZPsq3OpcTu37cYcpCmw= gorm.io/gorm v1.25.4/go.mod h1:L4uxeKpfBml98NYqVqwAdmV1a2nBtAec/cf3fpucW/k= +gorm.io/gorm v1.25.7-0.20240204074919-46816ad31dde h1:9DShaph9qhkIYw7QF91I/ynrr4cOO2PZra2PFD7Mfeg= +gorm.io/gorm v1.25.7-0.20240204074919-46816ad31dde/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/src/model/dao/mdb.go b/src/model/dao/mdb.go index 0d10694..99887c1 100644 --- a/src/model/dao/mdb.go +++ b/src/model/dao/mdb.go @@ -14,6 +14,8 @@ func DBInit() { dbType := viper.GetString("db_type") if strings.EqualFold(dbType, "postgres") { PostgreSQLInit() + } else if strings.EqualFold(dbType, "sqlite") { + SqliteInit() } else { MysqlInit() } diff --git a/src/model/dao/mdb_sqlite.go b/src/model/dao/mdb_sqlite.go new file mode 100644 index 0000000..6168327 --- /dev/null +++ b/src/model/dao/mdb_sqlite.go @@ -0,0 +1,48 @@ +package dao + +import ( + "github.com/assimon/luuu/config" + "github.com/assimon/luuu/util/log" + "github.com/gookit/color" + "github.com/spf13/viper" + "gorm.io/driver/sqlite" + "gorm.io/gorm" + "gorm.io/gorm/logger" + "gorm.io/gorm/schema" +) + +// SqliteInit 数据库初始化 +func SqliteInit() { + var err error + dbname := viper.GetString("sqlite_database_filename") + if len(dbname) == 0 { + dbname = ".db" + } + Mdb, err = gorm.Open(sqlite.Open(dbname), &gorm.Config{ + NamingStrategy: schema.NamingStrategy{ + TablePrefix: viper.GetString("sqlite_table_prefix"), + SingularTable: true, + }, + Logger: logger.Default.LogMode(logger.Error), + }) + if err != nil { + panic(err) + } + if config.AppDebug { + Mdb = Mdb.Debug() + } + sqlDB, err := Mdb.DB() + if err != nil { + color.Red.Printf("[store_db] sqlite get DB,err=%s\n", err) + panic(err) + } + // sqlDB.SetMaxIdleConns(viper.GetInt("sqlite_max_idle_conns")) + // sqlDB.SetMaxOpenConns(viper.GetInt("sqlite_max_open_conns")) + // sqlDB.SetConnMaxLifetime(time.Hour * time.Duration(viper.GetInt("sqlite_max_life_time"))) + err = sqlDB.Ping() + if err != nil { + color.Red.Printf("[store_db] sqlite connDB err:%s", err.Error()) + panic(err) + } + log.Sugar.Debug("[store_db] sqlite connDB success") +}