package v1

import (
	"github.com/pingcap-inc/pingcat/internal/apiserver/store"
)

type Service interface {
	GPT() GPTSrv
	User() UserSrv
	Chat() ChatSrv
	LarkEvent() LarkEventSrv
	LarkAPI() LarkAPISrv
	LarkChat() LarkChatSrv
	QueryDBChatAPP() QueryDBChatAPPSrv
	OncallBotChatAPP() OncallBotChatAPPSrv
}

type service struct {
	store store.Factory
}

func NewService(store store.Factory) Service {
	return &service{
		store: store,
	}
}

func (s *service) GPT() GPTSrv {
	return NewGPT(s.store)
}

func (s *service) User() UserSrv {
	return NewUser(s.store)
}

func (s *service) Chat() ChatSrv {
	return NewChat(s.store)
}

func (s *service) LarkEvent() LarkEventSrv {
	return NewLarkEvent(s.store)
}

func (s *service) LarkAPI() LarkAPISrv {
	return NewLarkAPI(s.store)
}

func (s *service) LarkChat() LarkChatSrv {
	return NewLarkChat(s.store)
}

func (s *service) QueryDBChatAPP() QueryDBChatAPPSrv {
	return NewQueryDBChatAPP(s.store)
}

func (s *service) OncallBotChatAPP() OncallBotChatAPPSrv {
	return NewOncallBotChatAPP(s.store)
}
