Skip to content

Commit e52ccc2

Browse files
committed
refactor: changed the column name of repeat to frequency and the type from string to Enum in event_info table
1 parent b0d457b commit e52ccc2

4 files changed

Lines changed: 21 additions & 9 deletions

File tree

src/alembic/versions/87bca29af018_create_event_table.py renamed to src/alembic/versions/4928dc3f0b07_create_event_table.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
"""create_event_table
22
3-
Revision ID: 87bca29af018
3+
Revision ID: 4928dc3f0b07
44
Revises: 0a2c458d1ddd
5-
Create Date: 2026-05-20 16:40:02.515549
5+
Create Date: 2026-05-24 17:39:22.538239
66
77
"""
88
from typing import Sequence, Union
@@ -12,7 +12,7 @@
1212

1313

1414
# revision identifiers, used by Alembic.
15-
revision: str = '87bca29af018'
15+
revision: str = '4928dc3f0b07'
1616
down_revision: Union[str, None] = '0a2c458d1ddd'
1717
branch_labels: Union[str, Sequence[str], None] = None
1818
depends_on: Union[str, Sequence[str], None] = None
@@ -26,9 +26,10 @@ def upgrade() -> None:
2626
sa.Column('name', sa.String(length=64), nullable=False),
2727
sa.Column('start_time', sa.DateTime(timezone=True), nullable=False),
2828
sa.Column('end_time', sa.DateTime(timezone=True), nullable=False),
29-
sa.Column('repeat', sa.String(length=64), nullable=False),
29+
sa.Column('frequency', sa.String(length=64), server_default=sa.text("'NONE'"), nullable=True),
3030
sa.Column('repeat_start_date', sa.Date(), nullable=True),
3131
sa.Column('repeat_end_date', sa.Date(), nullable=True),
32+
sa.CheckConstraint("frequency IN ('NONE', 'DAILY', 'WEEKLY', 'MONTHLY', 'SEMESTERLY', 'YEARLY')", name=op.f('ck_event_info_valid_frequency_value')),
3233
sa.CheckConstraint('repeat_start_date < repeat_end_date', name=op.f('ck_event_info_check_repeat_start_date_before_repeat_end_date')),
3334
sa.CheckConstraint('start_time < end_time', name=op.f('ck_event_info_check_start_time_before_end_time')),
3435
sa.PrimaryKeyConstraint('eid', name=op.f('pk_event_info'))

src/event/constants.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
from enum import StrEnum
2+
3+
class EventFrequencyEnum(StrEnum):
4+
NONE = "NONE"
5+
DAILY = "DAILY"
6+
WEEKLY = "WEEKLY"
7+
MONTHLY = "MONTHLY"
8+
SEMESTERLY = "SEMESTERLY"
9+
YEARLY = "YEARLY"

src/event/models.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import datetime
2-
2+
from event.constants import EventFrequencyEnum
33
from pydantic import BaseModel, ConfigDict, model_validator
44

55

@@ -8,7 +8,7 @@ class BaseEvent(BaseModel):
88
start_time: datetime.datetime
99
end_time: datetime.datetime
1010
description: str | None = None
11-
repeat: str | None = None
11+
frequency: EventFrequencyEnum | None = None
1212
repeat_start_date: datetime.date | None = None
1313
repeat_end_date: datetime.date | None = None
1414

@@ -42,7 +42,7 @@ class EventUpdate(BaseModel):
4242
start_time: datetime.datetime | None = None
4343
end_time: datetime.datetime | None = None
4444
description: str | None = None
45-
repeat: str | None = None
45+
frequency: EventFrequencyEnum | None = None
4646
repeat_start_date: datetime.date | None = None
4747
repeat_end_date: datetime.date | None = None
4848

src/event/tables.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from datetime import date, datetime
2+
from event.constants import EventFrequencyEnum
23

3-
from sqlalchemy import CheckConstraint, Date, DateTime, Integer, String, Text
4+
from sqlalchemy import CheckConstraint, Date, DateTime, Integer, String, Text, text
45
from sqlalchemy.orm import Mapped, mapped_column
56

67
from database import Base
@@ -14,11 +15,12 @@ class EventDB(Base):
1415
name: Mapped[str] = mapped_column(String(64))
1516
start_time: Mapped[datetime] = mapped_column(DateTime(timezone=True))
1617
end_time: Mapped[datetime] = mapped_column(DateTime(timezone=True))
17-
repeat: Mapped[str] = mapped_column(String(64))
18+
frequency: Mapped[EventFrequencyEnum] = mapped_column(String(64), server_default=text("'NONE'"), nullable=True)
1819
repeat_start_date: Mapped[date] = mapped_column(Date, nullable=True)
1920
repeat_end_date: Mapped[date] = mapped_column(Date, nullable=True)
2021

2122
__table_args__ = (
2223
CheckConstraint("start_time < end_time", name="check_start_time_before_end_time"),
2324
CheckConstraint("repeat_start_date < repeat_end_date", name="check_repeat_start_date_before_repeat_end_date"),
25+
CheckConstraint(frequency.in_([e.value for e in EventFrequencyEnum]), name="valid_frequency_value")
2426
)

0 commit comments

Comments
 (0)