Pass export filters into CSV stream helpers

Signed-off-by: Cursor Agent <cursoragent@cursor.com>

Co-authored-by: Bryan FRIMIN <bryan@frimin.fr>
Signed-off-by: Cursor Agent <cursoragent@cursor.com>
This commit is contained in:
Cursor Agent
2026-07-29 20:33:57 +00:00
parent e9567c8e65
commit bff06a3c6d
2 changed files with 19 additions and 17 deletions

View File

@@ -82,17 +82,13 @@ func (s *LogExportService) streamAuditLogCSV(
scope coredata.Scoper, scope coredata.Scoper,
organizationID gid.GID, organizationID gid.GID,
organizationName string, organizationName string,
args *coredata.LogExportArguments, filter *coredata.AuditLogEntryFilter,
w *csv.Writer, w *csv.Writer,
) error { ) error {
if err := w.Write(auditLogExportCSVHeader); err != nil { if err := w.Write(auditLogExportCSVHeader); err != nil {
return fmt.Errorf("cannot write audit log CSV header: %w", err) return fmt.Errorf("cannot write audit log CSV header: %w", err)
} }
filter := coredata.NewAuditLogEntryFilter().
WithCreatedAtGte(args.FromTime).
WithCreatedAtLt(args.ToTime)
return page.WalkAll( return page.WalkAll(
ctx, ctx,
page.OrderBy[coredata.AuditLogEntryOrderField]{ page.OrderBy[coredata.AuditLogEntryOrderField]{
@@ -114,7 +110,8 @@ func (s *LogExportService) streamAuditLogCSV(
return logs, nil return logs, nil
}, },
func(entries []*coredata.AuditLogEntry) error { func(pageEntries []*coredata.AuditLogEntry) error {
entries := coredata.AuditLogEntries(pageEntries)
actorsByID, err := loadAuditLogActorExportInfo(ctx, conn, entries) actorsByID, err := loadAuditLogActorExportInfo(ctx, conn, entries)
if err != nil { if err != nil {
return err return err
@@ -144,17 +141,13 @@ func (s *LogExportService) streamSCIMEventCSV(
scope coredata.Scoper, scope coredata.Scoper,
organizationID gid.GID, organizationID gid.GID,
organizationName string, organizationName string,
args *coredata.LogExportArguments, filter *coredata.SCIMEventFilter,
w *csv.Writer, w *csv.Writer,
) error { ) error {
if err := w.Write(scimEventExportCSVHeader); err != nil { if err := w.Write(scimEventExportCSVHeader); err != nil {
return fmt.Errorf("cannot write SCIM event CSV header: %w", err) return fmt.Errorf("cannot write SCIM event CSV header: %w", err)
} }
filter := coredata.NewSCIMEventFilter().
WithCreatedAtGte(args.FromTime).
WithCreatedAtLt(args.ToTime)
return page.WalkAll( return page.WalkAll(
ctx, ctx,
page.OrderBy[coredata.SCIMEventOrderField]{ page.OrderBy[coredata.SCIMEventOrderField]{
@@ -176,7 +169,8 @@ func (s *LogExportService) streamSCIMEventCSV(
return events, nil return events, nil
}, },
func(events []*coredata.SCIMEvent) error { func(pageEvents []*coredata.SCIMEvent) error {
events := coredata.SCIMEvents(pageEvents)
profilesByUserName, err := loadSCIMProfileExportInfo( profilesByUserName, err := loadSCIMProfileExportInfo(
ctx, ctx,
conn, conn,
@@ -256,7 +250,7 @@ func scimEventCSVRow(
func loadAuditLogActorExportInfo( func loadAuditLogActorExportInfo(
ctx context.Context, ctx context.Context,
conn pg.Querier, conn pg.Querier,
entries []*coredata.AuditLogEntry, entries coredata.AuditLogEntries,
) (map[gid.GID]auditLogActorExportInfo, error) { ) (map[gid.GID]auditLogActorExportInfo, error) {
identityIDs := make([]gid.GID, 0) identityIDs := make([]gid.GID, 0)
apiKeyIDs := make([]gid.GID, 0) apiKeyIDs := make([]gid.GID, 0)
@@ -309,7 +303,7 @@ func loadSCIMProfileExportInfo(
conn pg.Querier, conn pg.Querier,
scope coredata.Scoper, scope coredata.Scoper,
organizationID gid.GID, organizationID gid.GID,
events []*coredata.SCIMEvent, events coredata.SCIMEvents,
) (map[string]scimProfileExportInfo, error) { ) (map[string]scimProfileExportInfo, error) {
userNames := uniqueNonEmptyStrings(scimEventUserNames(events)) userNames := uniqueNonEmptyStrings(scimEventUserNames(events))
if len(userNames) == 0 { if len(userNames) == 0 {
@@ -343,7 +337,7 @@ func loadSCIMProfileExportInfo(
return result, nil return result, nil
} }
func scimEventUserNames(events []*coredata.SCIMEvent) []string { func scimEventUserNames(events coredata.SCIMEvents) []string {
userNames := make([]string, 0, len(events)) userNames := make([]string, 0, len(events))
for _, event := range events { for _, event := range events {
userNames = append(userNames, event.UserName) userNames = append(userNames, event.UserName)

View File

@@ -232,23 +232,31 @@ func (s *LogExportService) streamCSV(
switch exportJob.Type { switch exportJob.Type {
case coredata.ExportJobTypeAuditLog: case coredata.ExportJobTypeAuditLog:
filter := coredata.NewAuditLogEntryFilter().
WithCreatedAtGte(args.FromTime).
WithCreatedAtLt(args.ToTime)
return s.streamAuditLogCSV( return s.streamAuditLogCSV(
ctx, ctx,
conn, conn,
scope, scope,
exportJob.OrganizationID, exportJob.OrganizationID,
organization.Name, organization.Name,
args, filter,
w, w,
) )
case coredata.ExportJobTypeSCIMEvent: case coredata.ExportJobTypeSCIMEvent:
filter := coredata.NewSCIMEventFilter().
WithCreatedAtGte(args.FromTime).
WithCreatedAtLt(args.ToTime)
return s.streamSCIMEventCSV( return s.streamSCIMEventCSV(
ctx, ctx,
conn, conn,
scope, scope,
exportJob.OrganizationID, exportJob.OrganizationID,
organization.Name, organization.Name,
args, filter,
w, w,
) )
default: default: