]> source.dussan.org Git - gitea.git/commitdiff
Hide not allowed Reactions (#9387)
author6543 <6543@obermui.de>
Wed, 18 Dec 2019 13:07:36 +0000 (14:07 +0100)
committerLunny Xiao <xiaolunwen@gmail.com>
Wed, 18 Dec 2019 13:07:36 +0000 (21:07 +0800)
* Hide not allowed Reactions

* filter in query :D

* use `

Co-Authored-By: Alexey 〒erentyev <axifnx@gmail.com>
* update xorm v0.8.0 -> v0.8.1

go.mod
go.sum
integrations/api_issue_reaction_test.go
models/issue_reaction.go
vendor/modules.txt
vendor/xorm.io/xorm/.drone.yml
vendor/xorm.io/xorm/engine.go
vendor/xorm.io/xorm/session.go
vendor/xorm.io/xorm/session_raw.go
vendor/xorm.io/xorm/session_update.go

diff --git a/go.mod b/go.mod
index e50f7a5eb9e3e7fe5b4d9faae5f5deb00a82b779..8e605720cf3059911d2db576fd8789a023e21350 100644 (file)
--- a/go.mod
+++ b/go.mod
@@ -111,5 +111,5 @@ require (
        strk.kbt.io/projects/go/libravatar v0.0.0-20191008002943-06d1c002b251
        xorm.io/builder v0.3.6
        xorm.io/core v0.7.2
-       xorm.io/xorm v0.8.0
+       xorm.io/xorm v0.8.1
 )
diff --git a/go.sum b/go.sum
index e05834f879862478e436a4bd429402dffeddac19..b3ca74e82fecd89536b1111f261501f6cf9967bb 100644 (file)
--- a/go.sum
+++ b/go.sum
@@ -791,3 +791,5 @@ xorm.io/core v0.7.2 h1:mEO22A2Z7a3fPaZMk6gKL/jMD80iiyNwRrX5HOv3XLw=
 xorm.io/core v0.7.2/go.mod h1:jJfd0UAEzZ4t87nbQYtVjmqpIODugN6PD2D9E+dJvdM=
 xorm.io/xorm v0.8.0 h1:iALxgJrX8O00f8Jk22GbZwPmxJNgssV5Mv4uc2HL9PM=
 xorm.io/xorm v0.8.0/go.mod h1:ZkJLEYLoVyg7amJK/5r779bHyzs2AU8f8VMiP6BM7uY=
+xorm.io/xorm v0.8.1 h1:4f2KXuQxVdaX3RdI3Fw81NzMiSpZeyCZt8m3sEVeIkQ=
+xorm.io/xorm v0.8.1/go.mod h1:ZkJLEYLoVyg7amJK/5r779bHyzs2AU8f8VMiP6BM7uY=
index f3fcf3946fb47cd5201ca1cf374fb5e0475fce60..c474f7bad2541488af9b98e85ff31a677b547d4f 100644 (file)
@@ -26,7 +26,6 @@ func TestAPIIssuesReactions(t *testing.T) {
        session := loginUser(t, owner.Name)
        token := getTokenForLoggedInUser(t, session)
 
-       user1 := models.AssertExistsAndLoadBean(t, &models.User{ID: 1}).(*models.User)
        user2 := models.AssertExistsAndLoadBean(t, &models.User{ID: 2}).(*models.User)
        urlStr := fmt.Sprintf("/api/v1/repos/%s/%s/issues/%d/reactions?token=%s",
                owner.Name, issue.Repo.Name, issue.Index, token)
@@ -61,17 +60,12 @@ func TestAPIIssuesReactions(t *testing.T) {
        DecodeJSON(t, resp, &apiReactions)
        expectResponse := make(map[int]api.ReactionResponse)
        expectResponse[0] = api.ReactionResponse{
-               User:     user1.APIFormat(),
-               Reaction: "zzz",
-               Created:  time.Unix(1573248002, 0),
-       }
-       expectResponse[1] = api.ReactionResponse{
                User:     user2.APIFormat(),
                Reaction: "eyes",
                Created:  time.Unix(1573248003, 0),
        }
-       expectResponse[2] = apiNewReaction
-       assert.Len(t, apiReactions, 3)
+       expectResponse[1] = apiNewReaction
+       assert.Len(t, apiReactions, 2)
        for i, r := range apiReactions {
                assert.Equal(t, expectResponse[i].Reaction, r.Reaction)
                assert.Equal(t, expectResponse[i].Created.Unix(), r.Created.Unix())
index b4f332a08969e5e49f93e73301426df555f2d529..6896eeeafc6c463899dd77b557ddea874e08dffb 100644 (file)
@@ -69,6 +69,7 @@ func findReactions(e Engine, opts FindReactionsOptions) ([]*Reaction, error) {
        reactions := make([]*Reaction, 0, 10)
        sess := e.Where(opts.toConds())
        return reactions, sess.
+               In("reaction.`type`", setting.UI.Reactions).
                Asc("reaction.issue_id", "reaction.comment_id", "reaction.created_unix", "reaction.id").
                Find(&reactions)
 }
index 34b0f6c6e803b357852f4011153bea1c01b653ef..901f06c98eb913529f17f6e5063c27e6e3154df2 100644 (file)
@@ -609,5 +609,5 @@ strk.kbt.io/projects/go/libravatar
 xorm.io/builder
 # xorm.io/core v0.7.2
 xorm.io/core
-# xorm.io/xorm v0.8.0
+# xorm.io/xorm v0.8.1
 xorm.io/xorm
index c373975df670e805f78bef1b1744d336af40d74f..b2198e380a0002b58228ef060091767dcf97cc55 100644 (file)
@@ -1,11 +1,6 @@
 ---
 kind: pipeline
-name: matrix-1
-
-platform:
-  os: linux
-  arch: amd64
-
+name: go1.10-test
 workspace:
   base: /go
   path: src/gitea.com/xorm/xorm
@@ -15,9 +10,7 @@ steps:
   pull: default
   image: golang:1.10
   commands:
-  - go get -t -d -v ./...
-  - go get -u xorm.io/core
-  - go get -u xorm.io/builder
+  - go get -t -d -v
   - go build -v
   when:
     event:
@@ -27,8 +20,9 @@ steps:
 - name: test-sqlite
   pull: default
   image: golang:1.10
+  depends_on:
+    - build
   commands:
-  - go get -u github.com/wadey/gocovmerge
   - "go test -v -race -db=\"sqlite3\" -conn_str=\"./test.db\" -coverprofile=coverage1-1.txt -covermode=atomic"
   - "go test -v -race -db=\"sqlite3\" -conn_str=\"./test.db\" -cache=true -coverprofile=coverage1-2.txt -covermode=atomic"
   when:
@@ -39,6 +33,8 @@ steps:
 - name: test-mysql
   pull: default
   image: golang:1.10
+  depends_on:
+    - build
   commands:
   - "go test -v -race -db=\"mysql\" -conn_str=\"root:@tcp(mysql)/xorm_test\" -coverprofile=coverage2-1.txt -covermode=atomic"
   - "go test -v -race -db=\"mysql\" -conn_str=\"root:@tcp(mysql)/xorm_test\" -cache=true -coverprofile=coverage2-2.txt -covermode=atomic"
@@ -50,6 +46,8 @@ steps:
 - name: test-mysql-utf8mb4
   pull: default
   image: golang:1.10
+  depends_on:
+    - test-mysql
   commands:
   - "go test -v -race -db=\"mysql\" -conn_str=\"root:@tcp(mysql)/xorm_test?charset=utf8mb4\" -coverprofile=coverage2.1-1.txt -covermode=atomic"
   - "go test -v -race -db=\"mysql\" -conn_str=\"root:@tcp(mysql)/xorm_test?charset=utf8mb4\" -cache=true -coverprofile=coverage2.1-2.txt -covermode=atomic"
@@ -61,6 +59,8 @@ steps:
 - name: test-mymysql
   pull: default
   image: golang:1.10
+  depends_on:
+    - test-mysql-utf8mb4
   commands:
   - "go test -v -race -db=\"mymysql\" -conn_str=\"tcp:mysql:3306*xorm_test/root/\" -coverprofile=coverage3-1.txt -covermode=atomic"
   - "go test -v -race -db=\"mymysql\" -conn_str=\"tcp:mysql:3306*xorm_test/root/\" -cache=true -coverprofile=coverage3-2.txt -covermode=atomic"
@@ -72,6 +72,8 @@ steps:
 - name: test-postgres
   pull: default
   image: golang:1.10
+  depends_on:
+    - build
   commands:
   - "go test -v -race -db=\"postgres\" -conn_str=\"postgres://postgres:@pgsql/xorm_test?sslmode=disable\" -coverprofile=coverage4-1.txt -covermode=atomic"
   - "go test -v -race -db=\"postgres\" -conn_str=\"postgres://postgres:@pgsql/xorm_test?sslmode=disable\" -cache=true -coverprofile=coverage4-2.txt -covermode=atomic"
@@ -83,6 +85,8 @@ steps:
 - name: test-postgres-schema
   pull: default
   image: golang:1.10
+  depends_on:
+    - build
   commands:
   - "go test -v -race -db=\"postgres\" -conn_str=\"postgres://postgres:@pgsql/xorm_test?sslmode=disable\" -schema=xorm -coverprofile=coverage5-1.txt -covermode=atomic"
   - "go test -v -race -db=\"postgres\" -conn_str=\"postgres://postgres:@pgsql/xorm_test?sslmode=disable\" -schema=xorm -cache=true -coverprofile=coverage5-2.txt -covermode=atomic"
@@ -94,6 +98,8 @@ steps:
 - name: test-mssql
   pull: default
   image: golang:1.10
+  depends_on:
+    - build
   commands:
   - "go test -v -race -db=\"mssql\" -conn_str=\"server=mssql;user id=sa;password=yourStrong(!)Password;database=xorm_test\" -coverprofile=coverage6-1.txt -covermode=atomic"
   - "go test -v -race -db=\"mssql\" -conn_str=\"server=mssql;user id=sa;password=yourStrong(!)Password;database=xorm_test\" -cache=true -coverprofile=coverage6-2.txt -covermode=atomic"
@@ -105,213 +111,30 @@ steps:
 - name: test-tidb
   pull: default
   image: golang:1.10
+  depends_on:
+    - build
   commands:
   - "go test -v -race -db=\"mysql\" -conn_str=\"root:@tcp(tidb:4000)/xorm_test\" -ignore_select_update=true -coverprofile=coverage7-1.txt -covermode=atomic"
   - "go test -v -race -db=\"mysql\" -conn_str=\"root:@tcp(tidb:4000)/xorm_test\" -ignore_select_update=true -cache=true -coverprofile=coverage7-2.txt -covermode=atomic"
-  - gocovmerge coverage1-1.txt coverage1-2.txt coverage2-1.txt coverage2-2.txt coverage2.1-1.txt coverage2.1-2.txt coverage3-1.txt coverage3-2.txt coverage4-1.txt coverage4-2.txt coverage5-1.txt coverage5-2.txt coverage6-1.txt coverage6-2.txt coverage7-1.txt coverage7-2.txt > coverage.txt
-  when:
-    event:
-    - push
-    - pull_request
-
-services:
-- name: mysql
-  pull: default
-  image: mysql:5.7
-  environment:
-    MYSQL_ALLOW_EMPTY_PASSWORD: yes
-    MYSQL_DATABASE: xorm_test
-  when:
-    event:
-    - push
-    - tag
-    - pull_request
-
-- name: tidb
-  pull: default
-  image: pingcap/tidb:v3.0.3
-  when:
-    event:
-    - push
-    - tag
-    - pull_request
-
-- name: pgsql
-  pull: default
-  image: postgres:9.5
-  environment:
-    POSTGRES_DB: xorm_test
-    POSTGRES_USER: postgres
-  when:
-    event:
-    - push
-    - tag
-    - pull_request
-
-- name: mssql
-  pull: default
-  image: microsoft/mssql-server-linux:latest
-  environment:
-    ACCEPT_EULA: Y
-    SA_PASSWORD: yourStrong(!)Password
-    MSSQL_PID: Developer
-  when:
-    event:
-    - push
-    - tag
-    - pull_request
-
----
-kind: pipeline
-name: matrix-2
-
-platform:
-  os: linux
-  arch: amd64
-
-workspace:
-  base: /go
-  path: src/gitea.com/xorm/xorm
-
-steps:
-- name: build
-  pull: default
-  image: golang:1.11
-  environment:
-    GO111MODULE: "off"
-  commands:
-    - go get -t -d -v ./...    
-    - go get -u xorm.io/core   
-    - go get -u xorm.io/builder
-    - go build -v
-  when:
-    event:
-    - push
-    - pull_request
-
-- name: build-gomod
-  pull: default
-  image: golang:1.11
-  environment:
-    GO111MODULE: "on"
-    GOPROXY: "https://goproxy.cn"
-  commands:
-    - go build -v
-  when:
-    event:
-    - push
-    - pull_request
-
-- name: test-sqlite
-  pull: default
-  image: golang:1.11
-  environment:
-    GO111MODULE: "on"
-    GOPROXY: "https://goproxy.cn"
-  commands:
-  - "go test -v -race -db=\"sqlite3\" -conn_str=\"./test.db\" -coverprofile=coverage1-1.txt -covermode=atomic"
-  - "go test -v -race -db=\"sqlite3\" -conn_str=\"./test.db\" -cache=true -coverprofile=coverage1-2.txt -covermode=atomic"
-  when:
-    event:
-    - push
-    - pull_request
-
-- name: test-mysql
-  pull: default
-  image: golang:1.11
-  environment:
-    GO111MODULE: "on"
-    GOPROXY: "https://goproxy.cn"
-  commands:
-  - "go test -v -race -db=\"mysql\" -conn_str=\"root:@tcp(mysql)/xorm_test\" -coverprofile=coverage2-1.txt -covermode=atomic"
-  - "go test -v -race -db=\"mysql\" -conn_str=\"root:@tcp(mysql)/xorm_test\" -cache=true -coverprofile=coverage2-2.txt -covermode=atomic"
-  when:
-    event:
-    - push
-    - pull_request
-
-- name: test-mysql-utf8mb4
-  pull: default
-  image: golang:1.11
-  environment:
-    GO111MODULE: "on"
-    GOPROXY: "https://goproxy.cn"
-  commands:
-  - "go test -v -race -db=\"mysql\" -conn_str=\"root:@tcp(mysql)/xorm_test?charset=utf8mb4\" -coverprofile=coverage2.1-1.txt -covermode=atomic"
-  - "go test -v -race -db=\"mysql\" -conn_str=\"root:@tcp(mysql)/xorm_test?charset=utf8mb4\" -cache=true -coverprofile=coverage2.1-2.txt -covermode=atomic"
-  when:
-    event:
-    - push
-    - pull_request
-
-- name: test-mymysql
-  pull: default
-  image: golang:1.11
-  environment:
-    GO111MODULE: "on"
-    GOPROXY: "https://goproxy.cn"
-  commands:
-  - "go test -v -race -db=\"mymysql\" -conn_str=\"tcp:mysql:3306*xorm_test/root/\" -coverprofile=coverage3-1.txt -covermode=atomic"
-  - "go test -v -race -db=\"mymysql\" -conn_str=\"tcp:mysql:3306*xorm_test/root/\" -cache=true -coverprofile=coverage3-2.txt -covermode=atomic"
-  when:
-    event:
-    - push
-    - pull_request
-
-- name: test-postgres
-  pull: default
-  image: golang:1.11
-  environment:
-    GO111MODULE: "on"
-    GOPROXY: "https://goproxy.cn"
-  commands:
-  - "go test -v -race -db=\"postgres\" -conn_str=\"postgres://postgres:@pgsql/xorm_test?sslmode=disable\" -coverprofile=coverage4-1.txt -covermode=atomic"
-  - "go test -v -race -db=\"postgres\" -conn_str=\"postgres://postgres:@pgsql/xorm_test?sslmode=disable\" -cache=true -coverprofile=coverage4-2.txt -covermode=atomic"
   when:
     event:
     - push
     - pull_request
 
-- name: test-postgres-schema
+- name: test-end
   pull: default
-  image: golang:1.11
-  environment:
-    GO111MODULE: "on"
-    GOPROXY: "https://goproxy.cn"
-  commands:
-  - "go test -v -race -db=\"postgres\" -conn_str=\"postgres://postgres:@pgsql/xorm_test?sslmode=disable\" -schema=xorm -coverprofile=coverage5-1.txt -covermode=atomic"
-  - "go test -v -race -db=\"postgres\" -conn_str=\"postgres://postgres:@pgsql/xorm_test?sslmode=disable\" -schema=xorm -cache=true -coverprofile=coverage5-2.txt -covermode=atomic"
-  when:
-    event:
-    - push
-    - pull_request
-
-- name: test-mssql
-  pull: default
-  image: golang:1.11
-  environment:
-    GO111MODULE: "on"
-    GOPROXY: "https://goproxy.cn"
-  commands:
-  - "go test -v -race -db=\"mssql\" -conn_str=\"server=mssql;user id=sa;password=yourStrong(!)Password;database=xorm_test\" -coverprofile=coverage6-1.txt -covermode=atomic"
-  - "go test -v -race -db=\"mssql\" -conn_str=\"server=mssql;user id=sa;password=yourStrong(!)Password;database=xorm_test\" -cache=true -coverprofile=coverage6-2.txt -covermode=atomic"
-
-  when:
-    event:
-    - push
-    - pull_request
-
-- name: test-tidb
-  pull: default
-  image: golang:1.11
-  environment:
-    GO111MODULE: "on"
-    GOPROXY: "https://goproxy.cn"
+  image: golang:1.10
+  depends_on:
+  - test-sqlite
+  - test-mysql
+  - test-mysql-utf8mb4
+  - test-mymysql
+  - test-postgres
+  - test-postgres-schema
+  - test-mssql
+  - test-tidb
   commands:
-  - "go test -v -race -db=\"mysql\" -conn_str=\"root:@tcp(tidb:4000)/xorm_test\" -ignore_select_update=true -coverprofile=coverage7-1.txt -covermode=atomic"
-  - "go test -v -race -db=\"mysql\" -conn_str=\"root:@tcp(tidb:4000)/xorm_test\" -ignore_select_update=true -cache=true -coverprofile=coverage7-2.txt -covermode=atomic"
-  - go get github.com/wadey/gocovmerge
-  - gocovmerge coverage1-1.txt coverage1-2.txt coverage2-1.txt coverage2-2.txt coverage2.1-1.txt coverage2.1-2.txt coverage3-1.txt coverage3-2.txt coverage4-1.txt coverage4-2.txt coverage5-1.txt coverage5-2.txt coverage6-1.txt coverage6-2.txt coverage7-1.txt coverage7-2.txt > coverage.txt
+  - echo "go1.10 build end"
   when:
     event:
     - push
@@ -330,15 +153,6 @@ services:
     - tag
     - pull_request
 
-- name: tidb
-  pull: default
-  image: pingcap/tidb:v3.0.3
-  when:
-    event:
-    - push
-    - tag
-    - pull_request
-
 - name: pgsql
   pull: default
   image: postgres:9.5
@@ -364,175 +178,6 @@ services:
     - tag
     - pull_request
 
----
-kind: pipeline
-name: matrix-3
-
-platform:
-  os: linux
-  arch: amd64
-
-workspace:
-  base: /go
-  path: src/gitea.com/xorm/xorm
-
-steps:
-
-- name: build
-  pull: default
-  image: golang:1.12
-  environment:
-    GO111MODULE: "off"
-  commands:
-    - go get -t -d -v ./...    
-    - go get -u xorm.io/core   
-    - go get -u xorm.io/builder
-    - go build -v
-  when:
-    event:
-    - push
-    - pull_request
-
-- name: build-gomod
-  pull: default
-  image: golang:1.12
-  environment:
-    GO111MODULE: "on"
-    GOPROXY: "https://goproxy.cn"
-  commands:
-    - go build -v
-  when:
-    event:
-    - push
-    - pull_request
-
-- name: test-sqlite
-  pull: default
-  image: golang:1.12
-  environment:
-    GO111MODULE: "on"
-    GOPROXY: "https://goproxy.cn"
-  commands:
-  - "go test -v -race -db=\"sqlite3\" -conn_str=\"./test.db\" -coverprofile=coverage1-1.txt -covermode=atomic"
-  - "go test -v -race -db=\"sqlite3\" -conn_str=\"./test.db\" -cache=true -coverprofile=coverage1-2.txt -covermode=atomic"
-  when:
-    event:
-    - push
-    - pull_request
-
-- name: test-mysql
-  pull: default
-  image: golang:1.12
-  environment:
-    GO111MODULE: "on"
-    GOPROXY: "https://goproxy.cn"
-  commands:
-  - "go test -v -race -db=\"mysql\" -conn_str=\"root:@tcp(mysql)/xorm_test\" -coverprofile=coverage2-1.txt -covermode=atomic"
-  - "go test -v -race -db=\"mysql\" -conn_str=\"root:@tcp(mysql)/xorm_test\" -cache=true -coverprofile=coverage2-2.txt -covermode=atomic"
-  when:
-    event:
-    - push
-    - pull_request
-
-- name: test-mysql-utf8mb4
-  pull: default
-  image: golang:1.12
-  environment:
-    GO111MODULE: "on"
-    GOPROXY: "https://goproxy.cn"
-  commands:
-  - "go test -v -race -db=\"mysql\" -conn_str=\"root:@tcp(mysql)/xorm_test?charset=utf8mb4\" -coverprofile=coverage2.1-1.txt -covermode=atomic"
-  - "go test -v -race -db=\"mysql\" -conn_str=\"root:@tcp(mysql)/xorm_test?charset=utf8mb4\" -cache=true -coverprofile=coverage2.1-2.txt -covermode=atomic"
-  when:
-    event:
-    - push
-    - pull_request
-
-- name: test-mymysql
-  pull: default
-  image: golang:1.12
-  environment:
-    GO111MODULE: "on"
-    GOPROXY: "https://goproxy.cn"
-  commands:
-  - "go test -v -race -db=\"mymysql\" -conn_str=\"tcp:mysql:3306*xorm_test/root/\" -coverprofile=coverage3-1.txt -covermode=atomic"
-  - "go test -v -race -db=\"mymysql\" -conn_str=\"tcp:mysql:3306*xorm_test/root/\" -cache=true -coverprofile=coverage3-2.txt -covermode=atomic"
-  when:
-    event:
-    - push
-    - pull_request
-
-- name: test-postgres
-  pull: default
-  image: golang:1.12
-  environment:
-    GO111MODULE: "on"
-    GOPROXY: "https://goproxy.cn"
-  commands:
-  - "go test -v -race -db=\"postgres\" -conn_str=\"postgres://postgres:@pgsql/xorm_test?sslmode=disable\" -coverprofile=coverage4-1.txt -covermode=atomic"
-  - "go test -v -race -db=\"postgres\" -conn_str=\"postgres://postgres:@pgsql/xorm_test?sslmode=disable\" -cache=true -coverprofile=coverage4-2.txt -covermode=atomic"
-  when:
-    event:
-    - push
-    - pull_request
-
-- name: test-postgres-schema
-  pull: default
-  image: golang:1.12
-  environment:
-    GO111MODULE: "on"
-    GOPROXY: "https://goproxy.cn"
-  commands:
-  - "go test -v -race -db=\"postgres\" -conn_str=\"postgres://postgres:@pgsql/xorm_test?sslmode=disable\" -schema=xorm -coverprofile=coverage5-1.txt -covermode=atomic"
-  - "go test -v -race -db=\"postgres\" -conn_str=\"postgres://postgres:@pgsql/xorm_test?sslmode=disable\" -schema=xorm -cache=true -coverprofile=coverage5-2.txt -covermode=atomic"
-  when:
-    event:
-    - push
-    - pull_request
-
-- name: test-mssql
-  pull: default
-  image: golang:1.12
-  environment:
-    GO111MODULE: "on"
-    GOPROXY: "https://goproxy.cn"
-  commands:
-  - "go test -v -race -db=\"mssql\" -conn_str=\"server=mssql;user id=sa;password=yourStrong(!)Password;database=xorm_test\" -coverprofile=coverage6-1.txt -covermode=atomic"
-  - "go test -v -race -db=\"mssql\" -conn_str=\"server=mssql;user id=sa;password=yourStrong(!)Password;database=xorm_test\" -cache=true -coverprofile=coverage6-2.txt -covermode=atomic"
-  when:
-    event:
-    - push
-    - pull_request
-
-- name: test-tidb
-  pull: default
-  image: golang:1.12
-  environment:
-    GO111MODULE: "on"
-    GOPROXY: "https://goproxy.cn"
-  commands:
-  - "go test -v -race -db=\"mysql\" -conn_str=\"root:@tcp(tidb:4000)/xorm_test\" -ignore_select_update=true -coverprofile=coverage7-1.txt -covermode=atomic"
-  - "go test -v -race -db=\"mysql\" -conn_str=\"root:@tcp(tidb:4000)/xorm_test\" -ignore_select_update=true -cache=true -coverprofile=coverage7-2.txt -covermode=atomic"
-  - go get github.com/wadey/gocovmerge
-  - gocovmerge coverage1-1.txt coverage1-2.txt coverage2-1.txt coverage2-2.txt coverage2.1-1.txt coverage2.1-2.txt coverage3-1.txt coverage3-2.txt coverage4-1.txt coverage4-2.txt coverage5-1.txt coverage5-2.txt coverage6-1.txt coverage6-2.txt coverage7-1.txt coverage7-2.txt > coverage.txt
-  when:
-    event:
-    - push
-    - pull_request
-
-services:
-- name: mysql
-  pull: default
-  image: mysql:5.7
-  environment:
-    MYSQL_ALLOW_EMPTY_PASSWORD: yes
-    MYSQL_DATABASE: xorm_test
-  when:
-    event:
-    - push
-    - tag
-    - pull_request
-
 - name: tidb
   pull: default
   image: pingcap/tidb:v3.0.3
@@ -542,61 +187,11 @@ services:
     - tag
     - pull_request
 
-- name: pgsql
-  pull: default
-  image: postgres:9.5
-  environment:
-    POSTGRES_DB: xorm_test
-    POSTGRES_USER: postgres
-  when:
-    event:
-    - push
-    - tag
-    - pull_request
-
-- name: mssql
-  pull: default
-  image: microsoft/mssql-server-linux:latest
-  environment:
-    ACCEPT_EULA: Y
-    SA_PASSWORD: yourStrong(!)Password
-    MSSQL_PID: Developer
-  when:
-    event:
-    - push
-    - tag
-    - pull_request
-
 ---
 kind: pipeline
-name: go1.13
-
-platform:
-  os: linux
-  arch: amd64
-
-workspace:
-  base: /go
-  path: src/gitea.com/xorm/xorm
-
+name: go1.13-test
 steps:
-
 - name: build
-  pull: default
-  image: golang:1.13
-  environment:
-    GO111MODULE: "off"
-  commands:
-    - go get -t -d -v ./...    
-    - go get -u xorm.io/core   
-    - go get -u xorm.io/builder
-    - go build -v
-  when:
-    event:
-    - push
-    - pull_request
-
-- name: build-gomod
   pull: default
   image: golang:1.13
   environment:
@@ -604,6 +199,7 @@ steps:
     GOPROXY: "https://goproxy.cn"
   commands:
     - go build -v
+    - go vet
   when:
     event:
     - push
@@ -640,6 +236,8 @@ steps:
 - name: test-mysql-utf8mb4
   pull: default
   image: golang:1.13
+  depends_on:
+    - test-mysql
   environment:
     GO111MODULE: "on"
     GOPROXY: "https://goproxy.cn"
@@ -654,6 +252,8 @@ steps:
 - name: test-mymysql
   pull: default
   image: golang:1.13
+  depends_on:
+    - test-mysql-utf8mb4
   environment:
     GO111MODULE: "on"
     GOPROXY: "https://goproxy.cn"
@@ -716,6 +316,28 @@ steps:
   commands:
   - "go test -v -race -db=\"mysql\" -conn_str=\"root:@tcp(tidb:4000)/xorm_test\" -ignore_select_update=true -coverprofile=coverage7-1.txt -covermode=atomic"
   - "go test -v -race -db=\"mysql\" -conn_str=\"root:@tcp(tidb:4000)/xorm_test\" -ignore_select_update=true -cache=true -coverprofile=coverage7-2.txt -covermode=atomic"
+  when:
+    event:
+    - push
+    - pull_request
+
+- name: merge_coverage
+  pull: default
+  image: golang:1.13
+  environment:
+    GO111MODULE: "on"
+    GOPROXY: "https://goproxy.cn"
+  depends_on:
+  - build
+  - test-sqlite
+  - test-mysql
+  - test-mysql-utf8mb4
+  - test-mymysql
+  - test-postgres
+  - test-postgres-schema
+  - test-mssql
+  - test-tidb
+  commands:
   - go get github.com/wadey/gocovmerge
   - gocovmerge coverage1-1.txt coverage1-2.txt coverage2-1.txt coverage2-2.txt coverage2.1-1.txt coverage2.1-2.txt coverage3-1.txt coverage3-2.txt coverage4-1.txt coverage4-2.txt coverage5-1.txt coverage5-2.txt coverage6-1.txt coverage6-2.txt coverage7-1.txt coverage7-2.txt > coverage.txt
   when:
@@ -724,6 +346,7 @@ steps:
     - pull_request
 
 services:
+
 - name: mysql
   pull: default
   image: mysql:5.7
@@ -736,15 +359,6 @@ services:
     - tag
     - pull_request
 
-- name: tidb
-  pull: default
-  image: pingcap/tidb:v3.0.3
-  when:
-    event:
-    - push
-    - tag
-    - pull_request
-
 - name: pgsql
   pull: default
   image: postgres:9.5
@@ -764,6 +378,15 @@ services:
     ACCEPT_EULA: Y
     SA_PASSWORD: yourStrong(!)Password
     MSSQL_PID: Developer
+  when:
+    event:
+    - push
+    - tag
+    - pull_request
+
+- name: tidb
+  pull: default
+  image: pingcap/tidb:v3.0.3
   when:
     event:
     - push
index 4ed0f77a9269a8cae899be8b87781047a0dab9a6..a7e52ea48497c65ec70e3d6328cdf2ff7dbf3b1c 100644 (file)
@@ -207,25 +207,46 @@ func (engine *Engine) QuoteTo(buf *strings.Builder, value string) {
                return
        }
 
-       quotePair := engine.dialect.Quote("")
+       quoteTo(buf, engine.dialect.Quote(""), value)
+}
 
-       if value[0] == '`' || len(quotePair) < 2 || value[0] == quotePair[0] { // no quote
+func quoteTo(buf *strings.Builder, quotePair string, value string) {
+       if len(quotePair) < 2 { // no quote
                _, _ = buf.WriteString(value)
                return
-       } else {
-               prefix, suffix := quotePair[0], quotePair[1]
-
-               _ = buf.WriteByte(prefix)
-               for i := 0; i < len(value); i++ {
-                       if value[i] == '.' {
-                               _ = buf.WriteByte(suffix)
-                               _ = buf.WriteByte('.')
-                               _ = buf.WriteByte(prefix)
+       }
+       
+       prefix, suffix := quotePair[0], quotePair[1]
+
+       i := 0
+       for i < len(value) {
+               // start of a token; might be already quoted
+               if value[i] == '.' {
+                       _ = buf.WriteByte('.')
+                       i++
+               } else if value[i] == prefix || value[i] == '`' {
+                       // Has quotes; skip/normalize `name` to prefix+name+sufix
+                       var ch byte
+                       if value[i] == prefix {
+                               ch = suffix
                        } else {
+                               ch = '`'
+                       }
+                       i++
+                       _ = buf.WriteByte(prefix)
+                       for ; i < len(value) && value[i] != ch; i++ {
+                               _ = buf.WriteByte(value[i])
+                       }
+                       _ = buf.WriteByte(suffix)
+                       i++
+               } else {
+                       // Requires quotes
+                       _ = buf.WriteByte(prefix)
+                       for ; i < len(value) && value[i] != '.'; i++ {
                                _ = buf.WriteByte(value[i])
                        }
+                       _ = buf.WriteByte(suffix)
                }
-               _ = buf.WriteByte(suffix)
        }
 }
 
@@ -330,7 +351,7 @@ func (engine *Engine) Ping() error {
        return session.Ping()
 }
 
-// logging sql
+// logSQL save sql
 func (engine *Engine) logSQL(sqlStr string, sqlArgs ...interface{}) {
        if engine.showSQL && !engine.showExecTime {
                if len(sqlArgs) > 0 {
index b33955fdce73237e96a59efaf8484d0dc5173851..8307193550309d07892396da10b8b732e483825a 100644 (file)
@@ -57,6 +57,7 @@ type Session struct {
        //beforeSQLExec func(string, ...interface{})
        lastSQL     string
        lastSQLArgs []interface{}
+       showSQL     bool
 
        ctx         context.Context
        sessionType sessionType
@@ -72,6 +73,7 @@ func (session *Session) Clone() *Session {
 func (session *Session) Init() {
        session.statement.Init()
        session.statement.Engine = session.engine
+       session.showSQL = session.engine.showSQL
        session.isAutoCommit = true
        session.isCommitedOrRollbacked = false
        session.isAutoClose = false
@@ -226,6 +228,16 @@ func (session *Session) Cascade(trueOrFalse ...bool) *Session {
        return session
 }
 
+// MustLogSQL means record SQL or not and don't follow engine's setting
+func (session *Session) MustLogSQL(log ...bool) *Session {
+       if len(log) > 0 {
+               session.showSQL = log[0]
+       } else {
+               session.showSQL = true
+       }
+       return session
+}
+
 // NoCache ask this session do not retrieve data from cache system and
 // get data from database directly.
 func (session *Session) NoCache() *Session {
@@ -842,7 +854,17 @@ func (session *Session) slice2Bean(scanResults []interface{}, fields []string, b
 func (session *Session) saveLastSQL(sql string, args ...interface{}) {
        session.lastSQL = sql
        session.lastSQLArgs = args
-       session.engine.logSQL(sql, args...)
+       session.logSQL(sql, args...)
+}
+
+func (session *Session) logSQL(sqlStr string, sqlArgs ...interface{}) {
+       if session.showSQL && !session.engine.showExecTime {
+               if len(sqlArgs) > 0 {
+                       session.engine.logger.Infof("[SQL] %v %#v", sqlStr, sqlArgs)
+               } else {
+                       session.engine.logger.Infof("[SQL] %v", sqlStr)
+               }
+       }
 }
 
 // LastSQL returns last query information
index 67648ef130ee2536eeb49c26c306b520af9ebaca..a92982967049942b62d80b876fe99b59ef1cce21 100644 (file)
@@ -27,7 +27,9 @@ func (session *Session) queryRows(sqlStr string, args ...interface{}) (*core.Row
 
        session.queryPreprocess(&sqlStr, args...)
 
-       if session.engine.showSQL {
+       if session.showSQL {
+               session.lastSQL = sqlStr
+               session.lastSQLArgs = args
                if session.engine.showExecTime {
                        b4ExecTime := time.Now()
                        defer func() {
index c5c65a452a173c1fb23c5bbd5581412668e5932a..231163e0638c62160233bc21df3f655c68af8afb 100644 (file)
@@ -377,10 +377,23 @@ func (session *Session) Update(bean interface{}, condiBean ...interface{}) (int6
                return 0, errors.New("No content found to be updated")
        }
 
-       sqlStr = fmt.Sprintf("UPDATE %v%v SET %v %v",
+       var tableAlias = session.engine.Quote(tableName)
+       var fromSQL string
+       if session.statement.TableAlias != "" {
+               switch session.engine.dialect.DBType() {
+               case core.MSSQL:
+                       fromSQL = fmt.Sprintf("FROM %s %s ", tableAlias, session.statement.TableAlias)
+                       tableAlias = session.statement.TableAlias
+               default:
+                       tableAlias = fmt.Sprintf("%s AS %s", tableAlias, session.statement.TableAlias)
+               }
+       }
+
+       sqlStr = fmt.Sprintf("UPDATE %v%v SET %v %v%v",
                top,
-               session.engine.Quote(tableName),
+               tableAlias,
                strings.Join(colNames, ", "),
+               fromSQL,
                condSQL)
 
        res, err := session.exec(sqlStr, append(args, condArgs...)...)