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
|
return err
|
||||||
}
|
}
|
||||||
if index.Type == core.UniqueType {
|
if index.Type == core.UniqueType {
|
||||||
//isExist, err := session.isIndexExist(table.Name, name, true)
|
|
||||||
isExist, err := session.isIndexExist2(tableName, index.Cols, true)
|
isExist, err := session.isIndexExist2(tableName, index.Cols, true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -1292,23 +1291,6 @@ func (engine *Engine) Sync2(beans ...interface{}) error {
|
||||||
return s.Sync2(beans...)
|
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
|
// CreateTables create tabls according bean
|
||||||
func (engine *Engine) CreateTables(beans ...interface{}) error {
|
func (engine *Engine) CreateTables(beans ...interface{}) error {
|
||||||
session := engine.NewSession()
|
session := engine.NewSession()
|
||||||
|
@ -1349,10 +1331,11 @@ func (engine *Engine) DropTables(beans ...interface{}) error {
|
||||||
return session.Commit()
|
return session.Commit()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (engine *Engine) createAll() error {
|
// DropIndexes drop indexes of a table
|
||||||
|
func (engine *Engine) DropIndexes(bean interface{}) error {
|
||||||
session := engine.NewSession()
|
session := engine.NewSession()
|
||||||
defer session.Close()
|
defer session.Close()
|
||||||
return session.createAll()
|
return session.DropIndexes(bean)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Exec raw sql
|
// Exec raw sql
|
||||||
|
|
|
@ -89,24 +89,6 @@ func (session *Session) createOneTable() error {
|
||||||
return err
|
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
|
// DropIndexes drop indexes
|
||||||
func (session *Session) DropIndexes(bean interface{}) error {
|
func (session *Session) DropIndexes(bean interface{}) error {
|
||||||
v := rValue(bean)
|
v := rValue(bean)
|
||||||
|
@ -208,22 +190,6 @@ func (session *Session) isTableEmpty(tableName string) (bool, error) {
|
||||||
return total == 0, nil
|
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
|
// find if index is exist according cols
|
||||||
func (session *Session) isIndexExist2(tableName string, cols []string, unique bool) (bool, error) {
|
func (session *Session) isIndexExist2(tableName string, cols []string, unique bool) (bool, error) {
|
||||||
defer session.resetStatement()
|
defer session.resetStatement()
|
||||||
|
@ -282,25 +248,6 @@ func (session *Session) addUnique(tableName, uqeName string) error {
|
||||||
return err
|
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
|
// Sync2 synchronize structs to database tables
|
||||||
func (session *Session) Sync2(beans ...interface{}) error {
|
func (session *Session) Sync2(beans ...interface{}) error {
|
||||||
engine := session.Engine
|
engine := session.Engine
|
||||||
|
|
|
@ -64,6 +64,46 @@ func TestCreateMultiTables(t *testing.T) {
|
||||||
assert.NoError(t, session.Commit())
|
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) {
|
func TestIsTableEmpty(t *testing.T) {
|
||||||
assert.NoError(t, prepareEngine())
|
assert.NoError(t, prepareEngine())
|
||||||
|
|
||||||
|
@ -146,6 +186,8 @@ func TestIndexAndUnique(t *testing.T) {
|
||||||
assert.NoError(t, testEngine.CreateIndexes(&IndexOrUnique{}))
|
assert.NoError(t, testEngine.CreateIndexes(&IndexOrUnique{}))
|
||||||
|
|
||||||
assert.NoError(t, testEngine.CreateUniques(&IndexOrUnique{}))
|
assert.NoError(t, testEngine.CreateUniques(&IndexOrUnique{}))
|
||||||
|
|
||||||
|
assert.NoError(t, testEngine.DropIndexes(&IndexOrUnique{}))
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestMetaInfo(t *testing.T) {
|
func TestMetaInfo(t *testing.T) {
|
||||||
|
|
Loading…
Reference in New Issue