[rewrite] Updated models a bit, preparing to make first functional routes
This commit is contained in:
1 parent
414b84a2d4
commit
f0c378b20f
21 files changed
+203
-90
No files matched your search
@@ -1,5 +0,0 @@
|
||||
from .user_model import *
|
||||
|
||||
__all__ = [
|
||||
*user_model.__all__
|
||||
]
|
||||
File renamed without changes.
File renamed without changes.
Whitespace-only changes.
File renamed without changes.
@@ -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"]
|
||||
@@ -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"]
|
||||
@@ -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")
|
||||
@@ -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"]
|
||||
@@ -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])
|
||||
Reference in new issue
Block a user