mirror of
https://github.com/sysadminsmedia/homebox.git
synced 2025-12-30 17:47:24 +01:00
Fix wipe inventory: delete maintenance records before items
Co-authored-by: katosdev <7927609+katosdev@users.noreply.github.com>
This commit is contained in:
@@ -810,6 +810,22 @@ func (e *ItemsRepository) DeleteByGroup(ctx context.Context, gid, id uuid.UUID)
|
||||
}
|
||||
|
||||
func (e *ItemsRepository) WipeInventory(ctx context.Context, gid uuid.UUID, wipeLabels bool, wipeLocations bool, wipeMaintenance bool) (int, error) {
|
||||
deleted := 0
|
||||
|
||||
// Wipe maintenance records if requested
|
||||
// IMPORTANT: Must delete maintenance records BEFORE items since they are linked to items
|
||||
if wipeMaintenance {
|
||||
maintenanceCount, err := e.db.MaintenanceEntry.Delete().
|
||||
Where(maintenanceentry.HasItemWith(item.HasGroupWith(group.ID(gid)))).
|
||||
Exec(ctx)
|
||||
if err != nil {
|
||||
log.Err(err).Msg("failed to delete maintenance entries during wipe inventory")
|
||||
} else {
|
||||
log.Info().Int("count", maintenanceCount).Msg("deleted maintenance entries during wipe inventory")
|
||||
deleted += maintenanceCount
|
||||
}
|
||||
}
|
||||
|
||||
// Get all items for the group
|
||||
items, err := e.db.Item.Query().
|
||||
Where(item.HasGroupWith(group.ID(gid))).
|
||||
@@ -819,7 +835,6 @@ func (e *ItemsRepository) WipeInventory(ctx context.Context, gid uuid.UUID, wipe
|
||||
return 0, err
|
||||
}
|
||||
|
||||
deleted := 0
|
||||
// Delete each item with its attachments
|
||||
// Note: We manually delete attachments and items instead of calling DeleteByGroup
|
||||
// to continue processing remaining items even if some deletions fail
|
||||
@@ -872,20 +887,6 @@ func (e *ItemsRepository) WipeInventory(ctx context.Context, gid uuid.UUID, wipe
|
||||
}
|
||||
}
|
||||
|
||||
// Wipe maintenance records if requested
|
||||
if wipeMaintenance {
|
||||
// Maintenance entries are linked to items, so we query by items in the group
|
||||
maintenanceCount, err := e.db.MaintenanceEntry.Delete().
|
||||
Where(maintenanceentry.HasItemWith(item.HasGroupWith(group.ID(gid)))).
|
||||
Exec(ctx)
|
||||
if err != nil {
|
||||
log.Err(err).Msg("failed to delete maintenance entries during wipe inventory")
|
||||
} else {
|
||||
log.Info().Int("count", maintenanceCount).Msg("deleted maintenance entries during wipe inventory")
|
||||
deleted += maintenanceCount
|
||||
}
|
||||
}
|
||||
|
||||
e.publishMutationEvent(gid)
|
||||
return deleted, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user