Skip to content

Commit f85eb84

Browse files
authored
Feature/international days (#210)
1 parent f01371f commit f85eb84

File tree

9 files changed

+2043
-71
lines changed

9 files changed

+2043
-71
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
dev.db
22
test.db
3+
.idea
34
config.py
45

56
# Byte-compiled / optimized / DLL files

app/database/models.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -422,6 +422,15 @@ class Joke(Base):
422422
text = Column(String, nullable=False)
423423

424424

425+
class InternationalDays(Base):
426+
__tablename__ = "international_days"
427+
428+
id = Column(Integer, primary_key=True, index=True)
429+
day = Column(Integer, nullable=False)
430+
month = Column(Integer, nullable=False)
431+
international_day = Column(String, nullable=False)
432+
433+
425434
# insert language data
426435

427436
# Credit to adrihanu https://stackoverflow.com/users/9127249/adrihanu

app/internal/international_days.py

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
from datetime import datetime
2+
from typing import Optional, Dict, Union
3+
4+
from sqlalchemy.orm import Session
5+
from sqlalchemy.sql.expression import func
6+
7+
from app.database.models import InternationalDays
8+
9+
10+
def get_international_day(
11+
international_day: Dict[str, Union[str, int]]
12+
) -> InternationalDays:
13+
"""Returns an international day object from the dictionary data.
14+
15+
Args:
16+
international_day: A dictionary international day
17+
related information.
18+
19+
Returns:
20+
A new international day object.
21+
"""
22+
return InternationalDays(
23+
day=international_day["day"],
24+
month=international_day["month"],
25+
international_day=international_day["international_day"],
26+
)
27+
28+
29+
def get_international_day_per_day(
30+
session: Session, date: datetime
31+
) -> Optional[InternationalDays]:
32+
day_num = date.day
33+
month = date.month
34+
international_day = (session.query(InternationalDays)
35+
.filter(InternationalDays.day == day_num)
36+
.filter(InternationalDays.month == month)
37+
.order_by(func.random())
38+
.first()
39+
)
40+
return international_day

app/internal/json_data_loader.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
from loguru import logger
66
from sqlalchemy.orm import Session
77

8-
from app.database.models import Base, Joke, Quote, Zodiac
9-
from app.internal import daily_quotes, jokes, zodiac
8+
from app.database.models import Base, InternationalDays, Joke, Quote, Zodiac
9+
from app.internal import daily_quotes, international_days, jokes, zodiac
1010

1111

1212
def load_to_database(session: Session) -> None:
@@ -35,6 +35,13 @@ def load_to_database(session: Session) -> None:
3535
daily_quotes.get_quote,
3636
)
3737

38+
_insert_into_database(
39+
session,
40+
'app/resources/international_days.json',
41+
InternationalDays,
42+
international_days.get_international_day,
43+
)
44+
3845
_insert_into_database(
3946
session,
4047
'app/resources/jokes.json',

0 commit comments

Comments
 (0)