from sqlalchemy import ForeignKey, Integer, UniqueConstraint from sqlalchemy.orm import Mapped, mapped_column, relationship from fooder.domain.base import Base, CommonMixin from fooder.domain.product import Product from fooder.domain.user import User class UserProductUsage(Base, CommonMixin): """Counts how many processed entries a user has for a product. Used to sort products by usage frequency.""" __table_args__ = (UniqueConstraint("user_id", "product_id"),) product_id: Mapped[int] = mapped_column(Integer, ForeignKey("product.id")) product: Mapped[Product] = relationship(lazy="selectin") user_id: Mapped[int] = mapped_column(Integer, ForeignKey("user.id")) user: Mapped[User] = relationship(lazy="selectin") count: Mapped[int]