Skip to content
Snippets Groups Projects
Commit 40c71459 authored by Adrian Block's avatar Adrian Block
Browse files

🐛 fixed multiple semesters with same name in newest

parent e0a0529d
No related branches found
No related tags found
1 merge request!3Dev
Pipeline #
import datetime
from typing import List
from typing import List, Dict
from sqlalchemy import func, and_
from sqlalchemy.orm import Session
......@@ -37,11 +37,13 @@ class DatabaseBroker(Broker):
return self.session.query(models.Semester).all()
def get_newest_semesters(self) -> List[schemas.SemesterWithoutCoursesButId]:
# query every semester, but only return the newest one
sq = self.session.query(models.Semester.name.label("name"), func.max(models.Semester.created).label("created")) \
.group_by(models.Semester.name).subquery()
return self.session.query(models.Semester) \
.join(sq, and_(models.Semester.name == sq.c.name, models.Semester.created == sq.c.created)).all()
semesters: List[schemas.SemesterWithoutCoursesButId] = self.session.query(models.Semester).all()
semester_map: Dict[str, schemas.SemesterWithoutCoursesButId] = {}
for semester in semesters:
if (semester_map.get(semester.name) and semester.id > semester_map[semester.name].id)\
or not semester_map.get(semester.name):
semester_map[semester.name] = semester
return list(semester_map.values())
def get_all_courses_of_semester(self, semester_id: int) -> List[schemas.CourseWithoutAppointments]:
return self.session.query(models.Course).join(models.Semester).filter(models.Semester.id == semester_id).all()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment