From 41a148c44960e00c3837cf949ca6e5229b2d00f9 Mon Sep 17 00:00:00 2001 From: satori Date: Sat, 28 Dec 2024 08:15:30 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=A2=9C=E8=89=B2=E7=AD=9B?= =?UTF-8?q?=E9=80=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/image.go | 56 +++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 42 insertions(+), 14 deletions(-) diff --git a/api/image.go b/api/image.go index 4a1ff80..48b7749 100644 --- a/api/image.go +++ b/api/image.go @@ -536,24 +536,52 @@ var ImageItems = &graphql.Field{ return nil, err } fmt.Println(color, r, g, b, precision) - query = query.Where(goqu.Or( + //query = query.Where(goqu.Or( + // goqu.And( + // goqu.L(fmt.Sprintf("web_images.color_%d_r", 0)).Gt(r-precision), + // goqu.L(fmt.Sprintf("web_images.color_%d_r", 0)).Lt(r+precision), + // goqu.L(fmt.Sprintf("web_images.color_%d_g", 0)).Gt(g-precision), + // goqu.L(fmt.Sprintf("web_images.color_%d_g", 0)).Lt(g+precision), + // goqu.L(fmt.Sprintf("web_images.color_%d_b", 0)).Gt(b-precision), + // goqu.L(fmt.Sprintf("web_images.color_%d_b", 0)).Lt(b+precision), + // ), + // goqu.And( + // goqu.L(fmt.Sprintf("web_images.color_%d_r", 1)).Gt(r-precision), + // goqu.L(fmt.Sprintf("web_images.color_%d_r", 1)).Lt(r+precision), + // goqu.L(fmt.Sprintf("web_images.color_%d_g", 1)).Gt(g-precision), + // goqu.L(fmt.Sprintf("web_images.color_%d_g", 1)).Lt(g+precision), + // goqu.L(fmt.Sprintf("web_images.color_%d_b", 1)).Gt(b-precision), + // goqu.L(fmt.Sprintf("web_images.color_%d_b", 1)).Lt(b+precision), + // ), + //)) + + query1, _, _ := goqu.Dialect("mysql").From("web_images").Select("id").Where( goqu.And( - goqu.L(fmt.Sprintf("web_images.color_%d_r", 0)).Gt(r-precision), - goqu.L(fmt.Sprintf("web_images.color_%d_r", 0)).Lt(r+precision), - goqu.L(fmt.Sprintf("web_images.color_%d_g", 0)).Gt(g-precision), - goqu.L(fmt.Sprintf("web_images.color_%d_g", 0)).Lt(g+precision), - goqu.L(fmt.Sprintf("web_images.color_%d_b", 0)).Gt(b-precision), - goqu.L(fmt.Sprintf("web_images.color_%d_b", 0)).Lt(b+precision), + goqu.L(fmt.Sprintf("color_%d_r", 0)).Gt(r-precision), + goqu.L(fmt.Sprintf("color_%d_r", 0)).Lt(r+precision), + goqu.L(fmt.Sprintf("color_%d_g", 0)).Gt(g-precision), + goqu.L(fmt.Sprintf("color_%d_g", 0)).Lt(g+precision), + goqu.L(fmt.Sprintf("color_%d_b", 0)).Gt(b-precision), + goqu.L(fmt.Sprintf("color_%d_b", 0)).Lt(b+precision), ), + ).ToSQL() + + query2, _, _ := goqu.Dialect("mysql").From("web_images").Select("id").Where( goqu.And( - goqu.L(fmt.Sprintf("web_images.color_%d_r", 1)).Gt(r-precision), - goqu.L(fmt.Sprintf("web_images.color_%d_r", 1)).Lt(r+precision), - goqu.L(fmt.Sprintf("web_images.color_%d_g", 1)).Gt(g-precision), - goqu.L(fmt.Sprintf("web_images.color_%d_g", 1)).Lt(g+precision), - goqu.L(fmt.Sprintf("web_images.color_%d_b", 1)).Gt(b-precision), - goqu.L(fmt.Sprintf("web_images.color_%d_b", 1)).Lt(b+precision), + goqu.L(fmt.Sprintf("color_%d_r", 1)).Gt(r-precision), + goqu.L(fmt.Sprintf("color_%d_r", 1)).Lt(r+precision), + goqu.L(fmt.Sprintf("color_%d_g", 1)).Gt(g-precision), + goqu.L(fmt.Sprintf("color_%d_g", 1)).Lt(g+precision), + goqu.L(fmt.Sprintf("color_%d_b", 1)).Gt(b-precision), + goqu.L(fmt.Sprintf("color_%d_b", 1)).Lt(b+precision), ), - )) + ).ToSQL() + + query = query.Join( + goqu.L(fmt.Sprintf("(%s UNION %s) AS w", query1, query2)), + goqu.On(goqu.Ex{"web_images.id": goqu.I("w.id")}), + ) + } }