## Snow
Snow是一套简单易用的Go语言业务框架，整体逻辑设计简洁，支持HTTP服务、队列调度和任务调度等常用业务场景模式。

## Quick start

### Build
sh build/shell/build.sh

### Run
```shell
1. build/bin/snow -a api  #启动Api服务
2. build/bin/snow -a cron #启动Cron定时任务服务
3. build/bin/snow -a job  #启动队列调度服务
4. build/bin/snow -a command -m test  #执行名称为test的脚本任务
```

## Documents

- [项目地址](https://github.com/qit-team/snow)
- [中文文档](https://github.com/qit-team/snow/wiki)
- [changelog](https://github.com/qit-team/snow/blob/master/CHANGLOG.md)
- [xorm](http://gobook.io/read/github.com/go-xorm/manual-zh-CN/)

##
<!--

// validator的示例
// HandleTestValidator godoc
// @Summary HandleTestValidator的示例
// @Description HandleTestValidator的示例
// @Tags snow
// @Accept  json
// @Produce json
// @Param testValidator body entities.TestValidatorRequest true "example of validator"
// @Success 200 {array} entities.TestValidatorRequest
// @Failure 400 {object} controllers.HTTPError
// @Failure 404 {object} controllers.HTTPError
// @Failure 500 {object} controllers.HTTPError
// @Router /test_validator [post]
func HandleTestValidator(c *gin.Context) {
	request := new(entities.TestValidatorRequest)
	err := GenRequest(c, request)
	if err != nil {
		Error(c, errorcode.ParamError)
		return
	}

	Success(c, request)
	return
}

// Address houses a users address information
type Address struct {
	Street string `json:"street" validate:"required" example:"huandaodonglu"`
	City   string `json:"city" validate:"required" example:"xiamen"`
	Planet string `json:"planet" validate:"required" example:"snow"`
	Phone  string `json:"phone" validate:"required" example:"snow"`
}

// 请求数据结构
type TestValidatorRequest struct {
	//tips，因为组件required不管是没传值或者传 0 or "" 都通过不了，但是如果用指针类型，那么0就是0，而nil无法通过校验
	Id        *int64     `json:"id" validate:"required" example:"1"`
	Age       int        `json:"age" validate:"required,gte=0,lte=130" example:"20"`
	Name      *string    `json:"name" validate:"required" example:"snow"`
	Email     string     `json:"email" validate:"required,email" example:"snow@github.com"`
	Url       string     `json:"url" validate:"required" example:"github.com/qit-team/snow"`
	Mobile    string     `json:"mobile" validate:"required" example:"snow"`
	RangeNum  int        `json:"range_num" validate:"max=10,min=1" example:"3"`
	TestNum   *int       `json:"test_num" validate:"required,oneof=5 7 9" example:"7"`
	Content   *string    `json:"content" example:"snow"`
	Addresses []*Address `json:"addresses" validate:"required,dive,required"  `
}
-->