Add User model

This commit is contained in:
Backend IM Bot 2025-03-26 13:03:24 +00:00
parent fd1ba0f5b3
commit 5841fe78cc

View File

@ -1,11 +1,31 @@
from sqlalchemy import Column, String, Boolean from sqlalchemy import Column, String, Integer, Boolean, DateTime, ForeignKey, Float
from sqlalchemy.orm import relationship
from sqlalchemy.sql import func
from core.database import Base from core.database import Base
import uuid
from datetime import datetime
class User(Base): class User(Base):
__tablename__ = "users" __tablename__ = "users"
id = Column(String, primary_key=True) id = Column(String, primary_key=True, default=lambda: str(uuid.uuid4()))
username = Column(String, unique=True, index=True) username = Column(String, unique=True, nullable=False, index=True)
email = Column(String, unique=True, index=True) email = Column(String, unique=True, nullable=False)
hashed_password = Column(String) password = Column(String, nullable=False)
disabled = Column(Boolean, default=False) company_name = Column(String, nullable=True)
role = Column(String, nullable=False, default="user")
phone = Column(String, nullable=True)
address = Column(String, nullable=True)
is_active = Column(Boolean, default=True)
# Balance and transactions
account_balance = Column(Float, default=0.0)
# Relationships
products = relationship("Product", back_populates="owner")
orders = relationship("Order", back_populates="user")
transactions = relationship("Transaction", back_populates="user")
# Timestamps
created_at = Column(DateTime, default=func.now())
updated_at = Column(DateTime, default=func.now(), onupdate=func.now())