1
0
Fork 0
forked from Fuji/Fuji
Fuji/src/sqlitehandlernr.py

83 lines
No EOL
2.6 KiB
Python

from sqlmodel import *
from datetime import datetime, timedelta
from sqlalchemy import func
from typing import Optional
class Grades(SQLModel, table=True):
id: int = Field(default=None, primary_key=True) # Add an auto-incrementing id
value: str # value is no longer a primary key
is_point: bool
point_numerator: Optional[float] = None
point_denominator: Optional[float] = None
weight: float
name: str
created_at: datetime
subject: str
creator: str
class Notes(SQLModel, table=True):
id: int = Field(default=None, primary_key=True) # Add an auto-incrementing id
name: Optional[str] = Field(default=None, nullable=True)
content: Optional[str] = Field(default=None, nullable=True)
points: Optional[str] = Field(default=None, nullable=True)
creator: str
created_at: datetime
engine = create_engine("sqlite:///database.db")
SQLModel.metadata.create_all(engine)
def create_grades_database(grades_list):
with Session(engine) as session:
session.execute(delete(Grades))
for grade in grades_list:
grade_obj = Grades(
value=grade.value,
is_point=grade.is_point,
point_numerator=grade.point_numerator,
point_denominator=grade.point_denominator,
weight=grade.weight,
name=grade.name,
created_at=grade.created_at,
subject=grade.subject,
creator=grade.creator,
)
session.add(grade_obj)
session.commit()
def fetch_grades_this_week():
today = datetime.today()
start_of_week = today - timedelta(days=today.weekday())
end_of_week = start_of_week + timedelta(days=7)
with Session(engine) as session:
grades = session.query(Grades).filter(Grades.created_at >= start_of_week, Grades.created_at < end_of_week).all()
return grades
def fetch_all_grades():
with Session(engine) as session:
grades = session.query(Grades).all()
return grades
def create_notes_database(notes_list):
with Session(engine) as session:
session.execute(delete(Notes))
for note in notes_list:
note_obj = Notes(
name=note.name or "Untitled",
content=note.content,
points=note.points or "None",
creator=note.creator,
created_at=note.created_at,
)
session.add(note_obj)
session.commit()
def fetch_all_notes():
with Session(engine) as session:
notes = session.query(Notes).all()
return notes