81 lines
3.1 KiB
Go
81 lines
3.1 KiB
Go
package grpc
|
|
|
|
import (
|
|
"git.techease.ru/Smart-search/smart-search-back/internal/ai"
|
|
"git.techease.ru/Smart-search/smart-search-back/internal/repository"
|
|
"git.techease.ru/Smart-search/smart-search-back/internal/service"
|
|
authpb "git.techease.ru/Smart-search/smart-search-back/pkg/pb/auth"
|
|
invitepb "git.techease.ru/Smart-search/smart-search-back/pkg/pb/invite"
|
|
requestpb "git.techease.ru/Smart-search/smart-search-back/pkg/pb/request"
|
|
supplierpb "git.techease.ru/Smart-search/smart-search-back/pkg/pb/supplier"
|
|
userpb "git.techease.ru/Smart-search/smart-search-back/pkg/pb/user"
|
|
|
|
"github.com/jackc/pgx/v5/pgxpool"
|
|
"go.uber.org/zap"
|
|
"google.golang.org/grpc"
|
|
)
|
|
|
|
type AuthHandler struct {
|
|
authpb.UnimplementedAuthServiceServer
|
|
authService service.AuthService
|
|
logger *zap.Logger
|
|
}
|
|
|
|
type UserHandler struct {
|
|
userpb.UnimplementedUserServiceServer
|
|
userService service.UserService
|
|
logger *zap.Logger
|
|
}
|
|
|
|
type InviteHandler struct {
|
|
invitepb.UnimplementedInviteServiceServer
|
|
inviteService service.InviteService
|
|
logger *zap.Logger
|
|
}
|
|
|
|
type RequestHandler struct {
|
|
requestpb.UnimplementedRequestServiceServer
|
|
requestService service.RequestService
|
|
logger *zap.Logger
|
|
}
|
|
|
|
type SupplierHandler struct {
|
|
supplierpb.UnimplementedSupplierServiceServer
|
|
supplierService service.SupplierService
|
|
logger *zap.Logger
|
|
}
|
|
|
|
func NewHandlers(pool *pgxpool.Pool, jwtSecret, cryptoSecret, openAIKey, perplexityKey string, logger *zap.Logger) (*AuthHandler, *UserHandler, *InviteHandler, *RequestHandler, *SupplierHandler) {
|
|
userRepo := repository.NewUserRepository(pool, cryptoSecret)
|
|
sessionRepo := repository.NewSessionRepository(pool)
|
|
inviteRepo := repository.NewInviteRepository(pool)
|
|
requestRepo := repository.NewRequestRepository(pool)
|
|
supplierRepo := repository.NewSupplierRepository(pool)
|
|
tokenUsageRepo := repository.NewTokenUsageRepository(pool)
|
|
|
|
txManager := repository.NewTxManager(pool)
|
|
|
|
openAIClient := ai.NewOpenAIClient(openAIKey)
|
|
perplexityClient := ai.NewPerplexityClient(perplexityKey)
|
|
|
|
authService := service.NewAuthService(userRepo, sessionRepo, jwtSecret, cryptoSecret)
|
|
userService := service.NewUserService(userRepo, requestRepo, cryptoSecret)
|
|
inviteService := service.NewInviteService(inviteRepo, userRepo, txManager)
|
|
requestService := service.NewRequestService(requestRepo, supplierRepo, tokenUsageRepo, userRepo, openAIClient, perplexityClient, txManager)
|
|
supplierService := service.NewSupplierService(supplierRepo)
|
|
|
|
return &AuthHandler{authService: authService, logger: logger},
|
|
&UserHandler{userService: userService, logger: logger},
|
|
&InviteHandler{inviteService: inviteService, logger: logger},
|
|
&RequestHandler{requestService: requestService, logger: logger},
|
|
&SupplierHandler{supplierService: supplierService, logger: logger}
|
|
}
|
|
|
|
func RegisterServices(s *grpc.Server, authH *AuthHandler, userH *UserHandler, inviteH *InviteHandler, requestH *RequestHandler, supplierH *SupplierHandler) {
|
|
authpb.RegisterAuthServiceServer(s, authH)
|
|
userpb.RegisterUserServiceServer(s, userH)
|
|
invitepb.RegisterInviteServiceServer(s, inviteH)
|
|
requestpb.RegisterRequestServiceServer(s, requestH)
|
|
supplierpb.RegisterSupplierServiceServer(s, supplierH)
|
|
}
|