package controllers import ( "context" serviceinterfaces "queryorchestration/api/serviceInterfaces" "queryorchestration/internal/query" "github.com/go-playground/validator/v10" "github.com/google/uuid" "google.golang.org/protobuf/types/known/emptypb" ) type QueryController struct { serviceinterfaces.UnimplementedQueryServiceServer query query.Service validator *validator.Validate } func NewQueryController(querySvc query.Service, validator *validator.Validate) *QueryController { return &QueryController{ query: querySvc, validator: validator, } } func (s *QueryController) List(ctx context.Context, req *serviceinterfaces.QueryFilter) (*serviceinterfaces.Queries, error) { types := make([]query.Type, len(req.GetTypes())) for index, t := range req.GetTypes() { types[index] = query.Type(ParseSpecQueryType(t)) } filters := query.ListFilters{ Types: types, } queries, err := s.query.List(ctx, filters) if err != nil { return nil, err } outQueries := make([]*serviceinterfaces.Query, len(*queries)) for index, query := range *queries { outQueries[index] = ParseQuery(&query) } return &serviceinterfaces.Queries{ Queries: outQueries, }, nil } func (s *QueryController) Get(ctx context.Context, req *serviceinterfaces.IdMessage) (*serviceinterfaces.Query, error) { id, err := uuid.Parse(req.GetId()) if err != nil { return nil, err } query, err := s.query.Get(ctx, id) if err != nil { return nil, err } return ParseQuery(query), nil } func (s *QueryController) Create(ctx context.Context, req *serviceinterfaces.QueryCreate) (*serviceinterfaces.IdMessage, error) { return &serviceinterfaces.IdMessage{}, nil } func (s *QueryController) Update(ctx context.Context, req *serviceinterfaces.QueryUpdate) (*emptypb.Empty, error) { return &emptypb.Empty{}, nil } func (s *QueryController) Remove(ctx context.Context, req *serviceinterfaces.IdMessage) (*emptypb.Empty, error) { return &emptypb.Empty{}, nil } func (s *QueryController) Test(ctx context.Context, req *serviceinterfaces.QueryTestRequest) (*serviceinterfaces.QueryTestResponse, error) { return &serviceinterfaces.QueryTestResponse{}, nil }