fix/allow-many-rows #1
52
lazy.go
52
lazy.go
@@ -14,39 +14,47 @@ import (
|
|||||||
type MockResults struct {
|
type MockResults struct {
|
||||||
Query string
|
Query string
|
||||||
Columns []string
|
Columns []string
|
||||||
Rows []driver.Value
|
Rows [][]driver.Value
|
||||||
}
|
}
|
||||||
|
|
||||||
func GenerateRandomResults(query string, exampleObj any, keyVal any) (*MockResults, error) {
|
func GenerateRandomResults(query string, exampleObj any, keyVal any, rowCount int) (*MockResults, error) {
|
||||||
if exampleObj == nil {
|
if exampleObj == nil {
|
||||||
return nil, errors.New("exampleObj cannot be nil")
|
return nil, errors.New("exampleObj cannot be nil")
|
||||||
}
|
}
|
||||||
|
if rowCount == 0 {
|
||||||
|
rowCount = 1
|
||||||
|
}
|
||||||
|
|
||||||
retType := reflect.TypeOf(exampleObj)
|
retType := reflect.TypeOf(exampleObj)
|
||||||
maxFieldCount := retType.NumField()
|
maxFieldCount := retType.NumField()
|
||||||
columns := make([]string, 0, maxFieldCount)
|
columns := make([]string, 0, maxFieldCount)
|
||||||
rows := make([]driver.Value, 0, maxFieldCount)
|
rows := make([][]driver.Value, 0, maxFieldCount)
|
||||||
|
|
||||||
for x := 0; x < maxFieldCount; x++ {
|
//double loop here to allow for multiple rows
|
||||||
field := retType.Field(x)
|
for y := 0; y < rowCount; y++ {
|
||||||
dbTag := field.Tag.Get("db")
|
for x := 0; x < maxFieldCount; x++ {
|
||||||
if dbTag == "" {
|
field := retType.Field(x)
|
||||||
continue
|
dbTag := field.Tag.Get("db")
|
||||||
|
if dbTag == "" {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
if y == 0 {
|
||||||
|
columns = append(columns, dbTag)
|
||||||
|
}
|
||||||
|
|
||||||
|
if field.Tag.Get("test") == "key" {
|
||||||
|
rows[y] = append(rows[y], keyVal)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
nv := kindToRandom(field)
|
||||||
|
if nv == nil {
|
||||||
|
return nil, fmt.Errorf("could not match type: %s", retType.Name())
|
||||||
|
}
|
||||||
|
|
||||||
|
rows[y] = append(rows[y], nv)
|
||||||
}
|
}
|
||||||
|
|
||||||
columns = append(columns, dbTag)
|
|
||||||
|
|
||||||
if field.Tag.Get("test") == "key" {
|
|
||||||
rows = append(rows, keyVal)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
nv := kindToRandom(field)
|
|
||||||
if nv == nil {
|
|
||||||
return nil, fmt.Errorf("could not match type: %s", retType.Name())
|
|
||||||
}
|
|
||||||
|
|
||||||
rows = append(rows, nv)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return &MockResults{
|
return &MockResults{
|
||||||
|
Reference in New Issue
Block a user