Files
core/packages/api-client/models/aggregate.ts
Innei b22666694a chore: lint
Signed-off-by: Innei <tukon479@gmail.com>
2023-06-10 16:36:14 +08:00

83 lines
1.7 KiB
TypeScript

import type { CategoryModel } from './category'
import type { NoteModel } from './note'
import type { PageModel } from './page'
import type { PostModel } from './post'
import type { SayModel } from './say'
import type { SeoOptionModel } from './setting'
import type { UserModel } from './user'
export interface AggregateRoot {
user: UserModel
seo: SeoOptionModel
url: Url
categories: CategoryModel[]
pageMeta: Pick<PageModel, 'title' | 'id' | 'slug' | 'order'>[] | null
}
export interface Url {
wsUrl: string
serverUrl: string
webUrl: string
}
// eslint-disable-next-line @typescript-eslint/no-empty-interface
export interface AggregateTopNote
extends Pick<NoteModel, 'id' | 'title' | 'created' | 'nid' | 'images'> {}
// eslint-disable-next-line @typescript-eslint/no-empty-interface
export interface AggregateTopPost
extends Pick<
PostModel,
'id' | 'slug' | 'created' | 'title' | 'category' | 'images'
> {}
export interface AggregateTop {
notes: AggregateTopNote[]
posts: AggregateTopPost[]
says: SayModel[]
}
export enum TimelineType {
Post,
Note,
}
export interface TimelineData {
notes?: Pick<
NoteModel,
| 'id'
| 'nid'
| 'title'
| 'weather'
| 'mood'
| 'created'
| 'modified'
| 'hasMemory'
>[]
posts?: (Pick<
PostModel,
'id' | 'title' | 'slug' | 'created' | 'modified' | 'category'
> & { url: string })[]
}
export interface AggregateStat {
allComments: number
categories: number
comments: number
linkApply: number
links: number
notes: number
pages: number
posts: number
says: number
recently: number
unreadComments: number
online: number
todayMaxOnline: string
todayOnlineTotal: string
callTime: number
uv: number
todayIpAccessCount: number
}