[rewrite] Updated models a bit, preparing to make first functional routes

This commit is contained in:
Thastertyn committed 2025-02-23 15:56:39 +01:00
1 parent 414b84a2d4
commit f0c378b20f
21 files changed
+203 -90

No files matched your search

-5
View File
@@ -1,5 +0,0 @@
from .user_model import *
__all__ = [
*user_model.__all__
]
File renamed without changes.
Whitespace-only changes.
+6 -2
View File
@@ -22,5 +22,9 @@ class Shop(Base):
business_hours = Column(JSON, nullable=False)
links = Column(JSON, nullable=False)
users = relationship('User', back_populates='shop')
products = relationship('Product', back_populates='shop')
owner = relationship('User', back_populates='owned_shops')
registered_users = relationship('User', back_populates='registered_shop')
# products = relationship('Product', back_populates='shop')
__all__ = ["Shop"]
+18 -19
View File
@@ -1,33 +1,32 @@
from sqlalchemy import ForeignKey, Column, Integer, JSON, TIMESTAMP, String, Enum
from sqlalchemy.sql import func
from sqlalchemy import Column, String, Integer, ForeignKey, TIMESTAMP
from sqlalchemy.dialects.mysql import INTEGER
from sqlalchemy.orm import relationship
from .base_model import Base
class User(Base):
__tablename__ = "user"
__tablename__ = 'user'
id = Column(Integer, primary_key=True)
shop_id = Column(Integer, ForeignKey("shop.id"), nullable=True)
username = Column(String(64), unique=True, nullable=False)
email = Column(String(128), unique=True, nullable=False)
id = Column(INTEGER(unsigned=True), primary_key=True, autoincrement=True)
user_role_id = Column(INTEGER(unsigned=True), ForeignKey('user_role.id'), nullable=False)
shop_id = Column(Integer, ForeignKey('shop.id'), nullable=True)
username = Column(String(64), nullable=False, unique=True)
email = Column(String(128), nullable=False, unique=True)
password = Column(String(60), nullable=False)
role = Column(Enum("customer", "employee", "manager", "owner", "admin", name="user_role"), nullable=False, default="customer")
first_name = Column(String(64), nullable=True)
last_name = Column(String(64), nullable=True)
phone_number = Column(String(15), nullable=True)
created_at = Column(TIMESTAMP, default=func.now, nullable=True)
updated_at = Column(TIMESTAMP, default=func.now, onupdate=func.now, nullable=True)
last_login = Column(TIMESTAMP, nullable=True)
phone_number = Column(String(15), nullable=False)
profile_picture = Column(String(100), nullable=True)
preferences = Column(JSON, nullable=True)
created_at = Column(TIMESTAMP, nullable=False, server_default="CURRENT_TIMESTAMP")
updated_at = Column(TIMESTAMP, nullable=False, server_default="CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP")
last_login = Column(TIMESTAMP, nullable=True, server_default="CURRENT_TIMESTAMP")
shop = relationship("Shop", back_populates="users")
carts = relationship("Cart", back_populates="user")
purchases = relationship("Purchase", back_populates="user")
statistics = relationship("UserStatistics", back_populates="user")
wishlists = relationship("Wishlist", back_populates="user")
owned_shops = relationship("Shop", back_populates="owner")
registered_shop = relationship("Shop", back_populates="registered_users")
role = relationship("UserRole", back_populates="users")
preferences = relationship("UserPreferences", uselist=False, back_populates="user")
statistics = relationship("UserStatistics", uselist=False, back_populates="user_statistics")
__all__ = ["User"]
+11
View File
@@ -0,0 +1,11 @@
from sqlalchemy import Column, ForeignKey
from sqlalchemy.dialects.mysql import INTEGER
from sqlalchemy.orm import relationship
from .base_model import Base
class UserPreferences(Base):
__tablename__ = 'user_preferences'
user_id = Column(INTEGER(unsigned=True), ForeignKey('user.id'), primary_key=True)
user = relationship("User", back_populates="preferences")
+16
View File
@@ -0,0 +1,16 @@
from sqlalchemy import Column, String
from sqlalchemy.dialects.mysql import INTEGER
from sqlalchemy.orm import relationship
from .base_model import Base
class UserRole(Base):
__tablename__ = 'user_role'
id = Column(INTEGER(unsigned=True), primary_key=True, autoincrement=True)
name = Column(String(45), nullable=False, unique=True)
users = relationship("User", back_populates="role")
__all__ = ["UserRole"]
+3 -2
View File
@@ -1,11 +1,12 @@
from sqlalchemy import Column, Integer, Float, ForeignKey
from sqlalchemy import Column, Float, ForeignKey
from sqlalchemy.dialects.mysql import INTEGER
from sqlalchemy.orm import relationship
from .base_model import Base
class UserStatistics(Base):
__tablename__ = "user_statistics"
user_id = Column(Integer, ForeignKey("user.id", ondelete="CASCADE"), primary_key=True)
user_id = Column(INTEGER(unsigned=True), ForeignKey("user.id", ondelete="CASCADE"), primary_key=True)
total_spend = Column(Float, nullable=True)
user = relationship("User", back_populates="user_statistics", foreign_keys=[user_id])