database_models.py 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. import datetime
  2. from typing import List, Optional
  3. from sqlalchemy import Float, ForeignKey, Integer, TIMESTAMP, Text, text
  4. from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, relationship
  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. MAE: Mapped[Optional[float]] = mapped_column(Text)
  28. RMSE: Mapped[Optional[float]] = mapped_column(Text)
  29. CV_score: Mapped[Optional[float]] = mapped_column(Text)
  30. ModelParameters: Mapped[List['ModelParameters']] = relationship('ModelParameters', back_populates='Models_')
  31. class CurrentReduce(Base):
  32. __tablename__ = 'current_reduce'
  33. id: Mapped[int] = mapped_column(Integer, primary_key=True)
  34. Q_over_b: Mapped[float] = mapped_column(Float)
  35. pH: Mapped[float] = mapped_column(Float)
  36. OM: Mapped[float] = mapped_column(Float)
  37. CL: Mapped[float] = mapped_column(Float)
  38. H: Mapped[float] = mapped_column(Float)
  39. Al: Mapped[float] = mapped_column(Float)
  40. class CurrentReflux(Base):
  41. __tablename__ = 'current_reflux'
  42. id: Mapped[int] = mapped_column(Integer, primary_key=True)
  43. OM: Mapped[float] = mapped_column(Float)
  44. CL: Mapped[float] = mapped_column(Float)
  45. CEC: Mapped[float] = mapped_column(Float)
  46. H_plus: Mapped[float] = mapped_column(Float)
  47. N: Mapped[float] = mapped_column(Float)
  48. Al3_plus: Mapped[float] = mapped_column(Float)
  49. Delta_pH: Mapped[float] = mapped_column(Float)
  50. class ModelParameters(Base):
  51. __tablename__ = 'ModelParameters'
  52. ParamID: Mapped[int] = mapped_column(Integer, primary_key=True)
  53. ModelID: Mapped[int] = mapped_column(ForeignKey('Models.ModelID'))
  54. ParamName: Mapped[str] = mapped_column(Text)
  55. ParamValue: Mapped[str] = mapped_column(Text)
  56. Models_: Mapped['Models'] = relationship('Models', back_populates='ModelParameters')