From 1c08fa70b4c71117a97327764cfe589ed90fe081 Mon Sep 17 00:00:00 2001 From: chenlianghong Date: Fri, 15 Mar 2024 14:42:40 +0800 Subject: [PATCH] serve: update casbin lib support sqlite db --- server/internal/library/casbin/adapter.go | 31 +++++++++++++++++++---- server/main.go | 7 ++--- server/storage/data/config.yaml | 3 ++- 3 files changed, 32 insertions(+), 9 deletions(-) diff --git a/server/internal/library/casbin/adapter.go b/server/internal/library/casbin/adapter.go index afdd42a..19d8177 100644 --- a/server/internal/library/casbin/adapter.go +++ b/server/internal/library/casbin/adapter.go @@ -9,11 +9,12 @@ import ( "context" "errors" "fmt" + "math" + "strings" + "github.com/casbin/casbin/v2/model" "github.com/casbin/casbin/v2/persist" "github.com/gogf/gf/v2/database/gdb" - "math" - "strings" ) const ( @@ -31,6 +32,19 @@ CREATE TABLE IF NOT EXISTS %s ( v5 varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, PRIMARY KEY (id) USING BTREE ) 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 return } - - if adp.db, err = gdb.New(gdb.ConfigNode{Type: config[0], Link: config[1]}); err != nil { + cNode := gdb.ConfigNode{Type: config[0], Link: config[1]} + if config[0] == "sqlite" { + cNode = gdb.ConfigNode{Type: "sqlite", Link: link} + } + if adp.db, err = gdb.New(cNode); err != nil { return } @@ -103,7 +120,11 @@ func (a *adapter) model() *gdb.Model { // create a policy table when it's not exists. 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 } diff --git a/server/main.go b/server/main.go index 66f360c..0e0b2b6 100644 --- a/server/main.go +++ b/server/main.go @@ -8,14 +8,15 @@ package main import ( _ "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/internal/cmd" "hotgo/internal/global" _ "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" ) diff --git a/server/storage/data/config.yaml b/server/storage/data/config.yaml index a7ac914..7b3a4f9 100644 --- a/server/storage/data/config.yaml +++ b/server/storage/data/config.yaml @@ -227,7 +227,8 @@ database: <<: *defaultLogger stdout: true 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 Prefix: "hg_"