serve: update casbin lib support sqlite db

This commit is contained in:
chenlianghong 2024-03-15 14:42:40 +08:00
parent e94d2ce9b2
commit 1c08fa70b4
3 changed files with 32 additions and 9 deletions

View File

@ -9,11 +9,12 @@ import (
"context" "context"
"errors" "errors"
"fmt" "fmt"
"math"
"strings"
"github.com/casbin/casbin/v2/model" "github.com/casbin/casbin/v2/model"
"github.com/casbin/casbin/v2/persist" "github.com/casbin/casbin/v2/persist"
"github.com/gogf/gf/v2/database/gdb" "github.com/gogf/gf/v2/database/gdb"
"math"
"strings"
) )
const ( const (
@ -31,6 +32,19 @@ CREATE TABLE IF NOT EXISTS %s (
v5 varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, v5 varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
PRIMARY KEY (id) USING BTREE PRIMARY KEY (id) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '管理员_casbin权限表' ROW_FORMAT = Dynamic; ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '管理员_casbin权限表' ROW_FORMAT = Dynamic;
`
createPolicyTableSql_sqlite = `
CREATE TABLE IF NOT EXISTS %s (
id INTEGER NOT NULL ,
p_type TEXT DEFAULT NULL,
v0 TEXT DEFAULT NULL,
v1 TEXT DEFAULT NULL,
v2 TEXT DEFAULT NULL,
v3 TEXT DEFAULT NULL,
v4 TEXT DEFAULT NULL,
v5 TEXT DEFAULT NULL,
PRIMARY KEY (id)
);
` `
) )
@ -87,8 +101,11 @@ func NewAdapter(link string) (adp *adapter, err error) {
err = errInvalidDatabaseLink err = errInvalidDatabaseLink
return return
} }
cNode := gdb.ConfigNode{Type: config[0], Link: config[1]}
if adp.db, err = gdb.New(gdb.ConfigNode{Type: config[0], Link: config[1]}); err != nil { if config[0] == "sqlite" {
cNode = gdb.ConfigNode{Type: "sqlite", Link: link}
}
if adp.db, err = gdb.New(cNode); err != nil {
return return
} }
@ -103,7 +120,11 @@ func (a *adapter) model() *gdb.Model {
// create a policy table when it's not exists. // create a policy table when it's not exists.
func (a *adapter) createPolicyTable() (err error) { func (a *adapter) createPolicyTable() (err error) {
_, err = a.db.Exec(context.TODO(), fmt.Sprintf(createPolicyTableSql, a.table)) createSql := fmt.Sprintf(createPolicyTableSql, a.table)
if a.db.GetConfig().Type == "sqlite" {
createSql = fmt.Sprintf(createPolicyTableSql_sqlite, a.table)
}
_, err = a.db.Exec(context.TODO(), createSql)
return return
} }

View File

@ -8,14 +8,15 @@ package main
import ( import (
_ "hotgo/internal/packed" _ "hotgo/internal/packed"
_ "github.com/gogf/gf/contrib/drivers/mysql/v2"
_ "github.com/gogf/gf/contrib/drivers/sqlite/v2"
_ "github.com/gogf/gf/contrib/nosql/redis/v2"
_ "hotgo/addons/modules" _ "hotgo/addons/modules"
"hotgo/internal/cmd" "hotgo/internal/cmd"
"hotgo/internal/global" "hotgo/internal/global"
_ "hotgo/internal/logic" _ "hotgo/internal/logic"
_ "github.com/gogf/gf/contrib/drivers/mysql/v2"
_ "github.com/gogf/gf/contrib/drivers/sqlite/v2"
_ "github.com/gogf/gf/contrib/nosql/redis/v2"
"github.com/gogf/gf/v2/os/gctx" "github.com/gogf/gf/v2/os/gctx"
) )

View File

@ -227,7 +227,8 @@ database:
<<: *defaultLogger <<: *defaultLogger
stdout: true stdout: true
default: default:
link: "mysql:root:root@tcp(127.0.0.1:3306)/test?loc=Local&parseTime=true" # link: "mysql:root:root@tcp(127.0.0.1:3306)/test?loc=Local&parseTime=true"
link: "sqlite::@file(./resource/db.sqlite3)"
debug: true debug: true
Prefix: "hg_" Prefix: "hg_"