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:
@@ -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)
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
Reference in New Issue
Block a user