按时间筛选
This commit is contained in:
@@ -388,8 +388,8 @@ func NewSchema(config Config) (graphql.Schema, error) {
|
|||||||
"collect_count": &graphql.ArgumentConfig{Type: graphql.Int, Description: "筛选图像中收藏数等于指定值的"},
|
"collect_count": &graphql.ArgumentConfig{Type: graphql.Int, Description: "筛选图像中收藏数等于指定值的"},
|
||||||
"article_id": &graphql.ArgumentConfig{Type: graphql.Int, Description: "筛选图像中属于指定文章ID的"},
|
"article_id": &graphql.ArgumentConfig{Type: graphql.Int, Description: "筛选图像中属于指定文章ID的"},
|
||||||
"user_id": &graphql.ArgumentConfig{Type: graphql.Int, Description: "筛选图像中属于指定用户ID的"},
|
"user_id": &graphql.ArgumentConfig{Type: graphql.Int, Description: "筛选图像中属于指定用户ID的"},
|
||||||
"create_time": &graphql.ArgumentConfig{Type: graphql.DateTime, Description: "筛选图像中创建时间等于指定值的"},
|
"create_time": &graphql.ArgumentConfig{Type: graphql.String, Description: "筛选图像中创建时间等于指定值的"},
|
||||||
"update_time": &graphql.ArgumentConfig{Type: graphql.DateTime, Description: "筛选图像中更新时间等于指定值的"},
|
"update_time": &graphql.ArgumentConfig{Type: graphql.String, Description: "筛选图像中更新时间等于指定值的"},
|
||||||
"first": &graphql.ArgumentConfig{Type: graphql.Int, Description: "翻页参数(傳回清單中的前n個元素)"},
|
"first": &graphql.ArgumentConfig{Type: graphql.Int, Description: "翻页参数(傳回清單中的前n個元素)"},
|
||||||
"last": &graphql.ArgumentConfig{Type: graphql.Int, Description: "翻页参数(傳回清單中的最後n個元素)"},
|
"last": &graphql.ArgumentConfig{Type: graphql.Int, Description: "翻页参数(傳回清單中的最後n個元素)"},
|
||||||
"after": &graphql.ArgumentConfig{Type: graphql.Int, Description: "翻页参数(傳回清單中指定遊標之後的元素)"},
|
"after": &graphql.ArgumentConfig{Type: graphql.Int, Description: "翻页参数(傳回清單中指定遊標之後的元素)"},
|
||||||
@@ -409,9 +409,13 @@ func NewSchema(config Config) (graphql.Schema, error) {
|
|||||||
Orientation string
|
Orientation string
|
||||||
Sort string
|
Sort string
|
||||||
Order string
|
Order string
|
||||||
|
CreateTime string `json:"create_time"`
|
||||||
|
UpdateTime string
|
||||||
}
|
}
|
||||||
mapstructure.Decode(p.Args, &args)
|
mapstructure.Decode(p.Args, &args)
|
||||||
|
|
||||||
|
fmt.Println("args.CreateTime:", args.CreateTime)
|
||||||
|
|
||||||
// 限制长度防止全表扫描
|
// 限制长度防止全表扫描
|
||||||
var limit = 10
|
var limit = 10
|
||||||
if args.First != 0 {
|
if args.First != 0 {
|
||||||
@@ -425,7 +429,7 @@ func NewSchema(config Config) (graphql.Schema, error) {
|
|||||||
var query = db.Limit(limit)
|
var query = db.Limit(limit)
|
||||||
|
|
||||||
// 参数映射
|
// 参数映射
|
||||||
var argFormat = []string{"id", "width", "height", "content", "remark", "description", "tags", "rank", "comment_num", "praise_count", "collect_count", "article_id", "user_id", "create_time", "update_time"}
|
var argFormat = []string{"id", "width", "height", "content", "remark", "description", "tags", "rank", "comment_num", "praise_count", "collect_count", "article_id", "user_id"}
|
||||||
|
|
||||||
// 筛选条件
|
// 筛选条件
|
||||||
for _, format := range argFormat {
|
for _, format := range argFormat {
|
||||||
@@ -519,6 +523,24 @@ func NewSchema(config Config) (graphql.Schema, error) {
|
|||||||
id_list = append(id_list, ids)
|
id_list = append(id_list, ids)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 筛选:时间段
|
||||||
|
applyTimeCondition := func(name string, str string) {
|
||||||
|
parts := strings.Split(str, "-")
|
||||||
|
query = query.Where(fmt.Sprintf("YEAR(%s) = ?", name), parts[0])
|
||||||
|
if len(parts) > 1 {
|
||||||
|
query = query.Where(fmt.Sprintf("MONTH(%s) = ?", name), parts[1])
|
||||||
|
}
|
||||||
|
if len(parts) > 2 {
|
||||||
|
query = query.Where(fmt.Sprintf("DAY(%s) = ?", name), parts[2])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if createTime, ok := p.Args["create_time"].(string); ok && createTime != "" {
|
||||||
|
applyTimeCondition("create_time", createTime)
|
||||||
|
} else if updateTime, ok := p.Args["update_time"].(string); ok && updateTime != "" {
|
||||||
|
applyTimeCondition("update_time", updateTime)
|
||||||
|
}
|
||||||
|
|
||||||
// 数据库中筛选:横屏纵屏
|
// 数据库中筛选:横屏纵屏
|
||||||
if args.Orientation != "" {
|
if args.Orientation != "" {
|
||||||
query.Where("article_orientation = ?", args.Orientation)
|
query.Where("article_orientation = ?", args.Orientation)
|
||||||
|
Reference in New Issue
Block a user