Coverage for dibbler / models / ProductCache.py: 100%
14 statements
« prev ^ index » next coverage.py v7.13.0, created at 2026-01-25 14:26 +0000
« prev ^ index » next coverage.py v7.13.0, created at 2026-01-25 14:26 +0000
1from __future__ import annotations
2from typing import TYPE_CHECKING
4from sqlalchemy import Integer, ForeignKey
5from sqlalchemy.orm import Mapped, mapped_column, relationship
7from dibbler.models import Base
9if TYPE_CHECKING:
10 from dibbler.models import LastCacheTransaction, Product
13class ProductCache(Base):
14 id: Mapped[int] = mapped_column(Integer, primary_key=True)
15 """Internal database ID"""
17 product_id: Mapped[int] = mapped_column(ForeignKey('product.id'))
18 product: Mapped[Product] = relationship(
19 lazy="joined",
20 foreign_keys=[product_id],
21 )
23 price: Mapped[int] = mapped_column(Integer)
24 stock: Mapped[int] = mapped_column(Integer)
26 last_cache_transaction_id: Mapped[int | None] = mapped_column(ForeignKey("last_cache_transaction.id"), nullable=True)
27 last_cache_transaction: Mapped[LastCacheTransaction | None] = relationship(
28 lazy="joined",
29 foreign_keys=[last_cache_transaction_id],
30 )