import { WikiContribution, WikiContributionStatus } from '../../entities/wiki-contribution.entity'; export class WikiContributionConflict extends Error {} export interface WikiContributionWriter { id: string; organizationId: string; } export const WIKI_CONTRIBUTION_REPOSITORY = 'WikiContributionRepository'; export interface WikiContributionRepository { /** * Pages **publiees** pour cette langue, de la plus recente a la plus ancienne. * * C'est ce que lisent la recherche documentaire et la page de complements : * une proposition en attente n'existe pour personne d'autre que le relecteur. */ findPublished(locale: string): Promise; /** * File de relecture, tous statuts confondus ou filtree. * * Reservee a l'administration : c'est le seul endroit d'ou une page en * attente est visible. */ findForReview(status?: WikiContributionStatus): Promise; findById(id: string): Promise; /** * Page portant deja ce titre, quel que soit son statut. * * Le couple (langue, sujet, titre) est l'identite editoriale d'une page : * c'est ce qui permet de mettre a jour une proposition plutot que d'en * empiler une seconde sur le meme sujet, y compris quand la premiere attend * encore sa relecture. */ findByTitle(locale: string, topic: string, title: string): Promise; /** Inserts version 0; otherwise atomically updates the exact version. Contributor writes also enforce ownership and unpublished state. */ save( contribution: WikiContribution, contributor?: WikiContributionWriter ): Promise; /** * Empreinte du jeu **publie**, qui change des qu'une page est validee, * revisee ou retiree. * * L'index vectoriel des complements est garde en memoire ; cette valeur est * ce qui dit a la recherche qu'il est perime, sans relire tout le contenu a * chaque question. */ revision(locale: string): Promise; }