Skip to content

Commit ea00ddb

Browse files
committed
Merge branch 'pr-375': support sqlite3
ouqiang#375
2 parents 1300406 + b165b97 commit ea00ddb

6 files changed

Lines changed: 98 additions & 2 deletions

File tree

go.mod

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ require (
2121
github.com/klauspost/compress v1.5.0 // indirect
2222
github.com/klauspost/cpuid v1.2.1 // indirect
2323
github.com/lib/pq v1.1.1
24+
github.com/mattn/go-sqlite3 v1.14.16
2425
github.com/ouqiang/goutil v1.1.1
2526
github.com/rakyll/statik v0.1.7
2627
github.com/sirupsen/logrus v1.4.2

go.sum

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,8 @@ github.com/lib/pq v1.1.1/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
7575
github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
7676
github.com/mattn/go-sqlite3 v1.10.0 h1:jbhqpg7tQe4SupckyijYiy0mJJ/pRyHvXf7JdWK860o=
7777
github.com/mattn/go-sqlite3 v1.10.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
78+
github.com/mattn/go-sqlite3 v1.14.16 h1:yOQRA0RpS5PFz/oikGwBEqvAWhWg5ufRz4ETLjwpU1Y=
79+
github.com/mattn/go-sqlite3 v1.14.16/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg=
7880
github.com/ouqiang/goutil v1.1.1 h1:r5EKn1jw6vBnj0sLrk3XWeQGxG5ftjGQ3ftuiiO2DYE=
7981
github.com/ouqiang/goutil v1.1.1/go.mod h1:QrB1Ky4uGqcixxOx55MXweI3IA6nDZ0NtLMXbMfkur4=
8082
github.com/pkg/errors v0.8.0 h1:WdK/asTD0HN+q6hsWO3/vpuAkAr+tw6aNJNDFFf0+qw=

internal/models/model.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,8 @@ func getDbEngineDSN(setting *setting.Setting) string {
125125
setting.Db.Host,
126126
setting.Db.Port,
127127
setting.Db.Database)
128+
case "sqlite3":
129+
dsn = setting.Db.Database
128130
}
129131

130132
return dsn

internal/models/model_test.go

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
package models
2+
3+
import (
4+
"os"
5+
"testing"
6+
7+
_ "github.com/mattn/go-sqlite3"
8+
"github.com/ouqiang/gocron/internal/modules/app"
9+
"github.com/ouqiang/gocron/internal/modules/logger"
10+
"github.com/ouqiang/gocron/internal/modules/setting"
11+
"github.com/stretchr/testify/assert"
12+
)
13+
14+
func TestDSN(t *testing.T) {
15+
cfg := &setting.Setting{
16+
Db: struct {
17+
Engine string
18+
Host string
19+
Port int
20+
User string
21+
Password string
22+
Database string
23+
Prefix string
24+
Charset string
25+
MaxIdleConns int
26+
MaxOpenConns int
27+
}{Engine: "sqlite3", Database: "./test.db"},
28+
AllowIps: "",
29+
AppName: "",
30+
ApiKey: "",
31+
ApiSecret: "",
32+
ApiSignEnable: false,
33+
EnableTLS: false,
34+
CAFile: "",
35+
CertFile: "",
36+
KeyFile: "",
37+
ConcurrencyQueue: 0,
38+
AuthSecret: "",
39+
}
40+
dsn := getDbEngineDSN(cfg)
41+
t.Log("dsn: ", dsn)
42+
assert.NotEmpty(t, dsn)
43+
}
44+
45+
func TestCreateDb(t *testing.T) {
46+
logger.InitLogger()
47+
cfg := &setting.Setting{
48+
Db: struct {
49+
Engine string
50+
Host string
51+
Port int
52+
User string
53+
Password string
54+
Database string
55+
Prefix string
56+
Charset string
57+
MaxIdleConns int
58+
MaxOpenConns int
59+
}{Engine: "sqlite3", Database: "./test.db"},
60+
AllowIps: "",
61+
AppName: "",
62+
ApiKey: "",
63+
ApiSecret: "",
64+
ApiSignEnable: false,
65+
EnableTLS: false,
66+
CAFile: "",
67+
CertFile: "",
68+
KeyFile: "",
69+
ConcurrencyQueue: 0,
70+
AuthSecret: "",
71+
}
72+
app.Setting = cfg
73+
74+
os.Remove(cfg.Db.Database)
75+
defer os.Remove(cfg.Db.Database)
76+
77+
// 创建数据库并初始化
78+
Db = CreateDb()
79+
assert.NotNil(t, Db)
80+
81+
migrate := new(Migration)
82+
err := migrate.Install("hello")
83+
assert.Nil(t, err)
84+
}

internal/routers/install/install.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"fmt"
66
"strconv"
77

8+
_ "github.com/mattn/go-sqlite3"
89
macaron "gopkg.in/macaron.v1"
910

1011
"github.com/go-macaron/binding"
@@ -20,7 +21,7 @@ import (
2021
// 系统安装
2122

2223
type InstallForm struct {
23-
DbType string `binding:"In(mysql,postgres)"`
24+
DbType string `binding:"In(mysql,postgres,sqlite3)"`
2425
DbHost string `binding:"Required;MaxSize(50)"`
2526
DbPort int `binding:"Required;Range(1,65535)"`
2627
DbUsername string `binding:"Required;MaxSize(50)"`

web/vue/src/pages/install/index.vue

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
:value="item.value">
1313
</el-option>
1414
</el-select>
15+
<label title="使用sqlite3时需要在数据库名称中配置文件路径,主机名/端口/用户名/密码随意">❓</label>
1516
</el-form-item>
1617
<el-row>
1718
<el-col :span="12">
@@ -143,11 +144,16 @@ export default {
143144
{
144145
value: 'postgres',
145146
label: 'PostgreSql'
147+
},
148+
{
149+
value: 'sqlite3',
150+
label: 'sqlite3'
146151
}
147152
],
148153
default_ports: {
149154
'mysql': 3306,
150-
'postgres': 5432
155+
'postgres': 5432,
156+
'sqlite3': 1
151157
}
152158
}
153159
},

0 commit comments

Comments
 (0)