forked from mirror/gorm
mysql only accept offset with limit together
This commit is contained in:
parent
eae7f6be60
commit
d395b35025
|
@ -5,6 +5,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"reflect"
|
"reflect"
|
||||||
"regexp"
|
"regexp"
|
||||||
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
"unicode/utf8"
|
"unicode/utf8"
|
||||||
|
@ -126,6 +127,21 @@ func (s mysql) RemoveIndex(tableName string, indexName string) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s mysql) LimitAndOffsetSQL(limit, offset interface{}) (sql string) {
|
||||||
|
if limit != nil {
|
||||||
|
if parsedLimit, err := strconv.ParseInt(fmt.Sprint(limit), 0, 0); err == nil && parsedLimit >= 0 {
|
||||||
|
sql += fmt.Sprintf(" LIMIT %d", parsedLimit)
|
||||||
|
}
|
||||||
|
|
||||||
|
if offset != nil {
|
||||||
|
if parsedOffset, err := strconv.ParseInt(fmt.Sprint(offset), 0, 0); err == nil && parsedOffset >= 0 {
|
||||||
|
sql += fmt.Sprintf(" OFFSET %d", parsedOffset)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func (s mysql) HasForeignKey(tableName string, foreignKeyName string) bool {
|
func (s mysql) HasForeignKey(tableName string, foreignKeyName string) bool {
|
||||||
var count int
|
var count int
|
||||||
s.db.QueryRow("SELECT count(*) FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE CONSTRAINT_SCHEMA=? AND TABLE_NAME=? AND CONSTRAINT_NAME=? AND CONSTRAINT_TYPE='FOREIGN KEY'", s.CurrentDatabase(), tableName, foreignKeyName).Scan(&count)
|
s.db.QueryRow("SELECT count(*) FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE CONSTRAINT_SCHEMA=? AND TABLE_NAME=? AND CONSTRAINT_NAME=? AND CONSTRAINT_TYPE='FOREIGN KEY'", s.CurrentDatabase(), tableName, foreignKeyName).Scan(&count)
|
||||||
|
|
|
@ -106,7 +106,7 @@ func TestEmbeddedMany2ManyRelationship(t *testing.T) {
|
||||||
t.Errorf("no error should return when delete embedded many2many relationship, but got %v", err)
|
t.Errorf("no error should return when delete embedded many2many relationship, but got %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
association := DB.Model(person).Debug().Association("Addresses")
|
association := DB.Model(person).Association("Addresses")
|
||||||
if count := association.Count(); count != 1 || association.Error != nil {
|
if count := association.Count(); count != 1 || association.Error != nil {
|
||||||
t.Errorf("Should found one address, but got %v, error is %v", count, association.Error)
|
t.Errorf("Should found one address, but got %v, error is %v", count, association.Error)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue