From 8e796c9cfcd65f6225a6ae3ec2a4419f265b0ebc Mon Sep 17 00:00:00 2001 From: alex Date: Fri, 17 Jul 2026 18:16:35 +0200 Subject: inventory-service init --- inventory-service/app/models/inventory.py | 60 +++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 inventory-service/app/models/inventory.py (limited to 'inventory-service/app/models') diff --git a/inventory-service/app/models/inventory.py b/inventory-service/app/models/inventory.py new file mode 100644 index 0000000..531d1ec --- /dev/null +++ b/inventory-service/app/models/inventory.py @@ -0,0 +1,60 @@ +from sqlalchemy import Column, Integer, String, DateTime, ForeignKey, UniqueConstraint +from sqlalchemy.orm import relationship +from sqlalchemy.sql import func +from app.core.database import Base + + +class Product(Base): + __tablename__ = "products" + + id = Column(Integer, primary_key=True, index=True) + name = Column(String(255), nullable=False) + sku = Column(String(100), unique=True, nullable=False, index=True) + quantity_in_stock = Column(Integer, nullable=False, default=0) + + created_at = Column( + DateTime(timezone=True), server_default=func.now(), nullable=False + ) + updated_at = Column( + DateTime(timezone=True), + server_default=func.now(), + onupdate=func.now(), + nullable=False, + ) + + stock_movements = relationship( + "StockMovement", back_populates="product", cascade="all, delete-orphan" + ) + + +class StockMovement(Base): + __tablename__ = "stock_movements" + + id = Column(Integer, primary_key=True, index=True) + product_id = Column( + Integer, + ForeignKey("products.id", ondelete="CASCADE"), + nullable=False, + index=True, + ) + order_id = Column(Integer, nullable=False, index=True) + + movement_type = Column(String(50), nullable=False) + quantity_change = Column(Integer, nullable=False) + + created_at = Column( + DateTime(timezone=True), server_default=func.now(), nullable=False + ) + + product = relationship("Product", back_populates="stock_movements") + + +class ProcessedEvent(Base): + __tablename__ = "processed_events" + + id = Column(Integer, primary_key=True, index=True) + order_id = Column(Integer, unique=True, nullable=False, index=True) + + processed_at = Column( + DateTime(timezone=True), server_default=func.now(), nullable=False + ) -- cgit v1.2.3