From 3ca373175c86d052af7f27fe91b34da6c191535f Mon Sep 17 00:00:00 2001 From: Jun-te Kim Date: Mon, 28 Apr 2025 15:36:00 +0000 Subject: [PATCH] datbase work sve so far --- etl/db/hubSpotLoad.py | 16 ++++++++++++---- etl/hubspot_to_db.py | 2 +- etl/surveyedData/surveryedData.py | 19 +++++++++++++++++++ 3 files changed, 32 insertions(+), 5 deletions(-) diff --git a/etl/db/hubSpotLoad.py b/etl/db/hubSpotLoad.py index 6763a04..a2b19cb 100644 --- a/etl/db/hubSpotLoad.py +++ b/etl/db/hubSpotLoad.py @@ -2,12 +2,14 @@ from etl.hubSpotClient.hubspot import HubSpotClient, DealStage from etl.surveyPrice.surveyPrice import SurveyPrice from etl.surveyedData.surveryedData import surveyedDataProcessor from etl.scraper.scraper import SharePointScraper, SharePointInstaller +from etl.db.db import get_db_session, init_db from urllib.parse import unquote class HubspotTodb(): def __init__(self): + init_db() self.hubspot = HubSpotClient() self.deals_in_hubspot = None self.data_in_sharepoint = [] @@ -80,10 +82,16 @@ class HubspotTodb(): for add, file_loc in data_loc.items(): self.data_in_sharepoint.append(surveyedDataProcessor(add, file_loc)) - - def print_address(self): + + def load_all(self): self.gather_data_from_each_sharepoint() - for dp in self.data_in_sharepoint: - print(dp.address) + with get_db_session() as session: + self.load_pre_site_note(session) + session.commit() + + def load_pre_site_note(self, db_session): + for surveyedData in self.data_in_sharepoint: + surveyedData.load_assessor_table(db_session) + diff --git a/etl/hubspot_to_db.py b/etl/hubspot_to_db.py index 11ea79b..f5b14ea 100644 --- a/etl/hubspot_to_db.py +++ b/etl/hubspot_to_db.py @@ -10,4 +10,4 @@ from etl.db.hubSpotLoad import HubspotTodb dbLoader = HubspotTodb() -dbLoader.print_address() \ No newline at end of file +dbLoader.load_all() \ No newline at end of file diff --git a/etl/surveyedData/surveryedData.py b/etl/surveyedData/surveryedData.py index 1b5248e..ec1acb6 100644 --- a/etl/surveyedData/surveryedData.py +++ b/etl/surveyedData/surveryedData.py @@ -1,6 +1,7 @@ from etl.pdfReader.pdfReaderToText import pdfReaderToText from etl.pdfReader.reportType import ReportType import math +from etl.transform.preSiteNoteTypes import AssessorInfo class surveyedDataProcessor(): def __init__(self, address, files): @@ -22,6 +23,24 @@ class surveyedDataProcessor(): elif pdf.type == ReportType.CHARTED_SURVEYOR_REPORT: self.csr = pdf.get_reader() + def load_assessor_table(self, db_session): + assessor_data = self.pre_site_note.assessor_information.__dict__ + accreditation_number = assessor_data.get('accreditation_number') + + existing_assessor = db_session.query(AssessorInfo).filter_by( + accreditation_number=accreditation_number + ).first() + + if existing_assessor: + # Update existing record + for key, value in assessor_data.items(): + setattr(existing_assessor, key, value) + else: + # Insert new record + db_session.add(AssessorInfo(**assessor_data)) + + db_session.commit() + def get_insulation_info(self): if self.csr: if self.csr.insulation_info: