package grpc import ( "fmt" "net" "github.com/cloudprint/cloudprint-backend/internal/grpc/interceptor" pb "github.com/cloudprint/cloudprint-backend/proto/generated" "google.golang.org/grpc" "google.golang.org/grpc/reflection" ) type Server struct { grpcServer *grpc.Server port int } type ServerOption func(*Server) func WithPort(port int) ServerOption { return func(s *Server) { s.port = port } } func NewServer(opts ...ServerOption) *Server { s := &Server{ port: 8080, } for _, opt := range opts { opt(s) } return s } func (s *Server) RegisterServices(grpcServer *grpc.Server) { // Services will be registered here // This is a placeholder for the actual service registration } func (s *Server) Start() error { lis, err := net.Listen("tcp", fmt.Sprintf(":%d", s.port)) if err != nil { return fmt.Errorf("failed to listen: %v", err) } s.grpcServer = grpc.NewServer( grpc.UnaryInterceptor(interceptor.AuthInterceptor{}.UnaryServerInterceptor()), ) // Register reflection service for debugging reflection.Register(s.grpcServer) if err := s.grpcServer.Serve(lis); err != nil { return fmt.Errorf("failed to serve: %v", err) } return nil } func (s *Server) Stop() { if s.grpcServer != nil { s.grpcServer.GracefulStop() } } // Register all gRPC services func RegisterServices(grpcServer *grpc.Server) { // AuthService // pb.RegisterAuthServiceServer(grpcServer, authServiceServer) // FileService // pb.RegisterFileServiceServer(grpcServer, fileServiceServer) // OrderService // pb.RegisterOrderServiceServer(grpcServer, orderServiceServer) // PrintService // pb.RegisterPrintServiceServer(grpcServer, printServiceServer) // LibraryService // pb.RegisterLibraryServiceServer(grpcServer, libraryServiceServer) // PriceService // pb.RegisterPriceServiceServer(grpcServer, priceServiceServer) // PayService // pb.RegisterPayServiceServer(grpcServer, payServiceServer) // AdminService // pb.RegisterAdminServiceServer(grpcServer, adminServiceServer) }