made db thing in serpeate file

This commit is contained in:
Jun-te Kim 2025-03-26 17:11:31 +00:00
parent fbc6e76845
commit fc399157dc
4 changed files with 31 additions and 44 deletions

0
etl/db/__init__.py Normal file
View file

22
etl/db/db.py Normal file
View file

@ -0,0 +1,22 @@
from sqlmodel import SQLModel, create_engine, Session
from pydantic_settings import BaseSettings
from typing import Optional, List
class Settings(BaseSettings):
DATABASE_URL: Optional[str] = None # Default to None if not set
class Config:
env_file = ".env" # Load from an optional .env file
settings = Settings()
engine = create_engine(settings.DATABASE_URL) if settings.DATABASE_URL else None
def get_db_session():
if engine is None:
raise RuntimeError("Database is not configured. Set DATABASE_URL in environment variables.")
return Session(engine)
def init_db():
if engine:
SQLModel.metadata.create_all(engine)

View file

@ -1,38 +1,23 @@
# A very simple script to read a presite note and load to a postgres database
import os
from etl.surveyedData.surveryedData import surveyedDataProcessor
from etl.transform.types import get_db_session, init_db, AssessorInfo
from etl.db.db import get_db_session, init_db
from etl.transform.types import AssessorInfo
pre_site_note_path = os.path.join(os.getcwd(), "..", "example_data", "pre_site_note.pdf")
survey_one = surveyedDataProcessor("123 Fake Street", [pre_site_note_path])
survey_one = surveyedDataProcessor("122 Fake Street", [pre_site_note_path])
assert survey_one.pre_site_note.assessor_information.accreditation_number == "QUID211435"
init_db()
assessor1 = AssessorInfo(
accreditation_number=survey_one.pre_site_note.assessor_information.accreditation_number,
name=survey_one.pre_site_note.assessor_information.name,
phone_number=survey_one.pre_site_note.assessor_information.phone_number,
email_address=survey_one.pre_site_note.assessor_information.email_address,
assessor0 = AssessorInfo(
**survey_one.pre_site_note.assessor_information.__dict__
)
with get_db_session() as session:
session.add(assessor1)
session.add(assessor0)
session.commit()
# Download a pdf file and save it in git for easier processes and tests
# scrape the correct data
# Pydantic structure
# Load to database successfully locally

View file

@ -1,31 +1,11 @@
from sqlmodel import Field, SQLModel, create_engine, Relationship, Session
from sqlmodel import Field, SQLModel
import uuid
from datetime import datetime
from pydantic import field_validator, EmailStr
from pydantic_settings import BaseSettings
from typing import Optional, List
from sqlalchemy import Column
from sqlalchemy.dialects.postgresql import UUID
class Settings(BaseSettings):
DATABASE_URL: Optional[str] = None # Default to None if not set
class Config:
env_file = ".env" # Load from an optional .env file
settings = Settings()
engine = create_engine(settings.DATABASE_URL) if settings.DATABASE_URL else None
def get_db_session():
if engine is None:
raise RuntimeError("Database is not configured. Set DATABASE_URL in environment variables.")
return Session(engine)
def init_db():
if engine:
SQLModel.metadata.create_all(engine)
class BaseModel(SQLModel):
id: uuid.UUID = Field(
default_factory=uuid.uuid4,