diff --git a/data/database.py b/data/database.py index a5b8a5e..39c52bd 100644 --- a/data/database.py +++ b/data/database.py @@ -3,8 +3,54 @@ The base definitions for database access and definition """ -from sqlalchemy.orm import DeclarativeBase +import os +from dotenv import load_dotenv + +from sqlalchemy import create_engine, DateTime, Column, Integer, String +from sqlalchemy.orm import DeclarativeBase, sessionmaker + + +load_dotenv() class Base(DeclarativeBase): pass + + +class DataAccessLayer: + + def __init__(self): + self.engine = None + self.conn_string = os.getenv("DATABASE_URL") + + + def connect(self): + self.engine = create_engine(self.conn_string) + Base.metadata.create_all(self.engine) + self.Session = sessionmaker(bind=self.engine) + + +dal = DataAccessLayer() + + +class PowerballDraw(Base): + __tablename__ = 'powerball_draws' + + draw_date: DateTime = Column(DateTime, primary_key=True) + white_ball1: int = Column(Integer) + white_ball2: int = Column(Integer) + white_ball3: int = Column(Integer) + white_ball4: int = Column(Integer) + white_ball5: int = Column(Integer) + powerball: int = Column(Integer) + power_play: int = Column(Integer) + + + def __repr__(self): + return f"PowerballDraw({self.draw_date=}, {self.white_ball1=}, {self.white_ball2=}, {self.white_ball3=}, " \ + f"{self.white_ball4=}, {self.white_ball5=}, {self.powerball=}, {self.power_play=})" + + def __str__(self): + return f"{self.draw_date}, [{self.white_ball1} {self.white_ball2} {self.white_ball3} {self.white_ball4} " \ + f"{self.white_ball5}], {self.powerball}, {self.power_play if self.power_play else 1}x" +