Implement message filter scubscription_status and sender_user_id [skip-tests]
All checks were successful
Build Docker and Deploy / Run Unit-Tests (push) Has been skipped
Build Docker and Deploy / Build Docker Container (push) Successful in 45s
Build Docker and Deploy / Deploy to Server (push) Successful in 6s

This commit is contained in:
2025-04-13 19:42:47 +02:00
parent b989a8359e
commit e9c5c5fb99
3 changed files with 171 additions and 17 deletions

View File

@@ -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 {