Unverified Commit 13bf718c authored by Yang Luo's avatar Yang Luo Committed by GitHub

Merge pull request #3 from Dasio/master

Create table if not exists already
parents 4b984d20 5058cc54
...@@ -11,10 +11,6 @@ import ( ...@@ -11,10 +11,6 @@ import (
"github.com/mmcloughlin/meow" "github.com/mmcloughlin/meow"
) )
const (
tableExistsErrorCode = "ERROR #42P07"
)
// CasbinRule represents a rule in Casbin. // CasbinRule represents a rule in Casbin.
type CasbinRule struct { type CasbinRule struct {
ID string ID string
...@@ -49,7 +45,7 @@ func NewAdapter(arg interface{}) (*Adapter, error) { ...@@ -49,7 +45,7 @@ func NewAdapter(arg interface{}) (*Adapter, error) {
a := &Adapter{db: db} a := &Adapter{db: db}
if err := a.createTable(); err != nil { if err := a.createTableifNotExists(); err != nil {
return nil, fmt.Errorf("pgadapter.NewAdapter: %v", err) return nil, fmt.Errorf("pgadapter.NewAdapter: %v", err)
} }
...@@ -60,7 +56,7 @@ func NewAdapter(arg interface{}) (*Adapter, error) { ...@@ -60,7 +56,7 @@ func NewAdapter(arg interface{}) (*Adapter, error) {
// creates table from CasbinRule struct if it doesn't exist // creates table from CasbinRule struct if it doesn't exist
func NewAdapterByDB(db *pg.DB) (*Adapter, error) { func NewAdapterByDB(db *pg.DB) (*Adapter, error) {
a := &Adapter{db: db} a := &Adapter{db: db}
if err := a.createTable(); err != nil { if err := a.createTableifNotExists(); err != nil {
return nil, fmt.Errorf("pgadapter.NewAdapter: %v", err) return nil, fmt.Errorf("pgadapter.NewAdapter: %v", err)
} }
return a, nil return a, nil
...@@ -101,15 +97,13 @@ func (a *Adapter) Close() error { ...@@ -101,15 +97,13 @@ func (a *Adapter) Close() error {
return nil return nil
} }
func (a *Adapter) createTable() error { func (a *Adapter) createTableifNotExists() error {
err := a.db.CreateTable(&CasbinRule{}, &orm.CreateTableOptions{ err := a.db.CreateTable(&CasbinRule{}, &orm.CreateTableOptions{
Temp: false, Temp: false,
IfNotExists: true,
}) })
if err != nil { if err != nil {
errorCode := err.Error()[0:12] return err
if errorCode != tableExistsErrorCode {
return err
}
} }
return nil return nil
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment