diff --git a/backend/app/database.py b/backend/app/database.py index efcc11b..47d7541 100644 --- a/backend/app/database.py +++ b/backend/app/database.py @@ -4,10 +4,19 @@ from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker from app import models +import os -SQLALCHEMY_DATABASE_URL = "sqlite:///./test.db" # Use appropriate path or database URL +# Get username and password from environment variables +db_username = os.getenv("DB_USERNAME") +db_password = os.getenv("DB_PASSWORD") + +# Construct the database URL +#SQLALCHEMY_DATABASE_URL = f"mysql://{db_username}:{db_password}@localhost:3306/aare_db" +SQLALCHEMY_DATABASE_URL = f"mysql://{db_username}:{db_password}@localhost:3306/aare_db" + +# Remove the `connect_args` parameter +engine = create_engine(SQLALCHEMY_DATABASE_URL) -engine = create_engine(SQLALCHEMY_DATABASE_URL, connect_args={"check_same_thread": False}) SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine) Base = declarative_base() diff --git a/backend/app/models.py b/backend/app/models.py index b9e1ff6..ff40228 100644 --- a/backend/app/models.py +++ b/backend/app/models.py @@ -9,9 +9,9 @@ class Shipment(Base): __tablename__ = "shipments" id = Column(Integer, primary_key=True, index=True, autoincrement=True) - shipment_name = Column(String, index=True) + shipment_name = Column(String(255), index=True) shipment_date = Column(Date) - shipment_status = Column(String) + shipment_status = Column(String(255)) comments = Column(String(200), nullable=True) contact_person_id = Column(Integer, ForeignKey("contact_persons.id")) return_address_id = Column(Integer, ForeignKey("addresses.id")) @@ -27,11 +27,10 @@ class ContactPerson(Base): __tablename__ = "contact_persons" id = Column(Integer, primary_key=True, index=True, autoincrement=True) - firstname = Column(String) - lastname = Column(String) - phone_number = Column(String) - email = Column(String) - + firstname = Column(String(255)) + lastname = Column(String(255)) + phone_number = Column(String(255)) + email = Column(String(255)) shipments = relationship("Shipment", back_populates="contact_person") @@ -39,23 +38,23 @@ class Address(Base): __tablename__ = "addresses" id = Column(Integer, primary_key=True, index=True, autoincrement=True) - street = Column(String) - city = Column(String) - zipcode = Column(String) - country = Column(String) + street = Column(String(255)) + city = Column(String(255)) + zipcode = Column(String(255)) + country = Column(String(255)) shipments = relationship("Shipment", back_populates="return_address") class DewarType(Base): __tablename__ = "dewar_types" id = Column(Integer, primary_key=True, index=True, autoincrement=True) - dewar_type = Column(String, unique=True, index=True) + dewar_type = Column(String(255), unique=True, index=True) serial_numbers = relationship("DewarSerialNumber", back_populates="dewar_type") class DewarSerialNumber(Base): __tablename__ = "dewar_serial_numbers" id = Column(Integer, primary_key=True, index=True, autoincrement=True) - serial_number = Column(String, index=True) + serial_number = Column(String(255), index=True) dewar_type_id = Column(Integer, ForeignKey('dewar_types.id')) dewar_type = relationship("DewarType", back_populates="serial_numbers") @@ -64,16 +63,16 @@ class Dewar(Base): __tablename__ = "dewars" id = Column(Integer, primary_key=True, index=True, autoincrement=True) - dewar_name = Column(String) + dewar_name = Column(String(255)) dewar_type_id = Column(Integer, ForeignKey("dewar_types.id"), nullable=True) dewar_serial_number_id = Column(Integer, ForeignKey("dewar_serial_numbers.id"), nullable=True) - tracking_number = Column(String) - status = Column(String) + tracking_number = Column(String(255)) + status = Column(String(255)) ready_date = Column(Date, nullable=True) shipping_date = Column(Date, nullable=True) arrival_date = Column(Date, nullable=True) returning_date = Column(Date, nullable=True) - unique_id = Column(String, unique=True, index=True, nullable=True) + unique_id = Column(String(255), unique=True, index=True, nullable=True) shipment_id = Column(Integer, ForeignKey("shipments.id")) return_address_id = Column(Integer, ForeignKey("addresses.id")) contact_person_id = Column(Integer, ForeignKey("contact_persons.id")) @@ -103,8 +102,7 @@ class Proposal(Base): __tablename__ = "proposals" id = Column(Integer, primary_key=True, index=True, autoincrement=True) - number = Column(String) - + number = Column(String(255)) shipments = relationship("Shipment", back_populates="proposal") @@ -112,8 +110,8 @@ class Puck(Base): __tablename__ = 'pucks' id = Column(Integer, primary_key=True, index=True, autoincrement=True) - puck_name = Column(String, index=True) - puck_type = Column(String) + puck_name = Column(String(255), index=True) + puck_type = Column(String(255)) puck_location_in_dewar = Column(Integer) # Foreign keys and relationships @@ -126,7 +124,7 @@ class Sample(Base): __tablename__ = 'samples' id = Column(Integer, primary_key=True, index=True, autoincrement=True) - sample_name = Column(String, index=True) # Matches `sample_name` in data creation + sample_name = Column(String(255), index=True) position = Column(Integer) # Matches `position` in data creation script data_collection_parameters = Column(JSON, nullable=True) @@ -139,13 +137,13 @@ class Sample(Base): class Slot(Base): __tablename__ = "slots" - id = Column(String, primary_key=True, index=True) - qr_code = Column(String, unique=True, index=True) - label = Column(String) - qr_base = Column(String, nullable=True) + id = Column(Integer, primary_key=True, index=True) + qr_code = Column(String(255), unique=True, index=True) + label = Column(String(255)) + qr_base = Column(String(255), nullable=True) occupied = Column(Boolean, default=False) needs_refill = Column(Boolean, default=False) - dewar_unique_id = Column(String, ForeignKey('dewars.unique_id'), nullable=True) + dewar_unique_id = Column(String(255), ForeignKey('dewars.unique_id'), nullable=True) dewar = relationship("Dewar", back_populates="slot") events = relationship("LogisticsEvent", back_populates="slot") @@ -155,7 +153,7 @@ class LogisticsEvent(Base): id = Column(Integer, primary_key=True, index=True) dewar_id = Column(Integer, ForeignKey('dewars.id')) slot_id = Column(Integer, ForeignKey('slots.id')) - event_type = Column(String, index=True) + event_type = Column(String(255), index=True) timestamp = Column(DateTime, default=datetime.utcnow) dewar = relationship("Dewar", back_populates="events") slot = relationship("Slot", back_populates="events") @@ -165,7 +163,7 @@ class SampleEvent(Base): id = Column(Integer, primary_key=True, index=True) sample_id = Column(Integer, ForeignKey('samples.id')) - event_type = Column(String, index=True) + event_type = Column(String(255), index=True) timestamp = Column(DateTime, default=datetime.utcnow) sample = relationship("Sample", back_populates="events")