Files
mcr/internal/grpcserver/audit.go
Kyle Isom d5580f01f2 Migrate module path from kyle/ to mc/ org
All import paths updated to git.wntrmute.dev/mc/. Bumps mcdsl to v1.2.0.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 02:05:59 -07:00

62 lines
1.4 KiB
Go

package grpcserver
import (
"context"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
pb "git.wntrmute.dev/mc/mcr/gen/mcr/v1"
"git.wntrmute.dev/mc/mcr/internal/db"
)
// auditService implements pb.AuditServiceServer.
type auditService struct {
pb.UnimplementedAuditServiceServer
db *db.DB
}
func (s *auditService) ListAuditEvents(_ context.Context, req *pb.ListAuditEventsRequest) (*pb.ListAuditEventsResponse, error) {
limit := int32(50)
offset := int32(0)
if req.GetPagination() != nil {
if req.Pagination.Limit > 0 {
limit = req.Pagination.Limit
}
if req.Pagination.Offset >= 0 {
offset = req.Pagination.Offset
}
}
filter := db.AuditFilter{
EventType: req.GetEventType(),
ActorID: req.GetActorId(),
Repository: req.GetRepository(),
Since: req.GetSince(),
Until: req.GetUntil(),
Limit: int(limit),
Offset: int(offset),
}
events, err := s.db.ListAuditEvents(filter)
if err != nil {
return nil, status.Errorf(codes.Internal, "internal error")
}
var result []*pb.AuditEvent
for _, e := range events {
result = append(result, &pb.AuditEvent{
Id: e.ID,
EventTime: e.EventTime,
EventType: e.EventType,
ActorId: e.ActorID,
Repository: e.Repository,
Digest: e.Digest,
IpAddress: e.IPAddress,
Details: e.Details,
})
}
return &pb.ListAuditEventsResponse{Events: result}, nil
}