From 5058cc54040e900dd54f2f4f5cb4e2c90e360f44 Mon Sep 17 00:00:00 2001 From: Dasio Date: Mon, 17 Feb 2020 15:22:02 +0100 Subject: [PATCH] Create table if not exists already --- adapter.go | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/adapter.go b/adapter.go index 74212ae..20ece49 100644 --- a/adapter.go +++ b/adapter.go @@ -11,10 +11,6 @@ import ( "github.com/mmcloughlin/meow" ) -const ( - tableExistsErrorCode = "ERROR #42P07" -) - // CasbinRule represents a rule in Casbin. type CasbinRule struct { ID string @@ -49,7 +45,7 @@ func NewAdapter(arg interface{}) (*Adapter, error) { a := &Adapter{db: db} - if err := a.createTable(); err != nil { + if err := a.createTableifNotExists(); err != nil { return nil, fmt.Errorf("pgadapter.NewAdapter: %v", err) } @@ -60,7 +56,7 @@ func NewAdapter(arg interface{}) (*Adapter, error) { // creates table from CasbinRule struct if it doesn't exist func NewAdapterByDB(db *pg.DB) (*Adapter, error) { 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 a, nil @@ -101,15 +97,13 @@ func (a *Adapter) Close() error { return nil } -func (a *Adapter) createTable() error { +func (a *Adapter) createTableifNotExists() error { err := a.db.CreateTable(&CasbinRule{}, &orm.CreateTableOptions{ - Temp: false, + Temp: false, + IfNotExists: true, }) if err != nil { - errorCode := err.Error()[0:12] - if errorCode != tableExistsErrorCode { - return err - } + return err } return nil }