Il manque des else, tu ne géres pas l'insertion pour les deux derniers cas de tes 4 différents comportements.

De plus tu ne fais que des insert, je considère donc que ça permet de conserver tout l'historique des messages d'une personne/fundation etc... C'est cool. Et grace à ton ORDER DESC dans le get, tu dois avoir les derniers donc tout vas bien.
Mais un petit champ removed (pour connaitre la date de la suppression) et surtout pouvoir supprimer un message, serait pas mal.

On ouvrira un ticket pour ça, on doit pouvoir accepter la PR quand meme dans l'était. Mais tu vas en avoir besoin dans tes interfaces.

Du coup ajouter une methode dans cette classe pour supprimer un message serait une bonne chose aussi.