mirror of
https://github.com/maziggy/bambuddy.git
synced 2026-10-21 10:15:04 +02:00
Fixed bug, where deleted printer was not removed from maintenance
This commit is contained in:
@@ -117,7 +117,10 @@ async def delete_printer(
|
||||
delete_archives: If True (default), delete all print archives for this printer.
|
||||
If False, keep archives but remove their printer association.
|
||||
"""
|
||||
from sqlalchemy import delete as sql_delete
|
||||
|
||||
from backend.app.models.archive import PrintArchive
|
||||
from backend.app.models.maintenance import MaintenanceHistory, PrinterMaintenance
|
||||
|
||||
result = await db.execute(select(Printer).where(Printer.id == printer_id))
|
||||
printer = result.scalar_one_or_none()
|
||||
@@ -132,6 +135,19 @@ async def delete_printer(
|
||||
|
||||
await db.execute(update(PrintArchive).where(PrintArchive.printer_id == printer_id).values(printer_id=None))
|
||||
|
||||
# Delete maintenance history and items for this printer
|
||||
# (SQLite doesn't enforce FK cascades, so do it explicitly)
|
||||
maintenance_ids = (
|
||||
(await db.execute(select(PrinterMaintenance.id).where(PrinterMaintenance.printer_id == printer_id)))
|
||||
.scalars()
|
||||
.all()
|
||||
)
|
||||
if maintenance_ids:
|
||||
await db.execute(
|
||||
sql_delete(MaintenanceHistory).where(MaintenanceHistory.printer_maintenance_id.in_(maintenance_ids))
|
||||
)
|
||||
await db.execute(sql_delete(PrinterMaintenance).where(PrinterMaintenance.printer_id == printer_id))
|
||||
|
||||
await db.delete(printer)
|
||||
await db.commit()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user