async save(mention) {
        const data = {
            id: mention.id.toHexString(),
            source: mention.source.href,
            source_title: mention.sourceTitle,
            source_site_title: mention.sourceSiteTitle,
            source_excerpt: mention.sourceExcerpt,
            source_author: mention.sourceAuthor,
            source_featured_image: mention.sourceFeaturedImage?.href,
            source_favicon: mention.sourceFavicon?.href,
            target: mention.target.href,
            resource_id: mention.resourceId?.toHexString(),
            resource_type: mention.resourceType,
            payload: mention.payload ? JSON.stringify(mention.payload) : null,
            deleted: Mention.isDeleted(mention),
            verified: mention.verified
        };

        const existing = await this.#MentionModel.findOne({id: data.id}, {require: false});

        if (!existing) {
            await this.#MentionModel.add(data);
        } else {
            await this.#MentionModel.edit(data, {
                id: data.id
            });
        }
        for (const event of mention.events) {
            this.#DomainEvents.dispatch(event);
        }
    }
@param {import('./Mention')} mention
@returns {Promise<void>}