airtanah_lama.py 2.3 KB
from sqlalchemy import (
    Column, DateTime, ForeignKey, Integer, String, Float,)

from opensipkd.models import Base, DefaultModel
schema = 'pad'


class PadAirZona(Base, DefaultModel):
    __tablename__ = 'pad_air_zona'
    id = Column(Integer, primary_key=True)
    zonanm = Column(String(50))
    nindex = Column(Float)
    __table_args__ = dict(schema=schema)

    @classmethod
    def query_nama(cls, nama):
        return cls.query().filter_by(zonanm=nama)
    
    @classmethod
    def query_register(cls, order_field="id"):
        return cls.query_from(columns =[cls.zonanm.label('Kode'),
                                        cls.nindex.label('Nilai Indeks')])

class PadAirManfaat(Base, DefaultModel):
    __tablename__ = 'pad_air_manfaat'
    id = Column(Integer, primary_key=True)
    manfaatnm = Column(String(108))
    __table_args__ = dict(schema=schema)

    @classmethod
    def query_nama(cls, nama):
        return cls.query().filter_by(manfaatnm=nama)
    
    @classmethod
    def query_register(cls, order_field="id"):
        return cls.query_from(columns =[cls.manfaatnm.label('Nama')])


class PadAirVolume(Base, DefaultModel):
    __tablename__ = 'pad_air_volume'
    id = Column(Integer, primary_key=True)
    volume = Column(Integer)
    tmt = Column(DateTime)
    __table_args__ = dict(schema=schema)

    @classmethod
    def query_nama(cls, nama):
        return cls.query().filter_by(volume=nama)


class PadAirHda(Base, DefaultModel):
    __tablename__ = 'pad_air_hda'
    id = Column(Integer, primary_key=True)
    zona_id = Column(Integer, ForeignKey(f'{schema}.pad_air_zona.id'))
    manfaat_id = Column(Integer, ForeignKey(f'{schema}.pad_air_manfaat.id'))
    volume_id = Column(Integer)
    hda = Column(Float)
    __table_args__ = dict(schema=schema)
    
    @classmethod
    def query_register(cls, order_field="id"):
        return cls.query_from(columns =[PadAirZona.zonanm.label('Zona'),
                                        PadAirManfaat.manfaatnm.label('Manfaat'),
                                        cls.volume_id.label('Volume'),
                                        cls.hda.label('Hda')]). \
            outerjoin(PadAirManfaat, PadAirManfaat.id == cls.manfaat_id). \
            outerjoin(PadAirVolume, PadAirVolume.id == cls.volume_id). \
            order_by(getattr(cls, order_field))