kanban-app/backend/app/models/product.py

44 lines
1.4 KiB
Python
Raw Normal View History

2026-02-24 16:19:15 +00:00
from datetime import UTC, datetime
from app import db
class Product(db.Model):
"""Product model"""
2026-02-24 16:19:15 +00:00
__tablename__ = "products"
2026-02-24 16:19:15 +00:00
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(200), nullable=False, index=True)
description = db.Column(db.Text)
price = db.Column(db.Numeric(10, 2), nullable=False)
stock = db.Column(db.Integer, default=0)
image_url = db.Column(db.String(500))
is_active = db.Column(db.Boolean, default=True)
2026-02-24 14:36:31 +00:00
created_at = db.Column(db.DateTime, default=lambda: datetime.now(UTC))
2026-02-24 16:19:15 +00:00
updated_at = db.Column(
db.DateTime,
default=lambda: datetime.now(UTC),
onupdate=lambda: datetime.now(UTC),
)
# Relationships
order_items = db.relationship("OrderItem", back_populates="product", lazy="dynamic")
2026-02-24 16:19:15 +00:00
def to_dict(self):
"""Convert product to dictionary"""
return {
"id": self.id,
"name": self.name,
"description": self.description,
"price": float(self.price) if self.price else None,
"stock": self.stock,
"image_url": self.image_url,
"is_active": self.is_active,
"created_at": self.created_at.isoformat() if self.created_at else None,
2026-02-24 16:19:15 +00:00
"updated_at": self.updated_at.isoformat() if self.updated_at else None,
}
2026-02-24 16:19:15 +00:00
def __repr__(self):
2026-02-24 16:19:15 +00:00
return f"<Product {self.name}>"