diff --git a/engine.go b/engine.go index 5e8d0af9..3fdbfcc3 100644 --- a/engine.go +++ b/engine.go @@ -1242,7 +1242,6 @@ func (engine *Engine) Sync(beans ...interface{}) error { return err } if index.Type == core.UniqueType { - //isExist, err := session.isIndexExist(table.Name, name, true) isExist, err := session.isIndexExist2(tableName, index.Cols, true) if err != nil { return err @@ -1292,23 +1291,6 @@ func (engine *Engine) Sync2(beans ...interface{}) error { return s.Sync2(beans...) } -// Drop all mapped table -func (engine *Engine) dropAll() error { - session := engine.NewSession() - defer session.Close() - - err := session.Begin() - if err != nil { - return err - } - err = session.dropAll() - if err != nil { - session.Rollback() - return err - } - return session.Commit() -} - // CreateTables create tabls according bean func (engine *Engine) CreateTables(beans ...interface{}) error { session := engine.NewSession() @@ -1349,10 +1331,11 @@ func (engine *Engine) DropTables(beans ...interface{}) error { return session.Commit() } -func (engine *Engine) createAll() error { +// DropIndexes drop indexes of a table +func (engine *Engine) DropIndexes(bean interface{}) error { session := engine.NewSession() defer session.Close() - return session.createAll() + return session.DropIndexes(bean) } // Exec raw sql diff --git a/session_schema.go b/session_schema.go index 19c0cbf5..215efb85 100644 --- a/session_schema.go +++ b/session_schema.go @@ -89,24 +89,6 @@ func (session *Session) createOneTable() error { return err } -// to be deleted -func (session *Session) createAll() error { - if session.IsAutoClose { - defer session.Close() - } - - for _, table := range session.Engine.Tables { - session.Statement.RefTable = table - session.Statement.tableName = table.Name - err := session.createOneTable() - session.resetStatement() - if err != nil { - return err - } - } - return nil -} - // DropIndexes drop indexes func (session *Session) DropIndexes(bean interface{}) error { v := rValue(bean) @@ -208,22 +190,6 @@ func (session *Session) isTableEmpty(tableName string) (bool, error) { return total == 0, nil } -func (session *Session) isIndexExist(tableName, idxName string, unique bool) (bool, error) { - defer session.resetStatement() - if session.IsAutoClose { - defer session.Close() - } - var idx string - if unique { - idx = uniqueName(tableName, idxName) - } else { - idx = indexName(tableName, idxName) - } - sqlStr, args := session.Engine.dialect.IndexCheckSql(tableName, idx) - results, err := session.query(sqlStr, args...) - return len(results) > 0, err -} - // find if index is exist according cols func (session *Session) isIndexExist2(tableName string, cols []string, unique bool) (bool, error) { defer session.resetStatement() @@ -282,25 +248,6 @@ func (session *Session) addUnique(tableName, uqeName string) error { return err } -// To be deleted -func (session *Session) dropAll() error { - defer session.resetStatement() - if session.IsAutoClose { - defer session.Close() - } - - for _, table := range session.Engine.Tables { - session.Statement.Init() - session.Statement.RefTable = table - sqlStr := session.Engine.Dialect().DropTableSql(session.Statement.TableName()) - _, err := session.exec(sqlStr) - if err != nil { - return err - } - } - return nil -} - // Sync2 synchronize structs to database tables func (session *Session) Sync2(beans ...interface{}) error { engine := session.Engine diff --git a/session_schema_test.go b/session_schema_test.go index 2354261b..4d8a4d5a 100644 --- a/session_schema_test.go +++ b/session_schema_test.go @@ -64,6 +64,46 @@ func TestCreateMultiTables(t *testing.T) { assert.NoError(t, session.Commit()) } +type SyncTable1 struct { + Id int64 + Name string + Dev int `xorm:"index"` +} + +type SyncTable2 struct { + Id int64 + Name string `xorm:"unique"` + Number string `xorm:"index"` + Dev int + Age int +} + +func (SyncTable2) TableName() string { + return "sync_table1" +} + +func TestSyncTable(t *testing.T) { + assert.NoError(t, prepareEngine()) + + assert.NoError(t, testEngine.Sync2(new(SyncTable1))) + + assert.NoError(t, testEngine.Sync2(new(SyncTable2))) +} + +func TestIsTableExist(t *testing.T) { + assert.NoError(t, prepareEngine()) + + exist, err := testEngine.IsTableExist(new(CustomTableName)) + assert.NoError(t, err) + assert.False(t, exist) + + assert.NoError(t, testEngine.CreateTables(new(CustomTableName))) + + exist, err = testEngine.IsTableExist(new(CustomTableName)) + assert.NoError(t, err) + assert.True(t, exist) +} + func TestIsTableEmpty(t *testing.T) { assert.NoError(t, prepareEngine()) @@ -146,6 +186,8 @@ func TestIndexAndUnique(t *testing.T) { assert.NoError(t, testEngine.CreateIndexes(&IndexOrUnique{})) assert.NoError(t, testEngine.CreateUniques(&IndexOrUnique{})) + + assert.NoError(t, testEngine.DropIndexes(&IndexOrUnique{})) } func TestMetaInfo(t *testing.T) {