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>
62 lines
1.4 KiB
Go
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
|
|
}
|