diff --git a/wacruit/src/apps/history/schemas.py b/wacruit/src/apps/history/schemas.py index f829fc9..68daf0e 100644 --- a/wacruit/src/apps/history/schemas.py +++ b/wacruit/src/apps/history/schemas.py @@ -1,10 +1,14 @@ from pydantic import BaseModel +from wacruit.src.apps.common.schemas import OrmModel + class UpdateHistoryRequest(BaseModel): class Config: extra = "allow" -class HistoryResponse(BaseModel): - __root__: dict[str, str] +class HistoryResponse(OrmModel): + id: int + history_key: str + history_value: str diff --git a/wacruit/src/apps/history/views.py b/wacruit/src/apps/history/views.py index 4f00392..b1c3966 100644 --- a/wacruit/src/apps/history/views.py +++ b/wacruit/src/apps/history/views.py @@ -17,19 +17,16 @@ def update_history( history_service: Annotated[HistoryService, Depends()], update_request: UpdateHistoryRequest, ): - updated_history = history_service.update_history(update_request) - response_dict = {} - for h in updated_history: - response_dict[h.history_key] = h.history_value + updated_history_list = history_service.update_history(update_request) - return HistoryResponse(__root__=response_dict) + return [ + HistoryResponse.from_orm(updated_history) + for updated_history in updated_history_list + ] @v3_router.get("") def get_history(history_service: Annotated[HistoryService, Depends()]): history_list = history_service.get_history() - response_dict = {} - for h in history_list: - response_dict[h.history_key] = h.history_value - return HistoryResponse(__root__=response_dict) + return [HistoryResponse.from_orm(history) for history in history_list] diff --git a/wacruit/src/apps/project/models.py b/wacruit/src/apps/project/models.py index 22a8410..fcf94e0 100644 --- a/wacruit/src/apps/project/models.py +++ b/wacruit/src/apps/project/models.py @@ -13,7 +13,9 @@ from wacruit.src.database.base import intpk from wacruit.src.database.base import str30 from wacruit.src.database.base import str50 +from wacruit.src.database.base import str100 from wacruit.src.database.base import str255 +from wacruit.src.database.base import str1500 if TYPE_CHECKING: from wacruit.src.apps.member.models import Member @@ -24,8 +26,8 @@ class Project(DeclarativeBase): id: Mapped[intpk] name: Mapped[str30] - summary: Mapped[str50 | None] - introduction: Mapped[str255 | None] + summary: Mapped[str100 | None] + introduction: Mapped[str1500 | None] thumbnail_url: Mapped[str255 | None] project_type: Mapped[ProjectType] is_active: Mapped[bool] = mapped_column(default=True) diff --git a/wacruit/src/apps/review/models.py b/wacruit/src/apps/review/models.py index 168bcbf..f4bef5c 100644 --- a/wacruit/src/apps/review/models.py +++ b/wacruit/src/apps/review/models.py @@ -9,6 +9,7 @@ from wacruit.src.database.base import intpk from wacruit.src.database.base import str30 from wacruit.src.database.base import str255 +from wacruit.src.database.base import str1500 if TYPE_CHECKING: from wacruit.src.apps.member.models import Member @@ -19,7 +20,7 @@ class Review(DeclarativeBase): id: Mapped[intpk] title: Mapped[str30] - content: Mapped[str255] + content: Mapped[str1500] member_id: Mapped[int] = mapped_column(ForeignKey("member.id")) member: Mapped["Member"] = relationship(back_populates="review") diff --git a/wacruit/src/database/base.py b/wacruit/src/database/base.py index d848cb2..c5446f1 100644 --- a/wacruit/src/database/base.py +++ b/wacruit/src/database/base.py @@ -10,4 +10,6 @@ intpk = Annotated[int, mapped_column(primary_key=True, autoincrement=True)] str30 = Annotated[str, mapped_column(String(30))] str50 = Annotated[str, mapped_column(String(50))] +str100 = Annotated[str, mapped_column(String(100))] str255 = Annotated[str, mapped_column(String(255))] +str1500 = Annotated[str, mapped_column(String(1500))] diff --git a/wacruit/src/database/migrations/versions/2025_07_21_1804-b306477282a1_fix_project_introduction_length.py b/wacruit/src/database/migrations/versions/2025_07_21_1804-b306477282a1_fix_project_introduction_length.py new file mode 100644 index 0000000..63337b0 --- /dev/null +++ b/wacruit/src/database/migrations/versions/2025_07_21_1804-b306477282a1_fix_project_introduction_length.py @@ -0,0 +1,68 @@ +"""fix project introduction length + +Revision ID: b306477282a1 +Revises: 599c54cee280 +Create Date: 2025-07-21 18:04:36.099890 + +""" +from alembic import op +import sqlalchemy as sa +from sqlalchemy.dialects import mysql + +# revision identifiers, used by Alembic. +revision = "b306477282a1" +down_revision = "599c54cee280" +branch_labels = None +depends_on = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.alter_column( + "project", + "summary", + existing_type=mysql.VARCHAR(length=50), + type_=sa.String(length=100), + existing_nullable=True, + ) + op.alter_column( + "project", + "introduction", + existing_type=mysql.VARCHAR(length=255), + type_=sa.String(length=1500), + existing_nullable=True, + ) + op.alter_column( + "review", + "content", + existing_type=mysql.VARCHAR(length=255), + type_=sa.String(length=1500), + existing_nullable=False, + ) + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.alter_column( + "review", + "content", + existing_type=sa.String(length=1500), + type_=mysql.VARCHAR(length=255), + existing_nullable=False, + ) + op.alter_column( + "project", + "introduction", + existing_type=sa.String(length=1500), + type_=mysql.VARCHAR(length=255), + existing_nullable=True, + ) + op.alter_column( + "project", + "summary", + existing_type=sa.String(length=100), + type_=mysql.VARCHAR(length=50), + existing_nullable=True, + ) + # ### end Alembic commands ###