Ecco un tentativo di descrizione di ciò che stiamo cercando di risolvere:
Abbiamo un team di supporto di 4 membri, tutti con le notifiche impostate al livello “Osserva il primo post” per la categoria di supporto. Vogliamo accelerare il supporto spingendo il team a osservare e reagire alle notifiche più spesso e più rapidamente. Poiché i membri del team hanno orari di lavoro diversi, molti argomenti vengono aperti e risolti durante gli orari in cui i membri del team non sono al lavoro.
Esempio:
Sono un membro del supporto e il mio turno inizia alle
; fino ad allora ci sono molti argomenti aperti
e risolti mentre sono fuori servizio. Non voglio ricevere notifiche per quel tipo di argomento.
Quindi stiamo cercando un modo per disattivare (“de-notificare”, revocare, segnare automaticamente come letta) le notifiche attivate dall’opzione “Osserva il primo post” che sono state risolte prima che l’utente accedesse a Discourse.
Finora abbiamo individuato tali notifiche nel database utilizzando una query simile a questa:
select
notifications.user_id
,notifications.topic_id
,notifications.id
from notifications
where read=false
and notification_type=17
and topic_id in (
select
topic_id
from topic_custom_fields
where name='accepted_answer_post_id' and value is not null
)
Siamo riusciti a disattivare le notifiche aggiornando il campo read direttamente nel database:
update notifications
set read=true
where id=XXXXXX
Sappiamo che eseguire aggiornamenti diretti al database su Discourse è una follia e molto sconsigliato.
Quindi stiamo cercando qualche tipo di API che ci permetta di chiamare la disattivazione di una notifica specifica?
Se riuscissimo a creare un job Sidekiq per disattivare le notifiche aggiornando direttamente il database, sarebbe una soluzione sostenibile per un sito di produzione?
Esistono plugin “buoni” che eseguono job in background sul database in modo che possiamo provare a ricrearne uno con questo compito?
Saremmo più propensi a eliminare le notifiche di questo tipo, dato che non esiste Notifications - "unread only" filter.
Discourse ha qualche plugin “ufficiale” che esegue eliminazioni direttamente nel database, in modo che possiamo provare a imparare come eliminare qualcosa nel database tramite un plugin?