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

View File

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