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

1from __future__ import annotations 

2from typing import TYPE_CHECKING 

3 

4from sqlalchemy import Integer, ForeignKey 

5from sqlalchemy.orm import Mapped, mapped_column, relationship 

6 

7from dibbler.models import Base 

8 

9if TYPE_CHECKING: 

10 from dibbler.models import LastCacheTransaction, Product 

11 

12 

13class ProductCache(Base): 

14 id: Mapped[int] = mapped_column(Integer, primary_key=True) 

15 """Internal database ID""" 

16 

17 product_id: Mapped[int] = mapped_column(ForeignKey('product.id')) 

18 product: Mapped[Product] = relationship( 

19 lazy="joined", 

20 foreign_keys=[product_id], 

21 ) 

22 

23 price: Mapped[int] = mapped_column(Integer) 

24 stock: Mapped[int] = mapped_column(Integer) 

25 

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 )