# Build the Go gRPC dispatch service from proto/dispatch.proto.
# Build context is the work-order-agents package root (so proto/ is available).
FROM golang:1.23-bookworm AS build

RUN apt-get update && apt-get install -y --no-install-recommends protobuf-compiler && rm -rf /var/lib/apt/lists/*

WORKDIR /src
ENV PATH=$PATH:/root/go/bin

# gRPC/protobuf code generators.
RUN go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.34.2 \
 && go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.5.1

# Dependencies first (cache-friendly).
COPY dispatch-service/go.mod ./
RUN go mod download || true

# Source + proto, then generate Go stubs and build.
COPY proto/dispatch.proto ./proto/dispatch.proto
COPY dispatch-service/ ./
RUN protoc --go_out=. --go_opt=paths=source_relative \
           --go-grpc_out=. --go-grpc_opt=paths=source_relative \
           proto/dispatch.proto
RUN go mod tidy
RUN CGO_ENABLED=0 go build -o /dispatch .

FROM gcr.io/distroless/static-debian12
COPY --from=build /dispatch /dispatch
EXPOSE 50051
ENTRYPOINT ["/dispatch"]
