hisham-cmd commited on
Commit
87a15ae
·
verified ·
1 Parent(s): 57e1ead

Upload app/models/user.py

Browse files
Files changed (1) hide show
  1. app/models/user.py +31 -0
app/models/user.py ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from datetime import datetime, timezone
2
+
3
+ from sqlalchemy import Column, Integer, String, DateTime, Enum as SQLEnum
4
+ import enum
5
+
6
+ from app.db.base import Base
7
+
8
+
9
+ class AuthProvider(str, enum.Enum):
10
+ LOCAL = "local"
11
+ GOOGLE = "google"
12
+
13
+
14
+ class UserRole(str, enum.Enum):
15
+ CUSTOMER = "customer"
16
+ ADMIN = "admin"
17
+
18
+
19
+ class User(Base):
20
+ __tablename__ = "users"
21
+
22
+ id = Column(Integer, primary_key=True, autoincrement=True)
23
+ name = Column(String(255), nullable=False)
24
+ email = Column(String(255), unique=True, nullable=False, index=True)
25
+ password_hash = Column(String(255), nullable=True) # nullable for Google users
26
+ phone = Column(String(50), nullable=True)
27
+ role = Column(SQLEnum(UserRole), default=UserRole.CUSTOMER, nullable=False)
28
+ avatar_url = Column(String(500), nullable=True)
29
+ auth_provider = Column(SQLEnum(AuthProvider), default=AuthProvider.LOCAL, nullable=False)
30
+ google_id = Column(String(255), unique=True, nullable=True, index=True)
31
+ created_at = Column(DateTime, default=lambda: datetime.now(timezone.utc), nullable=False)