9a269aa54f
- Update equipment model with Rentman-compatible fields - Add/Update equipment router endpoints for sync operations - Enhance rentman_service with full API client logic - Improve sync_service for bidirectional equipment sync - Update docker-compose with Rentman env vars - Update frontend useApi composable and nuxt config - Update mietkatalog pages with Rentman-integrated data display - Add images/ to .gitignore (binary assets, 36MB)
37 lines
1.3 KiB
Python
37 lines
1.3 KiB
Python
"""Equipment cache model (imported from Rentman)."""
|
|
from sqlalchemy import Column, Integer, String, Text, Boolean, DECIMAL, JSON, Index, TIMESTAMP, func
|
|
from app.database import Base
|
|
|
|
|
|
class EquipmentCache(Base):
|
|
__tablename__ = "equipment_cache"
|
|
|
|
id = Column(Integer, primary_key=True, autoincrement=True)
|
|
rentman_id = Column(String(64), unique=True, nullable=False)
|
|
name = Column(String(255), nullable=False)
|
|
number = Column(String(64))
|
|
category = Column(String(128))
|
|
subcategory = Column(String(128))
|
|
description = Column(Text)
|
|
specifications = Column(JSON)
|
|
images = Column(JSON)
|
|
update_hash = Column(String(128))
|
|
rental_price = Column(DECIMAL(10, 2))
|
|
brand = Column(String(128))
|
|
available = Column(Boolean, default=True)
|
|
created_at = Column(TIMESTAMP, server_default=func.now())
|
|
updated_at = Column(TIMESTAMP, server_default=func.now(), onupdate=func.now())
|
|
|
|
@property
|
|
def image_url(self) -> str | None:
|
|
"""Return local image URL if images exist, else None."""
|
|
if self.images and len(self.images) > 0:
|
|
return f"/api/equipment/{self.id}/image"
|
|
return None
|
|
|
|
__table_args__ = (
|
|
Index("idx_equipment_category", "category"),
|
|
Index("idx_equipment_name", "name"),
|
|
Index("idx_equipment_number", "number"),
|
|
)
|