File: /var/www/blog.affstore/src/type/post.ts
import type { IUser } from './user';
export interface IPost {
id: number;
title: string;
description: string;
date: string;
updated_at: string;
image: string;
views: number;
author: IUser;
reading_time: number;
blocks: IPostBlock;
related_posts: IPost[];
tags: string[];
slug: string;
alternates: {
[key:string]: string;
}
}
export type IPostOmitBlock = Omit<IPost, 'blocks'>;
export type IPostBlock = Array<
IPostBlockHighlightedText | IPostBlockRelatedPost | IPostBlockQuote | IPostBlockCountBanner | IPostBlockText
>;
interface IPostBlockHighlightedText {
acf_fc_layout: 'highlighted_text';
text: string;
color: string;
}
interface IPostBlockRelatedPost {
acf_fc_layout: 'related_post';
post: IPostOmitBlock;
}
interface IPostBlockQuote {
acf_fc_layout: 'quote';
text: string;
author: IUser;
}
interface IPostBlockCountBanner {
acf_fc_layout: 'count_banner';
highlighted: string;
text: string;
}
interface IPostBlockText {
acf_fc_layout: 'text';
text: string;
}