Existing extra fields for entities are now cleared if a field is deleted
This commit is contained in:
@@ -5,6 +5,7 @@ from collections.abc import Sequence
|
||||
from datetime import datetime
|
||||
from typing import Optional, Union
|
||||
|
||||
import sqlalchemy
|
||||
from sqlalchemy import func, select
|
||||
from sqlalchemy.exc import IntegrityError
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
@@ -175,6 +176,13 @@ async def delete(db: AsyncSession, filament_id: int) -> None:
|
||||
raise ItemDeleteError("Failed to delete filament.") from exc
|
||||
|
||||
|
||||
async def clear_extra_field(db: AsyncSession, key: str) -> None:
|
||||
"""Delete all extra fields with a specific key."""
|
||||
await db.execute(
|
||||
sqlalchemy.delete(models.FilamentField).where(models.FilamentField.key == key),
|
||||
)
|
||||
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
|
||||
@@ -200,6 +200,13 @@ async def delete(db: AsyncSession, spool_id: int) -> None:
|
||||
await spool_changed(spool, EventType.DELETED)
|
||||
|
||||
|
||||
async def clear_extra_field(db: AsyncSession, key: str) -> None:
|
||||
"""Delete all extra fields with a specific key."""
|
||||
await db.execute(
|
||||
sqlalchemy.delete(models.SpoolField).where(models.SpoolField.key == key),
|
||||
)
|
||||
|
||||
|
||||
async def use_weight_safe(db: AsyncSession, spool_id: int, weight: float) -> None:
|
||||
"""Consume filament from a spool by weight in a way that is safe against race conditions.
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
from datetime import datetime
|
||||
from typing import Optional
|
||||
|
||||
import sqlalchemy
|
||||
from sqlalchemy import func, select
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
|
||||
@@ -106,6 +107,13 @@ async def delete(db: AsyncSession, vendor_id: int) -> None:
|
||||
await vendor_changed(vendor, EventType.DELETED)
|
||||
|
||||
|
||||
async def clear_extra_field(db: AsyncSession, key: str) -> None:
|
||||
"""Delete all extra fields with a specific key."""
|
||||
await db.execute(
|
||||
sqlalchemy.delete(models.VendorField).where(models.VendorField.key == key),
|
||||
)
|
||||
|
||||
|
||||
async def vendor_changed(vendor: models.Vendor, typ: EventType) -> None:
|
||||
"""Notify websocket clients that a vendor has changed."""
|
||||
await websocket_manager.send(
|
||||
|
||||
Reference in New Issue
Block a user