generator

command module
v1.0.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 24, 2021 License: MIT Imports: 5 Imported by: 0

README

测试数据生成器

该工具用于对项目批量添加测试数据,用于项目开发测试,请勿在生产环境下应用

目前工具只支持单表的批量数据新增

1 应用

代码生成示例:

import (
	"time"
	"fmt"

	"gitee.com/DNjinmin/generator/build"
	"gitee.com/DNjinmin/generator/db"
	"gitee.com/DNjinmin/generator/field"
)

/**
 * @Author DNjinmin
 */

func init()  {
	db.Init("root", "000000", "127.0.0.1", "3306", "shopstar")
	field.Init()
}

func main()  {
	fmt.Println( "数据添加完成 : 开始 :", time.Now())

	// 基于 insert into table_name(col) values(xxx),(xxx),(xxx)
	//CREATE TABLE `member` (
	//	`id` varchar(255) NOT NULL,
	//	`username` varchar(255) NOT NULL,
	//	`password` varchar(255) NOT NULL,
	//	`status` tinyint(255) NOT NULL DEFAULT '1',
	//	`phone` varchar(255) NOT NULL,
	//	`age` int(11) NOT NULL,
	//	`sex` tinyint(4) NOT NULL,
	//	PRIMARY KEY (`id`)
	//) ENGINE=InnoDB DEFAULT CHARSET=utf8;


	data := map[string]string{
		"`id`"      : field.DescName(field.Wuid.Name()),
		"`username`": field.DescName(field.Name.Name()),
		"`password`": field.DescName(field.HashPassword.Name()),
		"`status`"  : field.DescIndex(field.Num.Name(), 2),
		"`phone`"   : field.DescName(field.Phone.Name()),
		"`age`"     : field.DescIndex(field.Num.Name(), 120),
		"`sex`"     : field.DescIndex(field.Num.Name(), 2),
	}

	build.NewInsertOnlyDao(data, "member", 1, 1, 5000).Insert()

	fmt.Println( "数据添加完成 : 结束 : ", time.Now())
}

本工具主要通过自定义map存储表字段,及字段对应的生成数据类型及规律;通过field定义字段的生成规则,利用dao做数据的添加

其中关于field/Desc系列方法如下

// name 为字段标识
// length 数据的长度/范围
// def 默认值
// probability 默认值出现的随机频率
func Desc(name string,length int, def string, probability int) string 
func DescName(name string) string 
func DescIndex(name string, length int) string 
2. 系统规则

目前系统规则主要是在field/options.go中定义,在field/options_init.go中通过Init()方法注册加载

自定义规则需要自己实现field/options.go中的OptInterfcae接口

const (
	FuParamNil = iota // 默认不传参
	FuParamOne // 传参int类型
)

type OptInterfcae interface {
	Name() string
	Types() int
	Fu() interface{}
}

通过field/options_init.go中的RegisterOpts注册即可

如下为示例

import (
	"gitee.com/DNjinmin/generator/field"
)

var Chinese = new(chinese)
type chinese struct {}
func (*chinese) Name() string {
	return "chinese"
}
func (*chinese) Types() int {
	return FuParamOne
}
func (*chinese) Fu() interface{} {
	return func(index int) string {
		return "chinese"
	}
}

field.RegisterOpts(Chinese)
3. wuid

如果需要用到wuid的规则则需要在数据表中建立如下数据表结构

CREATE TABLE `wuid` (
  `h` int(10) NOT NULL AUTO_INCREMENT,
  `x` tinyint(4) NOT NULL DEFAULT '0',
  PRIMARY KEY (`x`),
  UNIQUE KEY `h` (`h`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=latin1;
4. 更新计划
  1. 优化内存超标卡死的问题

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL