switched to mariaDB

This commit is contained in:
GotthardG 2024-12-05 21:49:00 +01:00
parent 46199395ba
commit 996fc66d76
2 changed files with 38 additions and 31 deletions

View File

@ -4,10 +4,19 @@ from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker from sqlalchemy.orm import sessionmaker
from app import models 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) SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
Base = declarative_base() Base = declarative_base()

View File

@ -9,9 +9,9 @@ class Shipment(Base):
__tablename__ = "shipments" __tablename__ = "shipments"
id = Column(Integer, primary_key=True, index=True, autoincrement=True) 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_date = Column(Date)
shipment_status = Column(String) shipment_status = Column(String(255))
comments = Column(String(200), nullable=True) comments = Column(String(200), nullable=True)
contact_person_id = Column(Integer, ForeignKey("contact_persons.id")) contact_person_id = Column(Integer, ForeignKey("contact_persons.id"))
return_address_id = Column(Integer, ForeignKey("addresses.id")) return_address_id = Column(Integer, ForeignKey("addresses.id"))
@ -27,11 +27,10 @@ class ContactPerson(Base):
__tablename__ = "contact_persons" __tablename__ = "contact_persons"
id = Column(Integer, primary_key=True, index=True, autoincrement=True) id = Column(Integer, primary_key=True, index=True, autoincrement=True)
firstname = Column(String) firstname = Column(String(255))
lastname = Column(String) lastname = Column(String(255))
phone_number = Column(String) phone_number = Column(String(255))
email = Column(String) email = Column(String(255))
shipments = relationship("Shipment", back_populates="contact_person") shipments = relationship("Shipment", back_populates="contact_person")
@ -39,23 +38,23 @@ class Address(Base):
__tablename__ = "addresses" __tablename__ = "addresses"
id = Column(Integer, primary_key=True, index=True, autoincrement=True) id = Column(Integer, primary_key=True, index=True, autoincrement=True)
street = Column(String) street = Column(String(255))
city = Column(String) city = Column(String(255))
zipcode = Column(String) zipcode = Column(String(255))
country = Column(String) country = Column(String(255))
shipments = relationship("Shipment", back_populates="return_address") shipments = relationship("Shipment", back_populates="return_address")
class DewarType(Base): class DewarType(Base):
__tablename__ = "dewar_types" __tablename__ = "dewar_types"
id = Column(Integer, primary_key=True, index=True, autoincrement=True) 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") serial_numbers = relationship("DewarSerialNumber", back_populates="dewar_type")
class DewarSerialNumber(Base): class DewarSerialNumber(Base):
__tablename__ = "dewar_serial_numbers" __tablename__ = "dewar_serial_numbers"
id = Column(Integer, primary_key=True, index=True, autoincrement=True) 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_id = Column(Integer, ForeignKey('dewar_types.id'))
dewar_type = relationship("DewarType", back_populates="serial_numbers") dewar_type = relationship("DewarType", back_populates="serial_numbers")
@ -64,16 +63,16 @@ class Dewar(Base):
__tablename__ = "dewars" __tablename__ = "dewars"
id = Column(Integer, primary_key=True, index=True, autoincrement=True) 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_type_id = Column(Integer, ForeignKey("dewar_types.id"), nullable=True)
dewar_serial_number_id = Column(Integer, ForeignKey("dewar_serial_numbers.id"), nullable=True) dewar_serial_number_id = Column(Integer, ForeignKey("dewar_serial_numbers.id"), nullable=True)
tracking_number = Column(String) tracking_number = Column(String(255))
status = Column(String) status = Column(String(255))
ready_date = Column(Date, nullable=True) ready_date = Column(Date, nullable=True)
shipping_date = Column(Date, nullable=True) shipping_date = Column(Date, nullable=True)
arrival_date = Column(Date, nullable=True) arrival_date = Column(Date, nullable=True)
returning_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")) shipment_id = Column(Integer, ForeignKey("shipments.id"))
return_address_id = Column(Integer, ForeignKey("addresses.id")) return_address_id = Column(Integer, ForeignKey("addresses.id"))
contact_person_id = Column(Integer, ForeignKey("contact_persons.id")) contact_person_id = Column(Integer, ForeignKey("contact_persons.id"))
@ -103,8 +102,7 @@ class Proposal(Base):
__tablename__ = "proposals" __tablename__ = "proposals"
id = Column(Integer, primary_key=True, index=True, autoincrement=True) id = Column(Integer, primary_key=True, index=True, autoincrement=True)
number = Column(String) number = Column(String(255))
shipments = relationship("Shipment", back_populates="proposal") shipments = relationship("Shipment", back_populates="proposal")
@ -112,8 +110,8 @@ class Puck(Base):
__tablename__ = 'pucks' __tablename__ = 'pucks'
id = Column(Integer, primary_key=True, index=True, autoincrement=True) id = Column(Integer, primary_key=True, index=True, autoincrement=True)
puck_name = Column(String, index=True) puck_name = Column(String(255), index=True)
puck_type = Column(String) puck_type = Column(String(255))
puck_location_in_dewar = Column(Integer) puck_location_in_dewar = Column(Integer)
# Foreign keys and relationships # Foreign keys and relationships
@ -126,7 +124,7 @@ class Sample(Base):
__tablename__ = 'samples' __tablename__ = 'samples'
id = Column(Integer, primary_key=True, index=True, autoincrement=True) 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 position = Column(Integer) # Matches `position` in data creation script
data_collection_parameters = Column(JSON, nullable=True) data_collection_parameters = Column(JSON, nullable=True)
@ -139,13 +137,13 @@ class Sample(Base):
class Slot(Base): class Slot(Base):
__tablename__ = "slots" __tablename__ = "slots"
id = Column(String, primary_key=True, index=True) id = Column(Integer, primary_key=True, index=True)
qr_code = Column(String, unique=True, index=True) qr_code = Column(String(255), unique=True, index=True)
label = Column(String) label = Column(String(255))
qr_base = Column(String, nullable=True) qr_base = Column(String(255), nullable=True)
occupied = Column(Boolean, default=False) occupied = Column(Boolean, default=False)
needs_refill = 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") dewar = relationship("Dewar", back_populates="slot")
events = relationship("LogisticsEvent", back_populates="slot") events = relationship("LogisticsEvent", back_populates="slot")
@ -155,7 +153,7 @@ class LogisticsEvent(Base):
id = Column(Integer, primary_key=True, index=True) id = Column(Integer, primary_key=True, index=True)
dewar_id = Column(Integer, ForeignKey('dewars.id')) dewar_id = Column(Integer, ForeignKey('dewars.id'))
slot_id = Column(Integer, ForeignKey('slots.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) timestamp = Column(DateTime, default=datetime.utcnow)
dewar = relationship("Dewar", back_populates="events") dewar = relationship("Dewar", back_populates="events")
slot = relationship("Slot", back_populates="events") slot = relationship("Slot", back_populates="events")
@ -165,7 +163,7 @@ class SampleEvent(Base):
id = Column(Integer, primary_key=True, index=True) id = Column(Integer, primary_key=True, index=True)
sample_id = Column(Integer, ForeignKey('samples.id')) 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) timestamp = Column(DateTime, default=datetime.utcnow)
sample = relationship("Sample", back_populates="events") sample = relationship("Sample", back_populates="events")