tomoya il y a 2 ans
Parent
commit
5927d3b018

+ 2 - 0
backend/app/app/db/base.py

@@ -3,4 +3,6 @@
 from app.db.base_class import Base  # noqa
 from app.models.item import Item  # noqa
 from app.models.user import User  # noqa
+from app.models.user import Membership
 from app.models.video import Video
+from app.models.video import Progress

+ 2 - 0
backend/app/app/db/init_db.py

@@ -23,3 +23,5 @@ def init_db(db: Session) -> None:
             is_superuser=True,
         )
         user = crud.user.create(db, obj_in=user_in)  # noqa: F841
+
+    

+ 12 - 0
backend/app/app/models/enum.py

@@ -0,0 +1,12 @@
+from typing import TYPE_CHECKING
+
+from sqlalchemy import Column, ForeignKey, Integer, String
+from sqlalchemy.orm import relationship
+
+from app.db.base_class import Base
+
+class Membership(Base):
+  status = Column(String(20), primary_key=True)
+
+class Progress(Base):
+  state = Column(String(20), primary_key=True)

+ 6 - 11
backend/app/app/models/user.py

@@ -1,28 +1,23 @@
 from typing import TYPE_CHECKING
 
-from sqlalchemy import Boolean, Column, Integer, String, Enum
+from sqlalchemy import Boolean, Column, Integer, String, ForeignKey
 from sqlalchemy.orm import relationship
 
 from app.db.base_class import Base
 
-import enum
-
-
 if TYPE_CHECKING:
     from .item import Item  # noqa: F401
-
-
-class Membership(enum.Enum):
-  Chosen = enum.auto()
-  Normal = enum.auto()
+    from .enum import Membership
 
 class User(Base):
   id = Column(Integer, primary_key=True, index=True)
   full_name = Column(String, index=True)
   email = Column(String, unique=True, index=True, nullable=False)
   hashed_password = Column(String, nullable=False)
-  membership = Column(Enum(Membership), nullable=False, default=Membership.Normal)
-  time = Column(Integer, default=0)
+  membership = Column(String(20), 
+                      ForeignKey("membership.status", onupdate="CASCASE", ondelete="RESTRICT"), 
+                      nullable=False)
+  time = Column(Integer, default=60, nullable=False)
   is_active = Column(Boolean(), default=True)
   is_superuser = Column(Boolean(), default=False)
   items = relationship("Item", back_populates="owner")

+ 6 - 8
backend/app/app/models/video.py

@@ -5,19 +5,17 @@ from sqlalchemy.orm import relationship
 
 from app.db.base_class import Base
 
-import enum
 
 if TYPE_CHECKING:
-    from .user import User  # noqa: F401
-
-class Progress(enum.Enum):
-  WAITING = enum.auto()
-  PROCESSING = enum.auto()
-  COMPLETE = enum.auto()
+  from .user import User  # noqa: F401
+  from .enum import Progress
 
 class Video(Base):
   id = Column(Integer, primary_key=True, index=True)
   title = Column(String, index=True)
-  progress = Column(Enum(Progress))
+  progress = Column(String(20), 
+                    ForeignKey("progress.state", ondelete="STRICT", onupdate="STRICT"),
+                    defalt="waiting",
+                    nullable=False)
   owner_id = Column(Integer, ForeignKey("user.id"))
   owner = relationship("User", back_populates="videos")