@wepublish/api
Version:
API core for we.publish.
66 lines (65 loc) • 2.26 kB
TypeScript
import { MetadataProperty, Page as PrismaPage, PageRevision as PrismaPageRevision } from '@prisma/client';
import { PageBlock } from './block';
import { DateFilter } from './common';
export interface PageData {
readonly updatedAt?: Date | null;
readonly publishedAt?: Date | null;
readonly slug?: string | null;
readonly title: string;
readonly description?: string | null;
readonly tags: string[];
readonly properties: MetadataProperty[];
readonly imageID?: string | null;
readonly socialMediaTitle?: string | null;
readonly socialMediaDescription?: string | null;
readonly socialMediaImageID?: string | null;
readonly blocks: PageBlock[];
}
export interface Page {
readonly id: string;
readonly createdAt: Date;
readonly modifiedAt: Date;
readonly draft: PageRevision | null;
readonly published: PageRevision | null;
readonly pending: PageRevision | null;
}
export interface PageRevision extends PageData {
readonly revision: number;
readonly createdAt: Date;
readonly publishAt?: Date | null;
}
export interface PublicPage extends PageData {
readonly id: string;
readonly updatedAt?: Date | null;
readonly publishedAt?: Date | null;
readonly blocks: PageBlock[];
}
export interface PageFilter {
readonly title?: string;
readonly draft?: boolean;
readonly published?: boolean;
readonly pending?: boolean;
readonly description?: string;
readonly publicationDateFrom?: DateFilter;
readonly publicationDateTo?: DateFilter;
readonly tags?: string[];
}
export interface PublishedPageFilter {
readonly tags?: string[];
}
export declare enum PageSort {
CreatedAt = "createdAt",
ModifiedAt = "modifiedAt",
PublishedAt = "publishedAt",
UpdatedAt = "updatedAt",
PublishAt = "publishAt"
}
export type PageRevisionWithProperties = PrismaPageRevision & {
properties: MetadataProperty[];
};
export type PageWithRevisions = PrismaPage & {
draft: PageRevisionWithProperties | null;
pending: PageRevisionWithProperties | null;
published: PageRevisionWithProperties | null;
};
export declare const pageWithRevisionsToPublicPage: ({ id, published, pending }: Omit<PageWithRevisions, 'draft'>) => PublicPage;