Implement message filter scubscription_status
and sender_user_id
[skip-tests]
This commit is contained in:
@@ -15,6 +15,7 @@ import (
|
||||
|
||||
type MessageFilter struct {
|
||||
ConfirmedAndActiveSubscriptionBy *UserID
|
||||
ConfirmedSubscriptionOrOwnedBy *UserID
|
||||
SearchStringFTS *[]string
|
||||
SearchStringPlain *[]string
|
||||
Sender *[]UserID
|
||||
@@ -49,7 +50,10 @@ func (f MessageFilter) SQL() (string, string, sq.PP, error) {
|
||||
|
||||
joinClause := ""
|
||||
if f.ConfirmedAndActiveSubscriptionBy != nil {
|
||||
joinClause += fmt.Sprintf(" LEFT JOIN subscriptions AS subs ON (messages.channel_id = subs.channel_id AND subs.subscriber_user_id = :%s AND subs.confirmed=1 AND subs.active=1 AND subs.deleted=0) ", params.Add(*f.ConfirmedAndActiveSubscriptionBy))
|
||||
joinClause += fmt.Sprintf(" LEFT JOIN subscriptions AS __filter_subs_1 ON (messages.channel_id = __filter_subs_1.channel_id AND __filter_subs_1.subscriber_user_id = :%s AND __filter_subs_1.confirmed=1 AND __filter_subs_1.active=1 AND __filter_subs_1.deleted=0) ", params.Add(*f.ConfirmedAndActiveSubscriptionBy))
|
||||
}
|
||||
if f.ConfirmedSubscriptionOrOwnedBy != nil {
|
||||
joinClause += fmt.Sprintf(" LEFT JOIN subscriptions AS __filter_subs_2 ON (messages.channel_id = __filter_subs_2.channel_id AND __filter_subs_2.subscriber_user_id = :%s AND __filter_subs_2.confirmed=1 AND __filter_subs_2.deleted=0) ", params.Add(*f.ConfirmedSubscriptionOrOwnedBy))
|
||||
}
|
||||
if f.SearchStringFTS != nil {
|
||||
joinClause += " JOIN messages_fts AS mfts ON (mfts.rowid = messages.rowid) "
|
||||
@@ -66,7 +70,11 @@ func (f MessageFilter) SQL() (string, string, sq.PP, error) {
|
||||
}
|
||||
|
||||
if f.ConfirmedAndActiveSubscriptionBy != nil {
|
||||
sqlClauses = append(sqlClauses, "(subs.confirmed=1 AND subs.active=1 AND subs.deleted=0)")
|
||||
sqlClauses = append(sqlClauses, "(__filter_subs_1.confirmed=1 AND __filter_subs_1.active=1 AND __filter_subs_1.deleted=0)")
|
||||
}
|
||||
|
||||
if f.ConfirmedSubscriptionOrOwnedBy != nil {
|
||||
sqlClauses = append(sqlClauses, fmt.Sprintf("((__filter_subs_2.confirmed=1 AND __filter_subs_2.deleted=0) OR (messages.channel_owner_user_id = :%s) OR (messages.sender_user_id = :%s))", params.Add(*f.ConfirmedSubscriptionOrOwnedBy), params.Add(*f.ConfirmedSubscriptionOrOwnedBy)))
|
||||
}
|
||||
|
||||
if f.Sender != nil {
|
||||
|
Reference in New Issue
Block a user