Skip to content

Commit

Permalink
Merge e4f8481 into f37cbb5
Browse files Browse the repository at this point in the history
  • Loading branch information
kilosonc committed Apr 16, 2021
2 parents f37cbb5 + e4f8481 commit ded377b
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 30 deletions.
8 changes: 4 additions & 4 deletions README.md
Expand Up @@ -15,11 +15,11 @@ Based on [GF ORM](https://github.com/gogf/gf), and tested in:

```go
opts := &Adapter{
driverName: "mysql",
dataSourceName: "root:1234@tcp(127.0.0.1:3306)/casbin",
tableName: "casbin_rule",
DriverName: "mysql",
DataSourceName: "root:1234@tcp(127.0.0.1:3306)/casbin",
TableName: "casbin_rule",
// or reuse an existing connection:
// db: yourDBConn,
// Db: yourDBConn,
}

a := NewAdapterFromOptions(opts)
Expand Down
44 changes: 22 additions & 22 deletions adapter.go
Expand Up @@ -36,25 +36,25 @@ type CasbinRule struct {

// Adapter represents the gdb adapter for policy storage.
type Adapter struct {
driverName string
dataSourceName string
tableName string
db gdb.DB
DriverName string
DataSourceName string
TableName string
Db gdb.DB
}

// finalizer is the destructor for Adapter.
func finalizer(a *Adapter) {
// 注意不用的时候不需要使用Close方法关闭数据库连接(并且gdb也没有提供Close方法),
// 数据库引擎底层采用了链接池设计,当链接不再使用时会自动关闭
a.db = nil
a.Db = nil
}

// NewAdapter is the constructor for Adapter.
func NewAdapter(driverName string, dataSourceName string) (*Adapter, error) {
a := &Adapter{}
a.driverName = driverName
a.dataSourceName = dataSourceName
a.tableName = "casbin_rule"
a.DriverName = driverName
a.DataSourceName = dataSourceName
a.TableName = "casbin_rule"

// Open the DB, create it if not existed.
err := a.open()
Expand All @@ -71,10 +71,10 @@ func NewAdapter(driverName string, dataSourceName string) (*Adapter, error) {
// NewAdapterFromOptions is the constructor for Adapter with existed connection
func NewAdapterFromOptions(adapter *Adapter) (*Adapter, error) {

if adapter.tableName == "" {
adapter.tableName = "casbin_rule"
if adapter.TableName == "" {
adapter.TableName = "casbin_rule"
}
if adapter.db == nil {
if adapter.Db == nil {
err := adapter.open()
if err != nil {
return nil, err
Expand All @@ -92,8 +92,8 @@ func (a *Adapter) open() error {
gdb.SetConfig(gdb.Config{
"casbin": gdb.ConfigGroup{
gdb.ConfigNode{
Type: a.driverName,
LinkInfo: a.dataSourceName,
Type: a.DriverName,
LinkInfo: a.DataSourceName,
Role: "master",
Weight: 100,
},
Expand All @@ -105,25 +105,25 @@ func (a *Adapter) open() error {
return err
}

a.db = db
a.Db = db

return a.createTable()
}

func (a *Adapter) close() error {
// 注意不用的时候不需要使用Close方法关闭数据库连接(并且gdb也没有提供Close方法),
// 数据库引擎底层采用了链接池设计,当链接不再使用时会自动关闭
a.db = nil
a.Db = nil
return nil
}

func (a *Adapter) createTable() error {
_, err := a.db.Exec(fmt.Sprintf("CREATE TABLE IF NOT EXISTS %s (ptype VARCHAR(10), v0 VARCHAR(256), v1 VARCHAR(256), v2 VARCHAR(256), v3 VARCHAR(256), v4 VARCHAR(256), v5 VARCHAR(256))", a.tableName))
_, err := a.Db.Exec(fmt.Sprintf("CREATE TABLE IF NOT EXISTS %s (ptype VARCHAR(10), v0 VARCHAR(256), v1 VARCHAR(256), v2 VARCHAR(256), v3 VARCHAR(256), v4 VARCHAR(256), v5 VARCHAR(256))", a.TableName))
return err
}

func (a *Adapter) dropTable() error {
_, err := a.db.Exec(fmt.Sprintf("DROP TABLE %s", a.tableName))
_, err := a.Db.Exec(fmt.Sprintf("DROP TABLE %s", a.TableName))
return err
}

Expand Down Expand Up @@ -155,7 +155,7 @@ func loadPolicyLine(line CasbinRule, model model.Model) {
func (a *Adapter) LoadPolicy(model model.Model) error {
var lines []CasbinRule

if err := a.db.Table(a.tableName).Scan(&lines); err != nil {
if err := a.Db.Table(a.TableName).Scan(&lines); err != nil {
return err
}

Expand Down Expand Up @@ -206,7 +206,7 @@ func (a *Adapter) SavePolicy(model model.Model) error {
for ptype, ast := range model["p"] {
for _, rule := range ast.Policy {
line := savePolicyLine(ptype, rule)
_, err := a.db.Table(a.tableName).Data(&line).Insert()
_, err := a.Db.Table(a.TableName).Data(&line).Insert()
if err != nil {
return err
}
Expand All @@ -216,7 +216,7 @@ func (a *Adapter) SavePolicy(model model.Model) error {
for ptype, ast := range model["g"] {
for _, rule := range ast.Policy {
line := savePolicyLine(ptype, rule)
_, err := a.db.Table(a.tableName).Data(&line).Insert()
_, err := a.Db.Table(a.TableName).Data(&line).Insert()
if err != nil {
return err
}
Expand All @@ -229,7 +229,7 @@ func (a *Adapter) SavePolicy(model model.Model) error {
// AddPolicy adds a policy rule to the storage.
func (a *Adapter) AddPolicy(sec string, ptype string, rule []string) error {
line := savePolicyLine(ptype, rule)
_, err := a.db.Table(a.tableName).Data(&line).Insert()
_, err := a.Db.Table(a.TableName).Data(&line).Insert()
return err
}

Expand Down Expand Up @@ -268,7 +268,7 @@ func (a *Adapter) RemoveFilteredPolicy(sec string, ptype string, fieldIndex int,
}

func rawDelete(a *Adapter, line CasbinRule) error {
db := a.db.Table(a.tableName)
db := a.Db.Table(a.TableName)

db.Where("ptype = ?", line.PType)
if line.V0 != "" {
Expand Down
8 changes: 4 additions & 4 deletions adapter_test.go
Expand Up @@ -152,15 +152,15 @@ func TestAdapters(t *testing.T) {
testSaveLoad(t, a)

a = initAdapterFormOptions(t, &Adapter{
driverName: "mysql",
dataSourceName: "root:@tcp(127.0.0.1:3306)/casbin",
DriverName: "mysql",
DataSourceName: "root:@tcp(127.0.0.1:3306)/casbin",
})
testAutoSave(t, a)
testSaveLoad(t, a)

a = initAdapterFormOptions(t, &Adapter{
driverName: "pgsql",
dataSourceName: "user=postgres host=127.0.0.1 port=5432 sslmode=disable dbname=casbin",
DriverName: "pgsql",
DataSourceName: "user=postgres host=127.0.0.1 port=5432 sslmode=disable dbname=casbin",
})
testAutoSave(t, a)
testSaveLoad(t, a)
Expand Down

0 comments on commit ded377b

Please sign in to comment.