From 82cd602b26648dbdb2fb042ae025d5ff318d1ff4 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Sun, 29 Sep 2013 09:02:01 +0800 Subject: [PATCH] bug fixed --- engine.go | 95 +++++++++++++++++++++++++++---------------------------- 1 file changed, 47 insertions(+), 48 deletions(-) diff --git a/engine.go b/engine.go index 60fc50de..e90eb4a6 100644 --- a/engine.go +++ b/engine.go @@ -520,77 +520,76 @@ func (engine *Engine) Sync(beans ...interface{}) error { if err != nil { return err } - } else { - /*isEmpty, err := engine.IsEmptyTable(bean) + } + /*isEmpty, err := engine.IsEmptyTable(bean) + if err != nil { + return err + }*/ + var isEmpty bool = false + if isEmpty { + err = engine.DropTables(bean) if err != nil { return err - }*/ - var isEmpty bool = false - if isEmpty { - err = engine.DropTables(bean) + } + err = engine.CreateTables(bean) + if err != nil { + return err + } + } else { + for _, col := range table.Columns { + session := engine.NewSession() + session.Statement.RefTable = table + defer session.Close() + isExist, err := session.isColumnExist(table.Name, col.Name) if err != nil { return err } - err = engine.CreateTables(bean) + if !isExist { + session := engine.NewSession() + session.Statement.RefTable = table + defer session.Close() + err = session.addColumn(col.Name) + if err != nil { + return err + } + } + } + + for idx, _ := range table.Indexes { + session := engine.NewSession() + session.Statement.RefTable = table + defer session.Close() + isExist, err := session.isIndexExist(table.Name, idx, false) if err != nil { return err } - } else { - for _, col := range table.Columns { + if !isExist { session := engine.NewSession() session.Statement.RefTable = table defer session.Close() - isExist, err := session.isColumnExist(table.Name, col.Name) + err = session.addIndex(table.Name, idx) if err != nil { return err } - if !isExist { - session := engine.NewSession() - session.Statement.RefTable = table - defer session.Close() - err = session.addColumn(col.Name) - if err != nil { - return err - } - } } + } - for idx, _ := range table.Indexes { - session := engine.NewSession() - session.Statement.RefTable = table - defer session.Close() - isExist, err := session.isIndexExist(table.Name, idx, false) - if err != nil { - return err - } - if !isExist { - session := engine.NewSession() - session.Statement.RefTable = table - defer session.Close() - err = session.addIndex(table.Name, idx) - if err != nil { - return err - } - } + for uqe, _ := range table.Uniques { + session := engine.NewSession() + session.Statement.RefTable = table + defer session.Close() + isExist, err := session.isIndexExist(table.Name, uqe, true) + if err != nil { + return err } - - for uqe, _ := range table.Uniques { + if !isExist { session := engine.NewSession() session.Statement.RefTable = table defer session.Close() - isExist, err := session.isIndexExist(table.Name, uqe, true) + err = session.addUnique(table.Name, uqe) if err != nil { return err } - if !isExist { - session := engine.NewSession() - session.Statement.RefTable = table - defer session.Close() - err = session.addUnique(table.Name, uqe) - if err != nil { - return err - } - } } } }