diff --git a/doc.go b/doc.go index e5c35c67..cc71930d 100644 --- a/doc.go +++ b/doc.go @@ -38,7 +38,7 @@ ORM Methods There are 7 major ORM methods and many helpful methods to use to operate database. -1. Insert one or multipe records to database +1. Insert one or multiple records to database affected, err := engine.Insert(&struct) // INSERT INTO struct () values () @@ -81,7 +81,7 @@ another is Rows affected, err := engine.Id(...).Update(&user) // UPDATE user SET ... -6. Delete one or more records, Delete MUST has conditon +6. Delete one or more records, Delete MUST has condition affected, err := engine.Where(...).Delete(&user) // DELETE FROM user Where ... diff --git a/engine.go b/engine.go index c56aa063..9e7b0037 100644 --- a/engine.go +++ b/engine.go @@ -46,7 +46,7 @@ type Engine struct { disableGlobalCache bool } -// ShowSQL show SQL statment or not on logger if log level is great than INFO +// ShowSQL show SQL statement or not on logger if log level is great than INFO func (engine *Engine) ShowSQL(show ...bool) { engine.logger.ShowSQL(show...) if len(show) == 0 { @@ -56,7 +56,7 @@ func (engine *Engine) ShowSQL(show ...bool) { } } -// ShowExecTime show SQL statment and execute time or not on logger if log level is great than INFO +// ShowExecTime show SQL statement and execute time or not on logger if log level is great than INFO func (engine *Engine) ShowExecTime(show ...bool) { if len(show) == 0 { engine.showExecTime = true @@ -117,7 +117,7 @@ func (engine *Engine) SupportInsertMany() bool { return engine.dialect.SupportInsertMany() } -// QuoteStr Engine's database use which charactor as quote. +// QuoteStr Engine's database use which character as quote. // mysql, sqlite use ` and postgres use " func (engine *Engine) QuoteStr() string { return engine.dialect.QuoteStr() @@ -305,7 +305,7 @@ func (engine *Engine) Sql(querystring string, args ...interface{}) *Session { return engine.SQL(querystring, args...) } -// SQL method let's you manualy write raw SQL and operate +// SQL method let's you manually write raw SQL and operate // For example: // // engine.SQL("select * from user").Find(&users) @@ -348,8 +348,6 @@ func (engine *Engine) DBMetas() ([]*core.Table, error) { for _, name := range colSeq { table.AddColumn(cols[name]) } - //table.Columns = cols - //table.ColumnsSeq = colSeq indexes, err := engine.dialect.GetIndexes(table.Name) if err != nil { return nil, err @@ -370,18 +368,22 @@ func (engine *Engine) DBMetas() ([]*core.Table, error) { } // DumpAllToFile dump database all table structs and data to a file -func (engine *Engine) DumpAllToFile(fp string) error { +func (engine *Engine) DumpAllToFile(fp string, tp ...core.DbType) error { f, err := os.Create(fp) if err != nil { return err } defer f.Close() - return engine.DumpAll(f) + return engine.DumpAll(f, tp...) } // DumpAll dump database all table structs and data to w -func (engine *Engine) DumpAll(w io.Writer) error { - return engine.dumpAll(w, engine.dialect.DBType()) +func (engine *Engine) DumpAll(w io.Writer, tp ...core.DbType) error { + tables, err := engine.DBMetas() + if err != nil { + return err + } + return engine.DumpTables(tables, w, tp...) } // DumpTablesToFile dump specified tables to SQL file. @@ -399,140 +401,7 @@ func (engine *Engine) DumpTables(tables []*core.Table, w io.Writer, tp ...core.D return engine.dumpTables(tables, w, tp...) } -func (engine *Engine) tableName(beanOrTableName interface{}) (string, error) { - v := rValue(beanOrTableName) - if v.Type().Kind() == reflect.String { - return beanOrTableName.(string), nil - } else if v.Type().Kind() == reflect.Struct { - return engine.tbName(v), nil - } - return "", errors.New("bean should be a struct or struct's point") -} - -func (engine *Engine) tbName(v reflect.Value) string { - if tb, ok := v.Interface().(TableName); ok { - return tb.TableName() - } - - if v.Type().Kind() == reflect.Ptr { - if tb, ok := reflect.Indirect(v).Interface().(TableName); ok { - return tb.TableName() - } - } else if v.CanAddr() { - if tb, ok := v.Addr().Interface().(TableName); ok { - return tb.TableName() - } - } - return engine.TableMapper.Obj2Table(reflect.Indirect(v).Type().Name()) -} - -// DumpAll dump database all table structs and data to w with specify db type -func (engine *Engine) dumpAll(w io.Writer, tp ...core.DbType) error { - tables, err := engine.DBMetas() - if err != nil { - return err - } - - var dialect core.Dialect - if len(tp) == 0 { - dialect = engine.dialect - } else { - dialect = core.QueryDialect(tp[0]) - if dialect == nil { - return errors.New("Unsupported database type") - } - dialect.Init(nil, engine.dialect.URI(), "", "") - } - - _, err = io.WriteString(w, fmt.Sprintf("/*Generated by xorm v%s %s*/\n\n", - Version, time.Now().In(engine.TZLocation).Format("2006-01-02 15:04:05"))) - if err != nil { - return err - } - - for i, table := range tables { - if i > 0 { - _, err = io.WriteString(w, "\n") - if err != nil { - return err - } - } - _, err = io.WriteString(w, dialect.CreateTableSql(table, "", table.StoreEngine, "")+";\n") - if err != nil { - return err - } - for _, index := range table.Indexes { - _, err = io.WriteString(w, dialect.CreateIndexSql(table.Name, index)+";\n") - if err != nil { - return err - } - } - - rows, err := engine.DB().Query("SELECT * FROM " + engine.Quote(table.Name)) - if err != nil { - return err - } - defer rows.Close() - - cols, err := rows.Columns() - if err != nil { - return err - } - if len(cols) == 0 { - continue - } - for rows.Next() { - dest := make([]interface{}, len(cols)) - err = rows.ScanSlice(&dest) - if err != nil { - return err - } - - _, err = io.WriteString(w, "INSERT INTO "+dialect.Quote(table.Name)+" ("+dialect.Quote(strings.Join(cols, dialect.Quote(", ")))+") VALUES (") - if err != nil { - return err - } - - var temp string - for i, d := range dest { - col := table.GetColumn(cols[i]) - if d == nil { - temp += ", NULL" - } else if col.SQLType.IsText() || col.SQLType.IsTime() { - var v = fmt.Sprintf("%s", d) - temp += ", '" + strings.Replace(v, "'", "''", -1) + "'" - } else if col.SQLType.IsBlob() { - if reflect.TypeOf(d).Kind() == reflect.Slice { - temp += fmt.Sprintf(", %s", dialect.FormatBytes(d.([]byte))) - } else if reflect.TypeOf(d).Kind() == reflect.String { - temp += fmt.Sprintf(", '%s'", d.(string)) - } - } else if col.SQLType.IsNumeric() { - switch reflect.TypeOf(d).Kind() { - case reflect.Slice: - temp += fmt.Sprintf(", %s", string(d.([]byte))) - default: - temp += fmt.Sprintf(", %v", d) - } - } else { - s := fmt.Sprintf("%v", d) - if strings.Contains(s, ":") || strings.Contains(s, "-") { - temp += fmt.Sprintf(", '%s'", s) - } else { - temp += fmt.Sprintf(", %s", s) - } - } - } - _, err = io.WriteString(w, temp[2:]+");\n") - if err != nil { - return err - } - } - } - return nil -} - -// DumpAll dump database all table structs and data to w with specify db type +// dumpTables dump database all table structs and data to w with specify db type func (engine *Engine) dumpTables(tables []*core.Table, w io.Writer, tp ...core.DbType) error { var dialect core.Dialect var distDBName string @@ -572,19 +441,15 @@ func (engine *Engine) dumpTables(tables []*core.Table, w io.Writer, tp ...core.D } } - rows, err := engine.DB().Query("SELECT * FROM " + engine.Quote(table.Name)) + cols := table.ColumnsSeq() + colNames := dialect.Quote(strings.Join(cols, dialect.Quote(", "))) + + rows, err := engine.DB().Query("SELECT " + colNames + " FROM " + engine.Quote(table.Name)) if err != nil { return err } defer rows.Close() - cols, err := rows.Columns() - if err != nil { - return err - } - if len(cols) == 0 { - continue - } for rows.Next() { dest := make([]interface{}, len(cols)) err = rows.ScanSlice(&dest) @@ -592,7 +457,7 @@ func (engine *Engine) dumpTables(tables []*core.Table, w io.Writer, tp ...core.D return err } - _, err = io.WriteString(w, "INSERT INTO "+dialect.Quote(table.Name)+" ("+dialect.Quote(strings.Join(cols, dialect.Quote(", ")))+") VALUES (") + _, err = io.WriteString(w, "INSERT INTO "+dialect.Quote(table.Name)+" ("+colNames+") VALUES (") if err != nil { return err } @@ -600,6 +465,10 @@ func (engine *Engine) dumpTables(tables []*core.Table, w io.Writer, tp ...core.D var temp string for i, d := range dest { col := table.GetColumn(cols[i]) + if col == nil { + return errors.New("unknow column error") + } + if d == nil { temp += ", NULL" } else if col.SQLType.IsText() || col.SQLType.IsTime() { @@ -619,6 +488,18 @@ func (engine *Engine) dumpTables(tables []*core.Table, w io.Writer, tp ...core.D switch reflect.TypeOf(d).Kind() { case reflect.Slice: temp += fmt.Sprintf(", %s", string(d.([]byte))) + case reflect.Int16, reflect.Int8, reflect.Int32, reflect.Int64, reflect.Int: + if col.SQLType.Name == core.Bool { + temp += fmt.Sprintf(", %v", strconv.FormatBool(reflect.ValueOf(d).Int() > 0)) + } else { + temp += fmt.Sprintf(", %v", d) + } + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: + if col.SQLType.Name == core.Bool { + temp += fmt.Sprintf(", %v", strconv.FormatBool(reflect.ValueOf(d).Uint() > 0)) + } else { + temp += fmt.Sprintf(", %v", d) + } default: temp += fmt.Sprintf(", %v", d) } @@ -644,6 +525,33 @@ func (engine *Engine) dumpTables(tables []*core.Table, w io.Writer, tp ...core.D return nil } +func (engine *Engine) tableName(beanOrTableName interface{}) (string, error) { + v := rValue(beanOrTableName) + if v.Type().Kind() == reflect.String { + return beanOrTableName.(string), nil + } else if v.Type().Kind() == reflect.Struct { + return engine.tbName(v), nil + } + return "", errors.New("bean should be a struct or struct's point") +} + +func (engine *Engine) tbName(v reflect.Value) string { + if tb, ok := v.Interface().(TableName); ok { + return tb.TableName() + } + + if v.Type().Kind() == reflect.Ptr { + if tb, ok := reflect.Indirect(v).Interface().(TableName); ok { + return tb.TableName() + } + } else if v.CanAddr() { + if tb, ok := v.Addr().Interface().(TableName); ok { + return tb.TableName() + } + } + return engine.TableMapper.Obj2Table(reflect.Indirect(v).Type().Name()) +} + // Cascade use cascade or not func (engine *Engine) Cascade(trueOrFalse ...bool) *Session { session := engine.NewSession() @@ -716,7 +624,7 @@ func (engine *Engine) Select(str string) *Session { return session.Select(str) } -// Cols only use the paramters as select or update columns +// Cols only use the parameters as select or update columns func (engine *Engine) Cols(columns ...string) *Session { session := engine.NewSession() session.IsAutoClose = true @@ -740,15 +648,15 @@ func (engine *Engine) MustCols(columns ...string) *Session { // UseBool xorm automatically retrieve condition according struct, but // if struct has bool field, it will ignore them. So use UseBool // to tell system to do not ignore them. -// If no paramters, it will use all the bool field of struct, or -// it will use paramters's columns +// If no parameters, it will use all the bool field of struct, or +// it will use parameters's columns func (engine *Engine) UseBool(columns ...string) *Session { session := engine.NewSession() session.IsAutoClose = true return session.UseBool(columns...) } -// Omit only not use the paramters as select or update columns +// Omit only not use the parameters as select or update columns func (engine *Engine) Omit(columns ...string) *Session { session := engine.NewSession() session.IsAutoClose = true diff --git a/examples/cache.go b/examples/cache.go index 54525838..72d987df 100644 --- a/examples/cache.go +++ b/examples/cache.go @@ -8,6 +8,7 @@ import ( _ "github.com/mattn/go-sqlite3" ) +// User describes a user type User struct { Id int64 Name string @@ -38,7 +39,7 @@ func main() { return } - users := make([]User, 0) + var users []User err = Orm.Find(&users) if err != nil { fmt.Println(err) @@ -47,8 +48,7 @@ func main() { fmt.Println("users:", users) - users2 := make([]User, 0) - + var users2 []User err = Orm.Find(&users2) if err != nil { fmt.Println(err) @@ -57,8 +57,7 @@ func main() { fmt.Println("users2:", users2) - users3 := make([]User, 0) - + var users3 []User err = Orm.Find(&users3) if err != nil { fmt.Println(err) diff --git a/examples/cachegoroutine.go b/examples/cachegoroutine.go index 175d74e8..815e0ad1 100644 --- a/examples/cachegoroutine.go +++ b/examples/cachegoroutine.go @@ -10,6 +10,7 @@ import ( _ "github.com/mattn/go-sqlite3" ) +// User describes a user type User struct { Id int64 Name string diff --git a/examples/conversion.go b/examples/conversion.go index 7797e7f4..c0646ee1 100644 --- a/examples/conversion.go +++ b/examples/conversion.go @@ -9,35 +9,39 @@ import ( _ "github.com/mattn/go-sqlite3" ) +// Status describes a status type Status struct { Name string Color string } +// defines some statuses var ( - Registed = Status{"Registed", "white"} - Approved = Status{"Approved", "green"} - Removed = Status{"Removed", "red"} - Statuses = map[string]Status{ - Registed.Name: Registed, - Approved.Name: Approved, - Removed.Name: Removed, + Registered = Status{"Registered", "white"} + Approved = Status{"Approved", "green"} + Removed = Status{"Removed", "red"} + Statuses = map[string]Status{ + Registered.Name: Registered, + Approved.Name: Approved, + Removed.Name: Removed, } ) +// FromDB implemented xorm.Conversion convent database data to self func (s *Status) FromDB(bytes []byte) error { if r, ok := Statuses[string(bytes)]; ok { *s = r return nil - } else { - return errors.New("no this data") } + return errors.New("no this data") } +// ToDB implemented xorm.Conversion convent to database data func (s *Status) ToDB() ([]byte, error) { return []byte(s.Name), nil } +// User describes a user type User struct { Id int64 Name string @@ -60,7 +64,7 @@ func main() { return } - _, err = Orm.Insert(&User{1, "xlw", Registed}) + _, err = Orm.Insert(&User{1, "xlw", Registered}) if err != nil { fmt.Println(err) return diff --git a/examples/derive.go b/examples/derive.go index fa1e0b1a..86529eea 100644 --- a/examples/derive.go +++ b/examples/derive.go @@ -8,17 +8,20 @@ import ( _ "github.com/mattn/go-sqlite3" ) +// User describes a user type User struct { Id int64 Name string } +// LoginInfo describes a login information type LoginInfo struct { Id int64 IP string UserId int64 } +// LoginInfo1 describes a login information type LoginInfo1 struct { LoginInfo `xorm:"extends"` UserName string @@ -28,27 +31,27 @@ func main() { f := "derive.db" os.Remove(f) - Orm, err := xorm.NewEngine("sqlite3", f) + orm, err := xorm.NewEngine("sqlite3", f) if err != nil { fmt.Println(err) return } - defer Orm.Close() - Orm.ShowSQL(true) - err = Orm.CreateTables(&User{}, &LoginInfo{}) + defer orm.Close() + orm.ShowSQL(true) + err = orm.CreateTables(&User{}, &LoginInfo{}) if err != nil { fmt.Println(err) return } - _, err = Orm.Insert(&User{1, "xlw"}, &LoginInfo{1, "127.0.0.1", 1}) + _, err = orm.Insert(&User{1, "xlw"}, &LoginInfo{1, "127.0.0.1", 1}) if err != nil { fmt.Println(err) return } info := LoginInfo{} - _, err = Orm.Id(1).Get(&info) + _, err = orm.Id(1).Get(&info) if err != nil { fmt.Println(err) return @@ -56,7 +59,7 @@ func main() { fmt.Println(info) infos := make([]LoginInfo1, 0) - err = Orm.Sql(`select *, (select name from user where id = login_info.user_id) as user_name from + err = orm.Sql(`select *, (select name from user where id = login_info.user_id) as user_name from login_info limit 10`).Find(&infos) if err != nil { fmt.Println(err) diff --git a/examples/find.go b/examples/find.go index e47bc28d..d80a698c 100644 --- a/examples/find.go +++ b/examples/find.go @@ -8,6 +8,7 @@ import ( "github.com/go-xorm/xorm" ) +// User describes a user type User struct { Id int64 Name string @@ -19,27 +20,27 @@ func main() { f := "conversion.db" os.Remove(f) - Orm, err := xorm.NewEngine("sqlite3", f) + orm, err := xorm.NewEngine("sqlite3", f) if err != nil { fmt.Println(err) return } - Orm.ShowSQL(true) + orm.ShowSQL(true) - err = Orm.CreateTables(&User{}) + err = orm.CreateTables(&User{}) if err != nil { fmt.Println(err) return } - _, err = Orm.Insert(&User{Id: 1, Name: "xlw"}) + _, err = orm.Insert(&User{Id: 1, Name: "xlw"}) if err != nil { fmt.Println(err) return } users := make([]User, 0) - err = Orm.Find(&users) + err = orm.Find(&users) if err != nil { fmt.Println(err) return diff --git a/examples/goroutine.go b/examples/goroutine.go index 4ba05c04..629ea9ac 100644 --- a/examples/goroutine.go +++ b/examples/goroutine.go @@ -10,6 +10,7 @@ import ( _ "github.com/mattn/go-sqlite3" ) +// User describes a user type User struct { Id int64 Name string diff --git a/examples/maxconnect.go b/examples/maxconnect.go index 82d2f49a..507cbc3c 100644 --- a/examples/maxconnect.go +++ b/examples/maxconnect.go @@ -10,6 +10,7 @@ import ( _ "github.com/mattn/go-sqlite3" ) +// User describes a user type User struct { Id int64 Name string diff --git a/examples/singlemapping.go b/examples/singlemapping.go index f6113827..3ae0fd1a 100644 --- a/examples/singlemapping.go +++ b/examples/singlemapping.go @@ -8,11 +8,13 @@ import ( _ "github.com/mattn/go-sqlite3" ) +// User describes a user type User struct { Id int64 Name string } +// LoginInfo describes a login information type LoginInfo struct { Id int64 IP string @@ -27,26 +29,26 @@ func main() { f := "singleMapping.db" os.Remove(f) - Orm, err := xorm.NewEngine("sqlite3", f) + orm, err := xorm.NewEngine("sqlite3", f) if err != nil { fmt.Println(err) return } - Orm.ShowSQL(true) - err = Orm.CreateTables(&User{}, &LoginInfo{}) + orm.ShowSQL(true) + err = orm.CreateTables(&User{}, &LoginInfo{}) if err != nil { fmt.Println(err) return } - _, err = Orm.Insert(&User{1, "xlw"}, &LoginInfo{1, "127.0.0.1", 1, "", 23}) + _, err = orm.Insert(&User{1, "xlw"}, &LoginInfo{1, "127.0.0.1", 1, "", 23}) if err != nil { fmt.Println(err) return } info := LoginInfo{} - _, err = Orm.Id(1).Get(&info) + _, err = orm.Id(1).Get(&info) if err != nil { fmt.Println(err) return diff --git a/examples/sync.go b/examples/sync.go index 93d23ccc..134e2a77 100644 --- a/examples/sync.go +++ b/examples/sync.go @@ -9,6 +9,7 @@ import ( _ "github.com/mattn/go-sqlite3" ) +// SyncUser2 describes a user type SyncUser2 struct { Id int64 Name string `xorm:"unique"` @@ -20,6 +21,7 @@ type SyncUser2 struct { Date int } +// SyncLoginInfo2 describes a login information type SyncLoginInfo2 struct { Id int64 IP string `xorm:"index"` diff --git a/helpers.go b/helpers.go index 7efa7294..a015ca50 100644 --- a/helpers.go +++ b/helpers.go @@ -102,7 +102,7 @@ func splitTag(tag string) (tags []string) { } } if lastIdx < len(tag) { - tags = append(tags, strings.TrimSpace(tag[lastIdx:len(tag)])) + tags = append(tags, strings.TrimSpace(tag[lastIdx:])) } return } diff --git a/logger.go b/logger.go index 428ae8f2..727d030a 100644 --- a/logger.go +++ b/logger.go @@ -12,6 +12,7 @@ import ( "github.com/go-xorm/core" ) +// default log options const ( DEFAULT_LOG_PREFIX = "[xorm]" DEFAULT_LOG_FLAG = log.Ldate | log.Lmicroseconds diff --git a/mysql_dialect.go b/mysql_dialect.go index ac5174fa..ab756f35 100644 --- a/mysql_dialect.go +++ b/mysql_dialect.go @@ -465,7 +465,7 @@ func (db *mysql) GetIndexes(tableName string) (map[string]*core.Index, error) { colName = strings.Trim(colName, "` ") var isRegular bool if strings.HasPrefix(indexName, "IDX_"+tableName) || strings.HasPrefix(indexName, "UQE_"+tableName) { - indexName = indexName[5+len(tableName) : len(indexName)] + indexName = indexName[5+len(tableName):] isRegular = true } diff --git a/postgres_dialect.go b/postgres_dialect.go index ad7a76f8..c23ab6f3 100644 --- a/postgres_dialect.go +++ b/postgres_dialect.go @@ -1077,7 +1077,7 @@ func (db *postgres) GetIndexes(tableName string) (map[string]*core.Index, error) colNames = strings.Split(cs[1][0:len(cs[1])-1], ",") if strings.HasPrefix(indexName, "IDX_"+tableName) || strings.HasPrefix(indexName, "UQE_"+tableName) { - newIdxName := indexName[5+len(tableName) : len(indexName)] + newIdxName := indexName[5+len(tableName):] if newIdxName != "" { indexName = newIdxName } diff --git a/session.go b/session.go index 1eabdc89..6e1b02af 100644 --- a/session.go +++ b/session.go @@ -107,7 +107,7 @@ func (session *Session) resetStatement() { } } -// Prepare set a flag to session that should be prepare statment before execute query +// Prepare set a flag to session that should be prepare statement before execute query func (session *Session) Prepare() *Session { session.prepareStmt = true return session @@ -250,8 +250,8 @@ func (session *Session) NoCascade() *Session { // UseBool automatically retrieve condition according struct, but // if struct has bool field, it will ignore them. So use UseBool // to tell system to do not ignore them. -// If no paramters, it will use all the bool field of struct, or -// it will use paramters's columns +// If no parameters, it will use all the bool field of struct, or +// it will use parameters's columns func (session *Session) UseBool(columns ...string) *Session { session.Statement.UseBool(columns...) return session @@ -271,7 +271,7 @@ func (session *Session) ForUpdate() *Session { return session } -// Omit Only not use the paramters as select or update columns +// Omit Only not use the parameters as select or update columns func (session *Session) Omit(columns ...string) *Session { session.Statement.Omit(columns...) return session @@ -1005,7 +1005,7 @@ func (session *Session) str2Time(col *core.Column, data string) (outTime time.Ti sd, err := strconv.ParseInt(sdata, 10, 64) if err == nil { x = time.Unix(sd, 0) - // !nashtsai! HACK mymysql driver is casuing Local location being change to CHAT and cause wrong time conversion + // !nashtsai! HACK mymysql driver is causing Local location being change to CHAT and cause wrong time conversion if col.TimeZone == nil { x = x.In(session.Engine.TZLocation) } else { diff --git a/session_get.go b/session_get.go index bafed936..f32bf481 100644 --- a/session_get.go +++ b/session_get.go @@ -65,7 +65,8 @@ func (session *Session) nocacheGet(bean interface{}, sqlStr string, args ...inte defer rawRows.Close() if rawRows.Next() { - if fields, err := rawRows.Columns(); err == nil { + fields, err := rawRows.Columns() + if err == nil { err = session.row2Bean(rawRows, fields, len(fields), bean) } return true, err diff --git a/sqlite3_dialect.go b/sqlite3_dialect.go index 4cc02116..7ad153a3 100644 --- a/sqlite3_dialect.go +++ b/sqlite3_dialect.go @@ -406,7 +406,7 @@ func (db *sqlite3) GetIndexes(tableName string) (map[string]*core.Index, error) indexName := strings.Trim(sql[nNStart+6:nNEnd], "` []") if strings.HasPrefix(indexName, "IDX_"+tableName) || strings.HasPrefix(indexName, "UQE_"+tableName) { - index.Name = indexName[5+len(tableName) : len(indexName)] + index.Name = indexName[5+len(tableName):] } else { index.Name = indexName } diff --git a/statement.go b/statement.go index 2989114f..fb116b94 100644 --- a/statement.go +++ b/statement.go @@ -75,7 +75,7 @@ type Statement struct { cond builder.Cond } -// Init reset all the statment's fields +// Init reset all the statement's fields func (statement *Statement) Init() { statement.RefTable = nil statement.Start = 0 @@ -147,12 +147,12 @@ func (statement *Statement) SQL(query interface{}, args ...interface{}) *Stateme return statement } -// Where add Where statment +// Where add Where statement func (statement *Statement) Where(query interface{}, args ...interface{}) *Statement { return statement.And(query, args...) } -// And add Where & and statment +// And add Where & and statement func (statement *Statement) And(query interface{}, args ...interface{}) *Statement { switch query.(type) { case string: @@ -173,7 +173,7 @@ func (statement *Statement) And(query interface{}, args ...interface{}) *Stateme return statement } -// Or add Where & Or statment +// Or add Where & Or statement func (statement *Statement) Or(query interface{}, args ...interface{}) *Statement { switch query.(type) { case string: @@ -193,7 +193,7 @@ func (statement *Statement) Or(query interface{}, args ...interface{}) *Statemen return statement } -// In generate "Where column IN (?) " statment +// In generate "Where column IN (?) " statement func (statement *Statement) In(column string, args ...interface{}) *Statement { if len(args) == 0 { return statement @@ -204,7 +204,7 @@ func (statement *Statement) In(column string, args ...interface{}) *Statement { return statement } -// NotIn generate "Where column NOT IN (?) " statment +// NotIn generate "Where column NOT IN (?) " statement func (statement *Statement) NotIn(column string, args ...interface{}) *Statement { if len(args) == 0 { return statement @@ -706,14 +706,14 @@ func (statement *Statement) TableName() string { return statement.tableName } -// Id generate "where id = ? " statment or for composite key "where key1 = ? and key2 = ?" +// Id generate "where id = ? " statement or for composite key "where key1 = ? and key2 = ?" // // Deprecated: use ID instead func (statement *Statement) Id(id interface{}) *Statement { return statement.ID(id) } -// ID generate "where id = ? " statment or for composite key "where key1 = ? and key2 = ?" +// ID generate "where id = ? " statement or for composite key "where key1 = ? and key2 = ?" func (statement *Statement) ID(id interface{}) *Statement { idValue := reflect.ValueOf(id) idType := reflect.TypeOf(idValue.Interface()) @@ -741,7 +741,7 @@ func (statement *Statement) ID(id interface{}) *Statement { return statement } -// Incr Generate "Update ... Set column = column + arg" statment +// Incr Generate "Update ... Set column = column + arg" statement func (statement *Statement) Incr(column string, arg ...interface{}) *Statement { k := strings.ToLower(column) if len(arg) > 0 { @@ -752,7 +752,7 @@ func (statement *Statement) Incr(column string, arg ...interface{}) *Statement { return statement } -// Decr Generate "Update ... Set column = column - arg" statment +// Decr Generate "Update ... Set column = column - arg" statement func (statement *Statement) Decr(column string, arg ...interface{}) *Statement { k := strings.ToLower(column) if len(arg) > 0 { @@ -763,24 +763,24 @@ func (statement *Statement) Decr(column string, arg ...interface{}) *Statement { return statement } -// SetExpr Generate "Update ... Set column = {expression}" statment +// SetExpr Generate "Update ... Set column = {expression}" statement func (statement *Statement) SetExpr(column string, expression string) *Statement { k := strings.ToLower(column) statement.exprColumns[k] = exprParam{column, expression} return statement } -// Generate "Update ... Set column = column + arg" statment +// Generate "Update ... Set column = column + arg" statement func (statement *Statement) getInc() map[string]incrParam { return statement.incrColumns } -// Generate "Update ... Set column = column - arg" statment +// Generate "Update ... Set column = column - arg" statement func (statement *Statement) getDec() map[string]decrParam { return statement.decrColumns } -// Generate "Update ... Set column = {expression}" statment +// Generate "Update ... Set column = {expression}" statement func (statement *Statement) getExpr() map[string]exprParam { return statement.exprColumns } diff --git a/statement_test.go b/statement_test.go index 91de19bd..7e8d6c0c 100644 --- a/statement_test.go +++ b/statement_test.go @@ -91,15 +91,15 @@ func BenchmarkGetFlagForColumnWithICKey_ContainsKey(b *testing.B) { mapCols := make(map[string]bool) cols := []*core.Column{ - &core.Column{Name: `ID`}, - &core.Column{Name: `IsDeleted`}, - &core.Column{Name: `Caption`}, - &core.Column{Name: `Code1`}, - &core.Column{Name: `Code2`}, - &core.Column{Name: `Code3`}, - &core.Column{Name: `ParentID`}, - &core.Column{Name: `Latitude`}, - &core.Column{Name: `Longitude`}, + {Name: `ID`}, + {Name: `IsDeleted`}, + {Name: `Caption`}, + {Name: `Code1`}, + {Name: `Code2`}, + {Name: `Code3`}, + {Name: `ParentID`}, + {Name: `Latitude`}, + {Name: `Longitude`}, } for _, col := range cols { @@ -125,15 +125,15 @@ func BenchmarkGetFlagForColumnWithICKey_EmptyMap(b *testing.B) { mapCols := make(map[string]bool) cols := []*core.Column{ - &core.Column{Name: `ID`}, - &core.Column{Name: `IsDeleted`}, - &core.Column{Name: `Caption`}, - &core.Column{Name: `Code1`}, - &core.Column{Name: `Code2`}, - &core.Column{Name: `Code3`}, - &core.Column{Name: `ParentID`}, - &core.Column{Name: `Latitude`}, - &core.Column{Name: `Longitude`}, + {Name: `ID`}, + {Name: `IsDeleted`}, + {Name: `Caption`}, + {Name: `Code1`}, + {Name: `Code2`}, + {Name: `Code3`}, + {Name: `ParentID`}, + {Name: `Latitude`}, + {Name: `Longitude`}, } b.StartTimer() diff --git a/types.go b/types.go index 8bf85d7a..99d761c2 100644 --- a/types.go +++ b/types.go @@ -1,9 +1,9 @@ package xorm import ( - "reflect" + "reflect" - "github.com/go-xorm/core" + "github.com/go-xorm/core" ) var (