Files
core/packages/api-client/controllers/topic.ts
Innei e5ac04a650 chore: lint with sxzz config
Signed-off-by: Innei <i@innei.in>
2024-04-29 16:00:20 +08:00

38 lines
1002 B
TypeScript

import { autoBind } from '~/utils/auto-bind'
import { BaseCrudController } from './base'
import type { IRequestAdapter } from '~/interfaces/adapter'
import type { IController } from '~/interfaces/controller'
import type { IRequestHandler } from '~/interfaces/request'
import type { TopicModel } from '~/models/topic'
import type { HTTPClient } from '../core'
declare module '../core/client' {
interface HTTPClient<
T extends IRequestAdapter = IRequestAdapter,
ResponseWrapper = unknown,
> {
topic: TopicController<ResponseWrapper>
}
}
export class TopicController<ResponseWrapper>
extends BaseCrudController<TopicModel, ResponseWrapper>
implements IController
{
base = 'topics'
name = 'topic'
constructor(protected client: HTTPClient) {
super(client)
autoBind(this)
}
public get proxy(): IRequestHandler<ResponseWrapper> {
return this.client.proxy(this.base)
}
getTopicBySlug(slug: string) {
return this.proxy.slug(slug).get<TopicModel>()
}
}