type Post = {
id: string;
createdAt: Date;
updatedAt: Date;
} & (TextKind | AudioKind)
type TextKind = {
kind: "TEXT"
content: JSON
} & (TextVariantWriting | TextVariantNote)
type AudioKind = {
kind: "AUDIO"
s3Key: "asdasd"
sizeInBytes: 10_000
} & (AudioPodcastVariant | AudioMomentVariant)
type TextVariantWriting = {
variant: "WRITING"
title: string;
subtitle: string;
}
type TextVariantNote = {
variant: "NOTE"
noteSpecificAttribute: string;
}
// ...etc
type Post = {
id: string;
createdAt: Date;
updatedAt: Date;
} & (TextKind | AudioKind)
type TextKind = {
kind: "TEXT"
content: JSON
} & (TextVariantWriting | TextVariantNote)
type AudioKind = {
kind: "AUDIO"
s3Key: "asdasd"
sizeInBytes: 10_000
} & (AudioPodcastVariant | AudioMomentVariant)
type TextVariantWriting = {
variant: "WRITING"
title: string;
subtitle: string;
}
type TextVariantNote = {
variant: "NOTE"
noteSpecificAttribute: string;
}
// ...etc