full adjustment
This commit is contained in:
@@ -1,15 +1,24 @@
|
||||
#helper/db_adapter
|
||||
|
||||
from typing import List, Dict
|
||||
from database import sessionLocal
|
||||
from app.modules.edos.models import EDOS
|
||||
|
||||
class DBAdapter:
|
||||
""" Adapter: insert cleen data on a db"""
|
||||
""" Adapter: insert cleen data on a db"""
|
||||
|
||||
def __inti__(self):
|
||||
def __init__(self):
|
||||
self.db = sessionLocal()
|
||||
|
||||
def insert_filtered_data(self, mapped_rows: List[Dict]) -> Dict:
|
||||
""" Insert only data filtered and mapped"""
|
||||
print(f" [DBAdapter] Recibidas {len(mapped_rows)} filas")
|
||||
|
||||
if mapped_rows:
|
||||
print(f" [DBAdapter] Primera fila: {mapped_rows[0]}")
|
||||
|
||||
|
||||
|
||||
results = {
|
||||
'total_processed': len(mapped_rows),
|
||||
'inserted': 0,
|
||||
@@ -19,8 +28,11 @@ class DBAdapter:
|
||||
for row in mapped_rows:
|
||||
try:
|
||||
#verified dupled data
|
||||
|
||||
unique_field_value = row.get('numero')
|
||||
|
||||
existing = self.db.query(EDOS).filter_by(
|
||||
unique_field=row.get('unique_field')
|
||||
numero=unique_field_value
|
||||
).first()
|
||||
|
||||
if existing:
|
||||
@@ -28,8 +40,11 @@ class DBAdapter:
|
||||
continue
|
||||
|
||||
instance = EDOS(**row)
|
||||
|
||||
self.db.add(instance)
|
||||
print(f" [DBAdapter] Added instance for {row.get('numero')}")
|
||||
self.db.commit()
|
||||
print(f" [DBAdapter] Committed successfully")
|
||||
results['inserted'] += 1
|
||||
except Exception as e:
|
||||
self.db.rollback()
|
||||
@@ -37,6 +52,6 @@ class DBAdapter:
|
||||
'row': row,
|
||||
'error': str(e)
|
||||
})
|
||||
self.db.close()
|
||||
return results
|
||||
self.db.close()
|
||||
return results
|
||||
|
||||
Reference in New Issue
Block a user