database_models.py 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. from typing import List, Optional
  2. from sqlalchemy import Column, Float, ForeignKey, Integer, String, TIMESTAMP, Table, Text, text
  3. from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, relationship
  4. import datetime
  5. class Base(DeclarativeBase):
  6. pass
  7. class Datasets(Base):
  8. __tablename__ = 'Datasets'
  9. Dataset_name: Mapped[str] = mapped_column(Text)
  10. Row_count: Mapped[int] = mapped_column(Integer)
  11. Dataset_type: Mapped[str] = mapped_column(Text)
  12. Dataset_ID: Mapped[Optional[int]] = mapped_column(Integer, primary_key=True)
  13. Dataset_description: Mapped[Optional[str]] = mapped_column(Text)
  14. Uploaded_at: Mapped[Optional[datetime.datetime]] = mapped_column(TIMESTAMP, server_default=text('CURRENT_TIMESTAMP'))
  15. Status: Mapped[Optional[str]] = mapped_column(Text, server_default=text("'pending'"))
  16. class Models(Base):
  17. __tablename__ = 'Models'
  18. ModelID: Mapped[Optional[int]] = mapped_column(Integer, primary_key=True)
  19. Model_name: Mapped[str] = mapped_column(Text, nullable=False)
  20. Model_type: Mapped[str] = mapped_column(Text, nullable=False)
  21. Created_at: Mapped[Optional[datetime.datetime]] = mapped_column(TIMESTAMP, server_default=text('CURRENT_TIMESTAMP'))
  22. Description: Mapped[Optional[str]] = mapped_column(Text)
  23. DatasetID: Mapped[Optional[int]] = mapped_column(Integer, ForeignKey('Datasets.Dataset_ID'))
  24. ModelFilePath: Mapped[Optional[str]] = mapped_column(Text)
  25. Data_type: Mapped[Optional[str]] = mapped_column(Text)
  26. Performance_score: Mapped[Optional[float]] = mapped_column(Text)
  27. ModelParameters: Mapped[List['ModelParameters']] = relationship('ModelParameters', back_populates='Models_')
  28. class CurrentReduce(Base):
  29. __tablename__ = 'current_reduce'
  30. id: Mapped[int] = mapped_column(Integer, primary_key=True)
  31. Q_over_b: Mapped[float] = mapped_column(Float)
  32. pH: Mapped[float] = mapped_column(Float)
  33. OM: Mapped[float] = mapped_column(Float)
  34. CL: Mapped[float] = mapped_column(Float)
  35. H: Mapped[float] = mapped_column(Float)
  36. Al: Mapped[float] = mapped_column(Float)
  37. class CurrentReflux(Base):
  38. __tablename__ = 'current_reflux'
  39. id: Mapped[int] = mapped_column(Integer, primary_key=True)
  40. OM: Mapped[float] = mapped_column(Float)
  41. CL: Mapped[float] = mapped_column(Float)
  42. CEC: Mapped[float] = mapped_column(Float)
  43. H_plus: Mapped[float] = mapped_column(Float)
  44. N: Mapped[float] = mapped_column(Float)
  45. Al3_plus: Mapped[float] = mapped_column(Float)
  46. Delta_pH: Mapped[float] = mapped_column(Float)
  47. class ModelParameters(Base):
  48. __tablename__ = 'ModelParameters'
  49. ParamID: Mapped[int] = mapped_column(Integer, primary_key=True)
  50. ModelID: Mapped[int] = mapped_column(ForeignKey('Models.ModelID'))
  51. ParamName: Mapped[str] = mapped_column(Text)
  52. ParamValue: Mapped[str] = mapped_column(Text)
  53. Models_: Mapped['Models'] = relationship('Models', back_populates='ModelParameters')