Преглед изворни кода

fix db config for nullable

tripeur пре 2 година
родитељ
комит
b186e4bfbe

+ 44 - 0
alembic/versions/2023080645_fix_nullable_send_time_596121a6a2bc.py

@@ -0,0 +1,44 @@
+"""fix_nullable_send_time
+
+Revision ID: 596121a6a2bc
+Revises: 76f559337a4a
+Create Date: 2023-08-06 09:45:00.639402
+
+"""
+from alembic import op
+import sqlalchemy as sa
+from sqlalchemy.dialects import postgresql
+
+# revision identifiers, used by Alembic.
+revision = "596121a6a2bc"
+down_revision = "76f559337a4a"
+branch_labels = None
+depends_on = None
+
+
+def upgrade():
+    # ### commands auto generated by Alembic - please adjust! ###
+    op.alter_column(
+        "sms",
+        "send_time",
+        existing_type=postgresql.TIMESTAMP(timezone=True),
+        nullable=True,
+    )
+    op.alter_column(
+        "volunteers", "surname", existing_type=sa.VARCHAR(length=128), nullable=True
+    )
+    # ### end Alembic commands ###
+
+
+def downgrade():
+    # ### commands auto generated by Alembic - please adjust! ###
+    op.alter_column(
+        "volunteers", "surname", existing_type=sa.VARCHAR(length=128), nullable=False
+    )
+    op.alter_column(
+        "sms",
+        "send_time",
+        existing_type=postgresql.TIMESTAMP(timezone=True),
+        nullable=False,
+    )
+    # ### end Alembic commands ###

+ 28 - 0
alembic/versions/2023080646_remove_unique_sms_content_33a459aac32a.py

@@ -0,0 +1,28 @@
+"""remove_unique_sms_content
+
+Revision ID: 33a459aac32a
+Revises: 596121a6a2bc
+Create Date: 2023-08-06 09:46:46.191884
+
+"""
+from alembic import op
+import sqlalchemy as sa
+
+
+# revision identifiers, used by Alembic.
+revision = "33a459aac32a"
+down_revision = "596121a6a2bc"
+branch_labels = None
+depends_on = None
+
+
+def upgrade():
+    # ### commands auto generated by Alembic - please adjust! ###
+    op.drop_index("ix_sms_content", table_name="sms")
+    # ### end Alembic commands ###
+
+
+def downgrade():
+    # ### commands auto generated by Alembic - please adjust! ###
+    op.create_index("ix_sms_content", "sms", ["content"], unique=False)
+    # ### end Alembic commands ###

+ 28 - 0
alembic/versions/2023080647_add_nullable_sms_volunteer_4f1ef609b19a.py

@@ -0,0 +1,28 @@
+"""add_nullable_sms_volunteer
+
+Revision ID: 4f1ef609b19a
+Revises: 33a459aac32a
+Create Date: 2023-08-06 09:47:34.658536
+
+"""
+from alembic import op
+import sqlalchemy as sa
+
+
+# revision identifiers, used by Alembic.
+revision = "4f1ef609b19a"
+down_revision = "33a459aac32a"
+branch_labels = None
+depends_on = None
+
+
+def upgrade():
+    # ### commands auto generated by Alembic - please adjust! ###
+    op.alter_column("sms", "volunteer_id", existing_type=sa.UUID(), nullable=True)
+    # ### end Alembic commands ###
+
+
+def downgrade():
+    # ### commands auto generated by Alembic - please adjust! ###
+    op.alter_column("sms", "volunteer_id", existing_type=sa.UUID(), nullable=False)
+    # ### end Alembic commands ###

+ 9 - 9
app/models.py

@@ -58,13 +58,13 @@ class Project(Base):
     )
     is_public: Mapped[bool] = mapped_column(Boolean())
     volunteers: Mapped[list["Volunteer"]] = relationship(
-        back_populates="project", cascade="delete-orphan"
+        back_populates="project", cascade="delete, delete-orphan"
     )
     slots: Mapped[list["Slot"]] = relationship(
-        back_populates="project", cascade="delete-orphan"
+        back_populates="project", cascade="delete, delete-orphan"
     )
     sms: Mapped[list["Sms"]] = relationship(
-        back_populates="project", cascade="delete-orphan"
+        back_populates="project", cascade="delete, delete-orphan"
     )
 
 
@@ -94,7 +94,7 @@ class Volunteer(Base):
         DateTime(timezone=True), default=datetime.now, onupdate=func.now()
     )
     name: Mapped[str] = mapped_column(String(128))
-    surname: Mapped[str] = mapped_column(String(128))
+    surname: Mapped[str] = mapped_column(String(128), nullable=True)
     email: Mapped[str] = mapped_column(String(128))
     phone_number: Mapped[str] = mapped_column(String(128))
     automatic_sms: Mapped[bool] = mapped_column(Boolean(), default=False)
@@ -146,18 +146,18 @@ class Sms(Base):
     )
     project: Mapped["Project"] = relationship(back_populates="sms")
 
-    volunteer_id: Mapped[str] = mapped_column(ForeignKey("volunteers.id"))
+    volunteer_id: Mapped[str] = mapped_column(
+        ForeignKey("volunteers.id"), nullable=True
+    )
     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, unique=True, index=True
-    )
+    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
     )
-    send_time: Mapped[datetime] = mapped_column(DateTime(timezone=True))
+    send_time: Mapped[datetime] = mapped_column(DateTime(timezone=True), nullable=True)