57 lines
2.0 KiB
TypeScript
57 lines
2.0 KiB
TypeScript
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<WikiContribution[]>;
|
|
|
|
/**
|
|
* 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<WikiContribution[]>;
|
|
|
|
findById(id: string): Promise<WikiContribution | null>;
|
|
|
|
/**
|
|
* 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<WikiContribution | null>;
|
|
|
|
/** Inserts version 0; otherwise atomically updates the exact version. Contributor writes also enforce ownership and unpublished state. */
|
|
save(
|
|
contribution: WikiContribution,
|
|
contributor?: WikiContributionWriter
|
|
): Promise<WikiContribution>;
|
|
|
|
/**
|
|
* 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<string>;
|
|
}
|