|
|
@@ -31,33 +31,25 @@ class Base(DeclarativeBase):
|
|
|
|
|
|
def uid_column() -> Mapped[str]:
|
|
|
"""Returns a postgreSQL UUID column for SQL ORM"""
|
|
|
- return mapped_column(
|
|
|
- UUID(as_uuid=False), primary_key=True, default=lambda _: str(uuid.uuid4())
|
|
|
- )
|
|
|
+ return mapped_column(UUID(as_uuid=False), primary_key=True, default=lambda _: str(uuid.uuid4()))
|
|
|
|
|
|
|
|
|
class User(Base):
|
|
|
__tablename__ = "user_model"
|
|
|
|
|
|
id: Mapped[str] = uid_column()
|
|
|
- email: Mapped[str] = mapped_column(
|
|
|
- String(254), nullable=False, unique=True, index=True
|
|
|
- )
|
|
|
+ email: Mapped[str] = mapped_column(String(254), nullable=False, unique=True, index=True)
|
|
|
hashed_password: Mapped[str] = mapped_column(String(128), nullable=False)
|
|
|
|
|
|
|
|
|
class Project(Base):
|
|
|
__tablename__ = "projects"
|
|
|
id: Mapped[str] = uid_column()
|
|
|
- created_at: Mapped[datetime] = mapped_column(
|
|
|
- DateTime(timezone=True), server_default=func.now()
|
|
|
- )
|
|
|
+ created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), server_default=func.now())
|
|
|
updated_at: Mapped[datetime] = mapped_column(
|
|
|
DateTime(timezone=True), default=datetime.now, onupdate=func.now()
|
|
|
)
|
|
|
- name: Mapped[str] = mapped_column(
|
|
|
- String(128), nullable=False, unique=True, index=True
|
|
|
- )
|
|
|
+ name: Mapped[str] = mapped_column(String(128), nullable=False, unique=True, index=True)
|
|
|
is_public: Mapped[bool] = mapped_column(Boolean())
|
|
|
volunteers: Mapped[list["Volunteer"]] = relationship(
|
|
|
back_populates="project", cascade="delete, delete-orphan"
|
|
|
@@ -91,13 +83,9 @@ association_table_volunteer_slot = Table(
|
|
|
class Volunteer(Base):
|
|
|
__tablename__ = "volunteers"
|
|
|
id: Mapped[str] = uid_column()
|
|
|
- project_id: Mapped[str] = mapped_column(
|
|
|
- ForeignKey("projects.id", ondelete="CASCADE")
|
|
|
- )
|
|
|
+ project_id: Mapped[str] = mapped_column(ForeignKey("projects.id", ondelete="CASCADE"))
|
|
|
project: Mapped["Project"] = relationship(back_populates="volunteers")
|
|
|
- created_at: Mapped[datetime] = mapped_column(
|
|
|
- DateTime(timezone=True), server_default=func.now()
|
|
|
- )
|
|
|
+ created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), server_default=func.now())
|
|
|
updated_at: Mapped[datetime] = mapped_column(
|
|
|
DateTime(timezone=True), default=datetime.now, onupdate=func.now()
|
|
|
)
|
|
|
@@ -110,6 +98,7 @@ class Volunteer(Base):
|
|
|
secondary=association_table_volunteer_slot, back_populates="volunteers"
|
|
|
)
|
|
|
comment: Mapped[str] = mapped_column(String(), default="")
|
|
|
+ sms: Mapped[list["Sms"]] = relationship(back_populates="volunteer", cascade="all, delete")
|
|
|
|
|
|
@hybrid_property
|
|
|
def slots_id(self) -> list[str]:
|
|
|
@@ -120,14 +109,10 @@ class Slot(Base):
|
|
|
__tablename__ = "slots"
|
|
|
|
|
|
id: Mapped[str] = uid_column()
|
|
|
- project_id: Mapped[str] = mapped_column(
|
|
|
- ForeignKey("projects.id", ondelete="CASCADE")
|
|
|
- )
|
|
|
+ project_id: Mapped[str] = mapped_column(ForeignKey("projects.id", ondelete="CASCADE"))
|
|
|
project: Mapped["Project"] = relationship(back_populates="slots")
|
|
|
|
|
|
- created_at: Mapped[datetime] = mapped_column(
|
|
|
- DateTime(timezone=True), server_default=func.now()
|
|
|
- )
|
|
|
+ created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), server_default=func.now())
|
|
|
updated_at: Mapped[datetime] = mapped_column(
|
|
|
DateTime(timezone=True), default=datetime.now, onupdate=func.now()
|
|
|
)
|
|
|
@@ -168,14 +153,10 @@ class SlotTag(Base):
|
|
|
__tablename__ = "slot_tags"
|
|
|
|
|
|
id: Mapped[str] = uid_column()
|
|
|
- project_id: Mapped[str] = mapped_column(
|
|
|
- ForeignKey("projects.id", ondelete="CASCADE")
|
|
|
- )
|
|
|
+ project_id: Mapped[str] = mapped_column(ForeignKey("projects.id", ondelete="CASCADE"))
|
|
|
project: Mapped["Project"] = relationship(back_populates="tags")
|
|
|
|
|
|
- created_at: Mapped[datetime] = mapped_column(
|
|
|
- DateTime(timezone=True), server_default=func.now()
|
|
|
- )
|
|
|
+ created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), server_default=func.now())
|
|
|
updated_at: Mapped[datetime] = mapped_column(
|
|
|
DateTime(timezone=True), default=datetime.now, onupdate=func.now()
|
|
|
)
|
|
|
@@ -194,14 +175,10 @@ class SlotTemplate(Base):
|
|
|
__tablename__ = "slot_templates"
|
|
|
|
|
|
id: Mapped[str] = uid_column()
|
|
|
- project_id: Mapped[str] = mapped_column(
|
|
|
- ForeignKey("projects.id", ondelete="CASCADE")
|
|
|
- )
|
|
|
+ project_id: Mapped[str] = mapped_column(ForeignKey("projects.id", ondelete="CASCADE"))
|
|
|
project: Mapped["Project"] = relationship(back_populates="templates")
|
|
|
|
|
|
- created_at: Mapped[datetime] = mapped_column(
|
|
|
- DateTime(timezone=True), server_default=func.now()
|
|
|
- )
|
|
|
+ created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), server_default=func.now())
|
|
|
updated_at: Mapped[datetime] = mapped_column(
|
|
|
DateTime(timezone=True), default=datetime.now, onupdate=func.now()
|
|
|
)
|
|
|
@@ -233,23 +210,18 @@ class Sms(Base):
|
|
|
id: Mapped[str] = mapped_column(
|
|
|
UUID(as_uuid=False), primary_key=True, default=lambda _: str(uuid.uuid4())
|
|
|
)
|
|
|
- project_id: Mapped[str] = mapped_column(
|
|
|
- ForeignKey("projects.id", ondelete="CASCADE")
|
|
|
- )
|
|
|
+ project_id: Mapped[str] = mapped_column(ForeignKey("projects.id", ondelete="CASCADE"))
|
|
|
project: Mapped["Project"] = relationship(back_populates="sms")
|
|
|
|
|
|
volunteer_id: Mapped[str] = mapped_column(
|
|
|
- ForeignKey("volunteers.id"), nullable=True
|
|
|
- )
|
|
|
- created_at: Mapped[datetime] = mapped_column(
|
|
|
- DateTime(timezone=True), server_default=func.now()
|
|
|
+ ForeignKey("volunteers.id", ondelete="CASCADE", onupdate="CASCADE"), nullable=True
|
|
|
)
|
|
|
+ volunteer: Mapped["Volunteer"] = relationship(back_populates="sms", cascade="all, delete")
|
|
|
+ created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), server_default=func.now())
|
|
|
updated_at: Mapped[datetime] = mapped_column(
|
|
|
DateTime(timezone=True), default=datetime.now, onupdate=func.now()
|
|
|
)
|
|
|
content: Mapped[str] = mapped_column(String(), nullable=False)
|
|
|
phone_number: Mapped[str] = mapped_column(String(24))
|
|
|
- sending_time: Mapped[datetime] = mapped_column(
|
|
|
- DateTime(timezone=True), default=datetime.now
|
|
|
- )
|
|
|
+ sending_time: Mapped[datetime] = mapped_column(DateTime(timezone=True), default=datetime.now)
|
|
|
send_time: Mapped[datetime] = mapped_column(DateTime(timezone=True), nullable=True)
|