From f90920fb92a22d4ccd49247c8890e695704016df Mon Sep 17 00:00:00 2001 From: aaron <462826@qq.com> Date: Wed, 13 May 2020 15:39:53 +0800 Subject: [PATCH] select data from temp table --- src/gen/excel.go | 35 ++++++++++++++++++++++++++++++----- src/gen/generator.go | 1 + src/model/definition.go | 1 + 3 files changed, 32 insertions(+), 5 deletions(-) diff --git a/src/gen/excel.go b/src/gen/excel.go index 95d6926a..d49ce465 100644 --- a/src/gen/excel.go +++ b/src/gen/excel.go @@ -25,7 +25,7 @@ func GenerateFieldValuesFromExcel(field *model.Field, fieldValue *model.FieldVal path := constant.DataDir + file ConvertExcelToSQLite(*field, path) - list = strings.Split("str"+path, "\n") + list = ReadDataSQLite(*field) // get step and rand rand := false @@ -120,9 +120,10 @@ func ConvertExcelToSQLite(field model.Field, path string) { valList = valList + ")" } - dropSql := fmt.Sprintf(dropTemplate, field.Name) - ddl := fmt.Sprintf(ddlTemplate, field.Name, colDefine) - insertSql := fmt.Sprintf(insertTemplate, field.Name, colList, valList) + tableName := field.Name + "_" + sheet + dropSql := fmt.Sprintf(dropTemplate, tableName) + ddl := fmt.Sprintf(ddlTemplate, tableName, colDefine) + insertSql := fmt.Sprintf(insertTemplate, tableName, colList, valList) db, err := sql.Open("sqlite3", constant.SqliteSource) _, err = db.Exec(dropSql) @@ -141,8 +142,32 @@ func ConvertExcelToSQLite(field model.Field, path string) { } } -func ReadDataSQLite(table string) []string { +func ReadDataSQLite(field model.Field) []string { list := make([]string, 0) + db, err := sql.Open(constant.SqliteDriver, constant.SqliteSource) + if err != nil { + logUtils.Screen("fail to open " + constant.SqliteSource + ": " + err.Error()) + return list + } + + rows, err := db.Query(field.Filter) + if err != nil { + logUtils.Screen("fail to exec query " + err.Error()) + return list + } + + for rows.Next() { + var val string + + err = rows.Scan(&val) + if err != nil { + logUtils.Screen("fail to get sqlite3 row: " + err.Error()) + return list + } + + list = append(list, val) + } + return list } diff --git a/src/gen/generator.go b/src/gen/generator.go index f6d6a8ae..9dcd5cc0 100644 --- a/src/gen/generator.go +++ b/src/gen/generator.go @@ -83,6 +83,7 @@ func GenerateForField(field *model.Field, total int) []string { } else {// other type like address.city arr := strings.Split(field.Type, ".") referField := constant.LoadedFields[arr[0]] + referField.Filter = field.Range values = GenerateFieldItemsFromDefinition(&referField, total) } diff --git a/src/model/definition.go b/src/model/definition.go index ac9a6167..a6a4e45b 100644 --- a/src/model/definition.go +++ b/src/model/definition.go @@ -14,6 +14,7 @@ type Field struct { Note string `yaml:"note"` Type string `yaml:"type"` Range string `yaml:"range"` + Filter string `yaml:"filter"` Prefix string `yaml:"prefix"` Postfix string `yaml:"postfix"` Loop int `yaml:"loop"` -- GitLab