add more tests for schema
This commit is contained in:
parent
643f1b2efd
commit
e561396c0b
23
engine.go
23
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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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) {
|
||||
|
|
Loading…
Reference in New Issue