diff --git a/brewman/brewman/routers/fingerprint.py b/brewman/brewman/routers/fingerprint.py index 635a1ef3..05ebaba4 100644 --- a/brewman/brewman/routers/fingerprint.py +++ b/brewman/brewman/routers/fingerprint.py @@ -8,7 +8,7 @@ from io import StringIO import brewman.schemas.fingerprint as schemas from fastapi import APIRouter, Depends, File, HTTPException, UploadFile, status -from sqlalchemy import bindparam, select +from sqlalchemy import select from sqlalchemy.dialects.postgresql import insert as pg_insert from sqlalchemy.exc import SQLAlchemyError from sqlalchemy.orm import Session @@ -36,22 +36,13 @@ def upload_prints( for id_, code in db.execute(select(Employee.id, Employee.code)).all(): employees[code] = id_ file_data = read_file(fingerprints) - prints = [d for d in fp(file_data, employees) if start <= d.date_.date() <= finish] + prints = [d.model_dump() for d in fp(file_data, employees) if start <= d.date_.date() <= finish] + for p in prints: + p["id"] = p.pop("id_") paged_data = [prints[i : i + 100] for i in range(0, len(prints), 100)] for i, page in enumerate(paged_data): print(f"Processing page {i} of {len(paged_data)}") - db.execute( - pg_insert(Fingerprint) - .values( - { - "id": bindparam("id"), - "employee_id": bindparam("employee_id"), - "date": bindparam("date"), - } - ) - .on_conflict_do_nothing(), - [p.dict() for p in page], - ) + db.execute(pg_insert(Fingerprint).on_conflict_do_nothing(), page) db.commit() except SQLAlchemyError as e: raise HTTPException(