Files
smart-search-back/internal/grpc/server.go
vallyenfail 80e5f318a9
All checks were successful
Deploy Smart Search Backend Test / deploy (push) Successful in 1m24s
add service
2026-01-18 01:48:46 +03:00

81 lines
3.2 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, inviteRepo, txManager, 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)
}