Hide not allowed Reactions (#9387)
* 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
This commit is contained in:
2
go.mod
2
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
|
||||
)
|
||||
|
2
go.sum
2
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=
|
||||
|
@ -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())
|
||||
|
@ -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)
|
||||
}
|
||||
|
2
vendor/modules.txt
vendored
2
vendor/modules.txt
vendored
@ -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
|
||||
|
527
vendor/xorm.io/xorm/.drone.yml
generated
vendored
527
vendor/xorm.io/xorm/.drone.yml
generated
vendored
File diff suppressed because it is too large
Load Diff
45
vendor/xorm.io/xorm/engine.go
generated
vendored
45
vendor/xorm.io/xorm/engine.go
generated
vendored
@ -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 {
|
||||
|
24
vendor/xorm.io/xorm/session.go
generated
vendored
24
vendor/xorm.io/xorm/session.go
generated
vendored
@ -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
|
||||
|
4
vendor/xorm.io/xorm/session_raw.go
generated
vendored
4
vendor/xorm.io/xorm/session_raw.go
generated
vendored
@ -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() {
|
||||
|
17
vendor/xorm.io/xorm/session_update.go
generated
vendored
17
vendor/xorm.io/xorm/session_update.go
generated
vendored
@ -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...)...)
|
||||
|
Reference in New Issue
Block a user