@wepublish/api
Version:
API core for we.publish.
88 lines (87 loc) • 3.21 kB
TypeScript
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;