add IsTableExist & IsTableEmpty
This commit is contained in:
parent
59fe3e5b9d
commit
2876528540
27
engine.go
27
engine.go
|
@ -966,35 +966,16 @@ func (engine *Engine) mapping(beans ...interface{}) (e error) {
|
||||||
|
|
||||||
// If a table has any reocrd
|
// If a table has any reocrd
|
||||||
func (engine *Engine) IsTableEmpty(bean interface{}) (bool, error) {
|
func (engine *Engine) IsTableEmpty(bean interface{}) (bool, error) {
|
||||||
v := rValue(bean)
|
|
||||||
t := v.Type()
|
|
||||||
if t.Kind() != reflect.Struct {
|
|
||||||
return false, errors.New("bean should be a struct or struct's point")
|
|
||||||
}
|
|
||||||
engine.autoMapType(v)
|
|
||||||
session := engine.NewSession()
|
session := engine.NewSession()
|
||||||
defer session.Close()
|
defer session.Close()
|
||||||
rows, err := session.Count(bean)
|
return session.IsTableEmpty(bean)
|
||||||
return rows == 0, err
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// If a table is exist
|
// If a table is exist
|
||||||
func (engine *Engine) IsTableExist(bean interface{}) (bool, error) {
|
func (engine *Engine) IsTableExist(beanOrTableName interface{}) (bool, error) {
|
||||||
v := rValue(bean)
|
|
||||||
var tableName string
|
|
||||||
if v.Type().Kind() == reflect.String {
|
|
||||||
tableName = bean.(string)
|
|
||||||
} else if v.Type().Kind() == reflect.Struct {
|
|
||||||
table := engine.autoMapType(v)
|
|
||||||
tableName = table.Name
|
|
||||||
} else {
|
|
||||||
return false, errors.New("bean should be a struct or struct's point")
|
|
||||||
}
|
|
||||||
|
|
||||||
session := engine.NewSession()
|
session := engine.NewSession()
|
||||||
defer session.Close()
|
defer session.Close()
|
||||||
has, err := session.isTableExist(tableName)
|
return session.IsTableExist(beanOrTableName)
|
||||||
return has, err
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (engine *Engine) IdOf(bean interface{}) core.PK {
|
func (engine *Engine) IdOf(bean interface{}) core.PK {
|
||||||
|
@ -1116,7 +1097,7 @@ func (engine *Engine) Sync(beans ...interface{}) error {
|
||||||
session := engine.NewSession()
|
session := engine.NewSession()
|
||||||
session.Statement.RefTable = table
|
session.Statement.RefTable = table
|
||||||
defer session.Close()
|
defer session.Close()
|
||||||
isExist, err := session.isColumnExist(table.Name, col)
|
isExist, err := session.Engine.dialect.IsColumnExist(table.Name, col)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
45
session.go
45
session.go
|
@ -1397,6 +1397,7 @@ func (session *Session) Ping() error {
|
||||||
return session.Db.Ping()
|
return session.Db.Ping()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
func (session *Session) isColumnExist(tableName string, col *core.Column) (bool, error) {
|
func (session *Session) isColumnExist(tableName string, col *core.Column) (bool, error) {
|
||||||
err := session.newDb()
|
err := session.newDb()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -1410,6 +1411,21 @@ func (session *Session) isColumnExist(tableName string, col *core.Column) (bool,
|
||||||
//sqlStr, args := session.Engine.dialect.ColumnCheckSql(tableName, colName)
|
//sqlStr, args := session.Engine.dialect.ColumnCheckSql(tableName, colName)
|
||||||
//results, err := session.query(sqlStr, args...)
|
//results, err := session.query(sqlStr, args...)
|
||||||
//return len(results) > 0, err
|
//return len(results) > 0, err
|
||||||
|
}*/
|
||||||
|
|
||||||
|
func (session *Session) IsTableExist(beanOrTableName interface{}) (bool, error) {
|
||||||
|
v := rValue(beanOrTableName)
|
||||||
|
var tableName string
|
||||||
|
if v.Type().Kind() == reflect.String {
|
||||||
|
tableName = beanOrTableName.(string)
|
||||||
|
} else if v.Type().Kind() == reflect.Struct {
|
||||||
|
table := session.Engine.autoMapType(v)
|
||||||
|
tableName = table.Name
|
||||||
|
} else {
|
||||||
|
return false, errors.New("bean should be a struct or struct's point")
|
||||||
|
}
|
||||||
|
|
||||||
|
return session.isTableExist(tableName)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (session *Session) isTableExist(tableName string) (bool, error) {
|
func (session *Session) isTableExist(tableName string) (bool, error) {
|
||||||
|
@ -1426,6 +1442,34 @@ func (session *Session) isTableExist(tableName string) (bool, error) {
|
||||||
return len(results) > 0, err
|
return len(results) > 0, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (session *Session) IsTableEmpty(bean interface{}) (bool, error) {
|
||||||
|
v := rValue(bean)
|
||||||
|
t := v.Type()
|
||||||
|
|
||||||
|
if t.Kind() == reflect.String {
|
||||||
|
return session.isTableEmpty(bean.(string))
|
||||||
|
} else if t.Kind() == reflect.Struct {
|
||||||
|
session.Engine.autoMapType(v)
|
||||||
|
rows, err := session.Count(bean)
|
||||||
|
return rows == 0, err
|
||||||
|
}
|
||||||
|
return false, errors.New("bean should be a struct or struct's point")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (session *Session) isTableEmpty(tableName string) (bool, error) {
|
||||||
|
session.newDb()
|
||||||
|
|
||||||
|
row := session.Db.QueryRow(fmt.Sprintf("select count(*) from %s", tableName))
|
||||||
|
|
||||||
|
var total int64
|
||||||
|
err := row.Scan(&total)
|
||||||
|
if err != nil {
|
||||||
|
return true, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return total == 0, nil
|
||||||
|
}
|
||||||
|
|
||||||
func (session *Session) isIndexExist(tableName, idxName string, unique bool) (bool, error) {
|
func (session *Session) isIndexExist(tableName, idxName string, unique bool) (bool, error) {
|
||||||
err := session.newDb()
|
err := session.newDb()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -1919,7 +1963,6 @@ func (session *Session) txQuery(tx *core.Tx, sqlStr string, params ...interface{
|
||||||
}
|
}
|
||||||
|
|
||||||
func (session *Session) innerQuery(db *core.DB, sqlStr string, params ...interface{}) (resultsSlice []map[string][]byte, err error) {
|
func (session *Session) innerQuery(db *core.DB, sqlStr string, params ...interface{}) (resultsSlice []map[string][]byte, err error) {
|
||||||
|
|
||||||
stmt, rows, err := session.Engine.LogSQLQueryTime(sqlStr, params, func() (*core.Stmt, *core.Rows, error) {
|
stmt, rows, err := session.Engine.LogSQLQueryTime(sqlStr, params, func() (*core.Stmt, *core.Rows, error) {
|
||||||
stmt, err := db.Prepare(sqlStr)
|
stmt, err := db.Prepare(sqlStr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
Loading…
Reference in New Issue