UNPKG

@wepublish/api

Version:
88 lines (87 loc) 3.21 kB
import { MetadataProperty, Article as PrismaArticle, ArticleRevision as PrismaArticleRevision, ArticleRevisionAuthor, ArticleRevisionSocialMediaAuthor } from '@prisma/client'; import { ArticleBlock } from './block'; import { DateFilter } from './common'; export interface ArticleData { readonly preTitle?: string | null; readonly title?: string | null; readonly lead?: string | null; readonly seoTitle?: string | null; readonly slug?: string | null; readonly tags: string[]; readonly canonicalUrl?: string | null; readonly properties: MetadataProperty[]; readonly imageID?: string | null; readonly authors: ArticleRevisionAuthor[]; readonly breaking: boolean; readonly blocks: ArticleBlock[]; readonly hideAuthor: boolean; readonly socialMediaTitle?: string | null; readonly socialMediaDescription?: string | null; readonly socialMediaAuthors: ArticleRevisionSocialMediaAuthor[]; readonly socialMediaImageID?: string | null; } export interface Article extends ArticleData { readonly id: string; readonly shared: boolean; readonly createdAt: Date; readonly modifiedAt: Date; readonly draft: ArticleRevision | null; readonly published: ArticleRevision | null; readonly pending: ArticleRevision | null; } export interface PeerArticle { peerID: string; article: Article; } export interface ArticleRevision extends ArticleData { readonly revision: number; readonly createdAt: Date; readonly publishAt?: Date | null; readonly updatedAt?: Date | null; readonly publishedAt?: Date | null; } export interface PublicArticle extends ArticleData { readonly id: string; readonly shared: boolean; readonly updatedAt?: Date | null; readonly publishedAt?: Date | null; readonly blocks: ArticleBlock[]; readonly peeredArticleURL?: string; } export interface ArticleFilter { readonly title?: string; readonly preTitle?: string; readonly publicationDateFrom?: DateFilter; readonly publicationDateTo?: DateFilter; readonly lead?: string; readonly draft?: boolean; readonly published?: boolean; readonly pending?: boolean; readonly shared?: boolean; readonly authors?: string[]; readonly tags?: string[]; readonly includeHidden?: boolean; } export interface PublicArticleFilter { readonly authors?: string[]; readonly tags?: string[]; readonly includeHidden?: boolean; } export declare enum ArticleSort { CreatedAt = "createdAt", ModifiedAt = "modifiedAt", PublishedAt = "publishedAt", UpdatedAt = "updatedAt", PublishAt = "publishAt" } export type ArticleRevisionWithRelations = PrismaArticleRevision & { properties: MetadataProperty[]; authors: ArticleRevisionAuthor[]; socialMediaAuthors: ArticleRevisionSocialMediaAuthor[]; }; export type ArticleWithRevisions = PrismaArticle & { draft: ArticleRevisionWithRelations | null; pending: ArticleRevisionWithRelations | null; published: ArticleRevisionWithRelations | null; }; export declare const articleWithRevisionsToPublicArticle: ({ id, shared, published, pending }: Omit<ArticleWithRevisions, 'draft'>) => PublicArticle;