from flask_login import UserMixin
from sqlalchemy import func, select

from web_application import db, login_manager
from web_application.constants import char_map


@login_manager.user_loader
def load_user(kullanici_adi):
    sql = select(Kullanici).where(Kullanici.id == int(kullanici_adi))
    kullanici = db.session.execute(sql).scalars().first()
    if kullanici is None:
        return None
    return kullanici


def benzersiz_kullanici_adi(ad_soyad):
    en_ad_soyad = ""
    for char in ad_soyad:
        if char in char_map.keys():
            en_ad_soyad += char_map[char]
        else:
            en_ad_soyad += char
    ham_kullanici_adi = f"{en_ad_soyad.replace(' ', '_').lower()}"
    kullanici_adi = ham_kullanici_adi
    sayac = 1
    while (
        db.session.execute(
            select(Kullanici).where(Kullanici.kullanici_adi == kullanici_adi)
        )
        .scalars()
        .first()
        is not None
    ):
        kullanici_adi = f"{ham_kullanici_adi}_{sayac}"
        sayac += 1
    return kullanici_adi


class Kullanici(UserMixin, db.Model):
    __tablename__ = "kullanicilar"
    id = db.Column(db.Integer, primary_key=True)
    ad_soyad = db.Column(db.String(50), nullable=False)
    kullanici_adi = db.Column(db.String(50), unique=True, nullable=False)
    telefon = db.Column(db.String(50), unique=True, nullable=True)
    eposta = db.Column(db.String(120), unique=True, nullable=False)
    parola = db.Column(db.String(120), nullable=False)
    rol_num = db.Column(db.Integer, nullable=False, default=2)
    durum = db.Column(db.Integer, nullable=False, default=1)

    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        if "kullanici_adi" not in kwargs or not kwargs["kullanici_adi"]:
            self.kullanici_adi = benzersiz_kullanici_adi(self.ad_soyad)

    @property
    def sifirlama_tokeni(self):
        sql = select(ParolaSifirlamaTokeni).where(
            ParolaSifirlamaTokeni.kullanici == self.id
        )
        return db.session.scalar(sql)


    olusturma_ts = db.Column(db.DateTime, default=db.func.current_timestamp())
    guncelleme_ts = db.Column(
        db.DateTime,
        default=db.func.current_timestamp(),
        onupdate=db.func.current_timestamp(),
    )

    @property
    def seviye(self):
        roles = {
            0: "Super Admin",
            1: "Admin",
            2: "Kullanıcı",
        }

        return roles[self.rol_num]

    def __repr__(self):
        return f"Kullanici({self.email})"


class ParolaSifirlamaTokeni(db.Model):
    __tablename__ = "parola_sifirlama_tokenleri"
    id = db.Column(db.Integer, primary_key=True)
    kullanici_id = db.Column(db.Integer, unique=False, nullable=False)
    token = db.Column(db.String(64), unique=False, nullable=False)
    olusturma_ts = db.Column(db.DateTime, default=db.func.current_timestamp())

    @property
    def kullanici(self):
        sql = select(Kullanici).where(Kullanici.id == self.kullanici_id)
        return db.session.scalar(sql)


    def __repr__(self):
        return f"ParolaSifirlamaTokeni({self.token})"


class Bolum(db.Model):
    __tablename__ = "bolumler"
    id = db.Column(db.Integer, primary_key=True)
    adi = db.Column(db.String(120), nullable=True, default="-")
    kodu = db.Column(db.String(120), nullable=True)
    aciklama = db.Column(db.Text(), nullable=True, default="-")
    nasil = db.Column(
        db.Integer, nullable=True, default=1
    )  # 1: Normal, 2: Yoğun, 3: Riskli, 4: Kritik
    durum = db.Column(
        db.Integer, nullable=True, default=1
    )  # 1: aktif, 2: pasif, 9: silindi

    olusturma_ts = db.Column(db.DateTime, default=db.func.current_timestamp())
    guncelleme_ts = db.Column(
        db.DateTime,
        default=db.func.current_timestamp(),
        onupdate=db.func.current_timestamp(),
    )

    @property
    def hatlar(self):
        sql = select(Hat).where(Hat.bolum_id == self.id)
        return db.session.scalars(sql).all()


    @property
    def hat_sayisi(self):
        sql = select(func.count()).select_from(Hat).where(Hat.bolum_id == self.id)
        return db.session.scalar(sql)


    def __repr__(self):
        return f"Bolum({self.adi})"


class Urun(db.Model):
    __tablename__ = "urunler"
    id = db.Column(db.Integer, primary_key=True)
    adi = db.Column(db.String(120), nullable=True, default="-")
    kodu = db.Column(db.String(120), nullable=True)
    aciklama = db.Column(db.Text(), nullable=True, default="-")
    durum = db.Column(db.Integer, nullable=True, default=1)  # 1: Aktif, 9: Silindi

    olusturma_ts = db.Column(db.DateTime, default=db.func.current_timestamp())
    guncelleme_ts = db.Column(
        db.DateTime,
        default=db.func.current_timestamp(),
        onupdate=db.func.current_timestamp(),
    )

    def __repr__(self):
        return f"Urun({self.adi})"


class Musteri(db.Model):
    __tablename__ = "musteriler"
    id = db.Column(db.Integer, primary_key=True)
    kodu = db.Column(db.String(120), nullable=True)
    adi_soyadi = db.Column(db.String(120), nullable=True, default="-")
    telefon = db.Column(db.String(50), unique=False, nullable=True)
    eposta = db.Column(db.String(120), unique=False, nullable=True)
    aciklama = db.Column(db.Text(), nullable=True, default="-")
    durum = db.Column(
        db.Integer, nullable=True, default=1
    )  # 1: Aktif, 2: Tamamlandı, 9: Silindi

    olusturma_ts = db.Column(db.DateTime, default=db.func.current_timestamp())
    guncelleme_ts = db.Column(
        db.DateTime,
        default=db.func.current_timestamp(),
        onupdate=db.func.current_timestamp(),
    )

    def __repr__(self):
        return f"Musteri({self.adi_soyadi})"


class Hat(db.Model):
    __tablename__ = "hatlar"
    id = db.Column(db.Integer, primary_key=True)
    adi = db.Column(db.String(120), nullable=True, default="-")
    kodu = db.Column(db.String(120), nullable=True)
    bolum_id = db.Column(db.Integer, nullable=True, default=1)
    aciklama = db.Column(db.Text(), nullable=True, default="-")
    toplam_uretim = db.Column(db.Double, nullable=True, default=0)
    durum = db.Column(
        db.Integer, nullable=True, default=1
    )  # 1: aktif, 2: pasif, 9: silindi
    nasil = db.Column(
        db.Integer, nullable=True, default=1
    )  # 1: Normal, 2: Yoğun, 3: Riskli, 4: Kritik
    olusturma_ts = db.Column(db.DateTime, default=db.func.current_timestamp())
    guncelleme_ts = db.Column(
        db.DateTime,
        default=db.func.current_timestamp(),
        onupdate=db.func.current_timestamp(),
    )

    @property
    def bolum(self):
        sql = select(Bolum).where(Bolum.id == self.bolum_id)
        return db.session.scalar(sql)


    @property
    def is_emri(self):
        sql = select(IsEmri).where(IsEmri.hat_id == self.id)
        return db.session.scalar(sql)


    @property
    def sensor(self):
        sql = select(Sensor).where(Sensor.hat_id == self.id)
        return db.session.scalar(sql)


    @property
    def titresim(self):
        sql = select(TitresimVerisi).where(TitresimVerisi.hat_id == self.id)
        return db.session.scalar(sql)


    @property
    def silo(self):
        sql = select(SiloSistem).where(SiloSistem.hat_id == self.id)
        return db.session.scalar(sql)


    @property
    def anomaliler(self):
        anomali_dict = {
            1: db.session.execute(
                select(Anomali1)
                .where(Anomali1.hat_id == self.id)
                .order_by(Anomali1.id.desc())
                .limit(5)
            )
            .scalars()
            .all(),
            2: db.session.execute(
                select(Anomali2)
                .where(Anomali2.hat_id == self.id)
                .order_by(Anomali2.id.desc())
                .limit(5)
            )
            .scalars()
            .all(),
            3: db.session.execute(
                select(Anomali3)
                .where(Anomali3.hat_id == self.id)
                .order_by(Anomali3.id.desc())
                .limit(5)
            )
            .scalars()
            .all(),
            4: db.session.execute(
                select(Anomali4)
                .where(Anomali4.hat_id == self.id)
                .order_by(Anomali4.id.desc())
                .limit(5)
            )
            .scalars()
            .all(),
            5: db.session.execute(
                select(Anomali5)
                .where(Anomali5.hat_id == self.id)
                .order_by(Anomali5.id.desc())
                .limit(5)
            )
            .scalars()
            .all(),
            6: db.session.execute(
                select(Anomali6)
                .where(Anomali6.hat_id == self.id)
                .order_by(Anomali6.id.desc())
                .limit(5)
            )
            .scalars()
            .all(),
            7: db.session.execute(
                select(Anomali7)
                .where(Anomali7.hat_id == self.id)
                .order_by(Anomali7.id.desc())
                .limit(5)
            )
            .scalars()
            .all(),
            8: db.session.execute(
                select(Anomali8)
                .where(Anomali8.hat_id == self.id)
                .order_by(Anomali8.id.desc())
                .limit(5)
            )
            .scalars()
            .all(),
        }
        return anomali_dict

    def __repr__(self):
        return f"Hat({self.adi})"


class IsEmri(db.Model):
    __tablename__ = "is_emirleri"
    id = db.Column(db.Integer, primary_key=True)
    adi = db.Column(db.String(120), nullable=True, default="-")
    kodu = db.Column(db.String(120), nullable=True)
    aciklama = db.Column(db.Text(), nullable=True, default="-")
    hat_id = db.Column(db.Integer, nullable=True, default=1)
    urun_id = db.Column(db.Integer, nullable=True, default=1)
    baslangic_ts = db.Column(db.DateTime, nullable=True)
    durum = db.Column(
        db.Integer, nullable=True, default=1
    )  # 1: Aktif, 2: Tamamlandı, 9: Silindi

    olusturma_ts = db.Column(db.DateTime, default=db.func.current_timestamp())
    guncelleme_ts = db.Column(
        db.DateTime,
        default=db.func.current_timestamp(),
        onupdate=db.func.current_timestamp(),
    )

    @property
    def hat(self):
        sql = select(Hat).where(Hat.id == self.hat_id)
        return db.session.scalar(sql)


    @property
    def urun(self):
        sql = select(Urun).where(Urun.id == self.urun_id)
        return db.session.scalar(sql)


    def __repr__(self):
        return f"IsEmri({self.adi})"


class Sensor(db.Model):
    __tablename__ = "sensorler"

    id = db.Column(db.Integer, primary_key=True)
    tarih = db.Column(db.DateTime, default=db.func.current_timestamp())
    hat_id = db.Column(db.Integer, nullable=True, default=1)
    is_emri_id = db.Column(db.Integer, nullable=True, default=1)

    # TC Alanları (tc1 - tc24)
    tc1 = db.Column(db.Integer, nullable=True, default=0)
    tc2 = db.Column(db.Integer, nullable=True, default=0)
    tc3 = db.Column(db.Integer, nullable=True, default=0)
    tc4 = db.Column(db.Integer, nullable=True, default=0)
    tc5 = db.Column(db.Integer, nullable=True, default=0)
    tc6 = db.Column(db.Integer, nullable=True, default=0)
    tc7 = db.Column(db.Integer, nullable=True, default=0)
    tc8 = db.Column(db.Integer, nullable=True, default=0)
    tc9 = db.Column(db.Integer, nullable=True, default=0)
    tc10 = db.Column(db.Integer, nullable=True, default=0)
    tc11 = db.Column(db.Integer, nullable=True, default=0)
    tc12 = db.Column(db.Integer, nullable=True, default=0)
    tc13 = db.Column(db.Integer, nullable=True, default=0)
    tc14 = db.Column(db.Integer, nullable=True, default=0)
    tc15 = db.Column(db.Integer, nullable=True, default=0)
    tc16 = db.Column(db.Integer, nullable=True, default=0)
    tc17 = db.Column(db.Integer, nullable=True, default=0)
    tc18 = db.Column(db.Integer, nullable=True, default=0)
    tc19 = db.Column(db.Integer, nullable=True, default=0)
    tc20 = db.Column(db.Integer, nullable=True, default=0)
    tc21 = db.Column(db.Integer, nullable=True, default=0)
    tc22 = db.Column(db.Integer, nullable=True, default=0)
    tc23 = db.Column(db.Integer, nullable=True, default=0)
    tc24 = db.Column(db.Integer, nullable=True, default=0)

    # Sıcaklık Alanları (sicaklik1 - sicaklik28)
    sicaklik1 = db.Column(db.Integer, nullable=True, default=0)
    sicaklik2 = db.Column(db.Integer, nullable=True, default=0)
    sicaklik3 = db.Column(db.Integer, nullable=True, default=0)
    sicaklik4 = db.Column(db.Integer, nullable=True, default=0)
    sicaklik5 = db.Column(db.Integer, nullable=True, default=0)
    sicaklik6 = db.Column(db.Integer, nullable=True, default=0)
    sicaklik7 = db.Column(db.Integer, nullable=True, default=0)
    sicaklik8 = db.Column(db.Integer, nullable=True, default=0)
    sicaklik9 = db.Column(db.Integer, nullable=True, default=0)
    sicaklik10 = db.Column(db.Integer, nullable=True, default=0)
    sicaklik11 = db.Column(db.Integer, nullable=True, default=0)
    sicaklik12 = db.Column(db.Integer, nullable=True, default=0)
    sicaklik13 = db.Column(db.Integer, nullable=True, default=0)
    sicaklik14 = db.Column(db.Integer, nullable=True, default=0)
    sicaklik15 = db.Column(db.Integer, nullable=True, default=0)
    sicaklik16 = db.Column(db.Integer, nullable=True, default=0)
    sicaklik17 = db.Column(db.Integer, nullable=True, default=0)
    sicaklik18 = db.Column(db.Integer, nullable=True, default=0)
    sicaklik19 = db.Column(db.Integer, nullable=True, default=0)
    sicaklik20 = db.Column(db.Integer, nullable=True, default=0)
    sicaklik21 = db.Column(db.Integer, nullable=True, default=0)
    sicaklik22 = db.Column(db.Integer, nullable=True, default=0)
    sicaklik23 = db.Column(db.Integer, nullable=True, default=0)
    sicaklik24 = db.Column(db.Integer, nullable=True, default=0)
    sicaklik25 = db.Column(db.Integer, nullable=True, default=0)
    sicaklik26 = db.Column(db.Integer, nullable=True, default=0)
    sicaklik27 = db.Column(db.Integer, nullable=True, default=0)
    sicaklik28 = db.Column(db.Integer, nullable=True, default=0)

    # Diğer Teknik Veriler (Double/Float)
    hata_orani = db.Column(db.Float, nullable=True, default=0.0)
    ana_motor_hizi = db.Column(db.Float, nullable=True, default=0.0)
    ana_motor_akimi = db.Column(db.Float, nullable=True, default=0.0)
    cizgi_motor_hizi = db.Column(db.Float, nullable=True, default=0.0)
    cizgi_motor_akimi = db.Column(db.Float, nullable=True, default=0.0)
    cekici_hizi = db.Column(db.Float, nullable=True, default=0.0)
    eriyik_basinci = db.Column(db.Float, nullable=True, default=0.0)

    # Vakum Tankı
    vakum_tanki1 = db.Column(db.Integer, nullable=True, default=1)

    def to_dict(self):
        return {
            column.name: getattr(self, column.name) for column in self.__table__.columns
        }

    def __repr__(self):
        return f"<Sensor Data {self.tarih} - Hat {self.hat_id}>"


class TitresimVerisi(db.Model):
    __tablename__ = "titresim_verileri"

    id = db.Column(db.Integer, primary_key=True)
    tarih = db.Column(db.DateTime, default=db.func.current_timestamp())
    # sonradan eklendi, veri seti düzenlenecek
    hat_id = db.Column(db.Integer, nullable=True, default=1)
    is_emri_id = db.Column(db.Integer, nullable=True, default=1)

    # Hız (Velocity) RMS Değerleri - Double (Float)
    v_rms_x = db.Column(db.Float)
    v_rms_y = db.Column(db.Float)
    v_rms_z = db.Column(db.Float)
    v_rms_magnitude = db.Column(db.Float)
    scale_v_rms = db.Column(db.Float)

    # İvme (Acceleration) Peak Değerleri - Integer
    a_peak_x = db.Column(db.Integer)
    a_peak_y = db.Column(db.Integer)
    a_peak_z = db.Column(db.Integer)
    a_peak_magnitude = db.Column(db.Integer)

    # İvme (Acceleration) RMS Değerleri - Integer
    a_rms_x = db.Column(db.Integer)
    a_rms_y = db.Column(db.Integer)
    a_rms_z = db.Column(db.Integer)
    a_rms_magnitude = db.Column(db.Integer)

    # Ölçekleme ve Karma Değerler
    olcekleme_a_peak_v_rms = db.Column(db.Float)
    sicaklik = db.Column(db.Float)
    olcekleme_sicaklik = db.Column(db.Float)

    # Cihaz Durumu
    cihaz_durumu = db.Column(db.Integer)

    def to_dict(self):
        return {
            column.name: getattr(self, column.name) for column in self.__table__.columns
        }

    def __repr__(self):
        return f"<TitresimVerisi {self.tarih} - Durum {self.cihaz_durumu}>"


class SiloSistem(db.Model):
    __tablename__ = "silo_sistemleri"

    id = db.Column(db.Integer, primary_key=True)
    tarih = db.Column(db.DateTime, default=db.func.current_timestamp())
    # sonradan eklendi, veri seti düzenlenecek
    hat_id = db.Column(db.Integer, nullable=True, default=1)
    is_emri_id = db.Column(db.Integer, nullable=True, default=1)

    # Silo Verileri
    silo1 = db.Column(db.Float)
    silo2 = db.Column(db.Float)
    silo3 = db.Column(db.Float)

    # Su ve Ortam Parametreleri
    proses_su_giris = db.Column(db.Float)
    proses_su_cikis = db.Column(db.Float)
    ic_ortam_isisi = db.Column(db.Float)
    hava_tank_basinci = db.Column(db.Float)
    su_seviyesi = db.Column(db.Float)
    su_basinci = db.Column(db.Float)

    # Chiller Verileri
    chiller1 = db.Column(db.Float)
    chiller2 = db.Column(db.Float)

    # Pompa Verileri (1-8)
    pompa1 = db.Column(db.Float)
    pompa2 = db.Column(db.Float)
    pompa3 = db.Column(db.Float)
    pompa4 = db.Column(db.Float)
    pompa5 = db.Column(db.Float)
    pompa6 = db.Column(db.Float)
    pompa7 = db.Column(db.Float)
    pompa8 = db.Column(db.Float)

    def __repr__(self):
        return f"<SiloSistem {self.tarih} - Su Basıncı: {self.su_basinci}>"


class Anomali1(db.Model):
    __tablename__ = "anomali1"

    id = db.Column(db.Integer, primary_key=True)
    tarih = db.Column(db.DateTime)
    hat_id = db.Column(db.Integer, nullable=True, default=1)
    is_emri_id = db.Column(db.Integer, nullable=True, default=1)
    v_rms_magnitude = db.Column(db.Float)
    a_peak_magnitude = db.Column(db.Integer)
    sicaklik = db.Column(db.Float)

    def __repr__(self):
        return f"<Anomali1 {self.tarih} - Sicaklik: {self.sicaklik}>"


class Anomali2(db.Model):
    __tablename__ = "anomali2"

    id = db.Column(db.Integer, primary_key=True)
    tarih = db.Column(db.DateTime)
    hat_id = db.Column(db.Integer, nullable=True, default=1)
    is_emri_id = db.Column(db.Integer, nullable=True, default=1)
    sicaklik1 = db.Column(db.Integer, nullable=True, default=0)
    sicaklik12 = db.Column(db.Integer, nullable=True, default=0)
    sicaklik24 = db.Column(db.Integer, nullable=True, default=0)
    ana_motor_akimi = db.Column(db.Float, nullable=True, default=0.0)
    ana_motor_hizi = db.Column(db.Float, nullable=True, default=0.0)
    cizgi_motor_hizi = db.Column(db.Float, nullable=True, default=0.0)
    eriyik_basinci = db.Column(db.Float, nullable=True, default=0.0)
    cekici_hizi = db.Column(db.Float, nullable=True, default=0.0)

    def __repr__(self):
        return f"<Anomali2 {self.tarih} - Sicaklik: {self.sicaklik1}>"


class Anomali3(db.Model):
    __tablename__ = "anomali3"

    id = db.Column(db.Integer, primary_key=True)
    tarih = db.Column(db.DateTime)
    hat_id = db.Column(db.Integer, nullable=True, default=1)
    is_emri_id = db.Column(db.Integer, nullable=True, default=1)
    sicaklik1 = db.Column(db.Integer, nullable=True, default=0)
    sicaklik12 = db.Column(db.Integer, nullable=True, default=0)
    sicaklik24 = db.Column(db.Integer, nullable=True, default=0)
    ana_motor_akimi = db.Column(db.Float, nullable=True, default=0.0)
    ana_motor_hizi = db.Column(db.Float, nullable=True, default=0.0)
    cizgi_motor_hizi = db.Column(db.Float, nullable=True, default=0.0)
    eriyik_basinci = db.Column(db.Float, nullable=True, default=0.0)
    cekici_hizi = db.Column(db.Float, nullable=True, default=0.0)

    def __repr__(self):
        return f"<Anomali3 {self.tarih} - Sicaklik: {self.sicaklik1}>"


class Anomali4(db.Model):
    __tablename__ = "anomali4"

    id = db.Column(db.Integer, primary_key=True)
    tarih = db.Column(db.DateTime)
    hat_id = db.Column(db.Integer, nullable=True, default=1)
    is_emri_id = db.Column(db.Integer, nullable=True, default=1)
    v_rms_magnitude = db.Column(db.Float)
    a_peak_magnitude = db.Column(db.Integer)
    sicaklik = db.Column(db.Float)

    def __repr__(self):
        return f"<Anomali4 {self.tarih} - Sicaklik: {self.sicaklik}>"


class Anomali5(db.Model):
    __tablename__ = "anomali5"

    id = db.Column(db.Integer, primary_key=True)
    tarih = db.Column(db.DateTime)
    hat_id = db.Column(db.Integer, nullable=True, default=1)
    is_emri_id = db.Column(db.Integer, nullable=True, default=1)
    v_rms_magnitude = db.Column(db.Float)
    a_peak_magnitude = db.Column(db.Integer)
    sicaklik = db.Column(db.Float)

    def __repr__(self):
        return f"<Anomali5 {self.tarih} - Sicaklik: {self.sicaklik}>"


class Anomali6(db.Model):
    __tablename__ = "anomali6"

    id = db.Column(db.Integer, primary_key=True)
    tarih = db.Column(db.DateTime)
    hat_id = db.Column(db.Integer, nullable=True, default=1)
    is_emri_id = db.Column(db.Integer, nullable=True, default=1)
    v_rms_magnitude = db.Column(db.Float)
    a_peak_magnitude = db.Column(db.Integer)
    sicaklik = db.Column(db.Float)

    def __repr__(self):
        return f"<Anomali6 {self.tarih} - Sicaklik: {self.sicaklik}>"


class Anomali7(db.Model):
    __tablename__ = "anomali7"

    id = db.Column(db.Integer, primary_key=True)
    tarih = db.Column(db.DateTime)
    hat_id = db.Column(db.Integer, nullable=True, default=1)
    is_emri_id = db.Column(db.Integer, nullable=True, default=1)
    sicaklik1 = db.Column(db.Integer, nullable=True, default=0)
    sicaklik12 = db.Column(db.Integer, nullable=True, default=0)
    sicaklik24 = db.Column(db.Integer, nullable=True, default=0)
    ana_motor_akimi = db.Column(db.Float, nullable=True, default=0.0)
    ana_motor_hizi = db.Column(db.Float, nullable=True, default=0.0)
    cizgi_motor_hizi = db.Column(db.Float, nullable=True, default=0.0)
    eriyik_basinci = db.Column(db.Float, nullable=True, default=0.0)
    cekici_hizi = db.Column(db.Float, nullable=True, default=0.0)

    def __repr__(self):
        return f"<Anomali7 {self.tarih} - Sicaklik: {self.sicaklik1}>"


class Anomali8(db.Model):
    __tablename__ = "anomali8"

    id = db.Column(db.Integer, primary_key=True)
    tarih = db.Column(db.DateTime)
    hat_id = db.Column(db.Integer, nullable=True, default=1)
    is_emri_id = db.Column(db.Integer, nullable=True, default=1)
    sicaklik1 = db.Column(db.Integer, nullable=True, default=0)
    sicaklik12 = db.Column(db.Integer, nullable=True, default=0)
    sicaklik24 = db.Column(db.Integer, nullable=True, default=0)
    ana_motor_akimi = db.Column(db.Float, nullable=True, default=0.0)
    ana_motor_hizi = db.Column(db.Float, nullable=True, default=0.0)
    cizgi_motor_hizi = db.Column(db.Float, nullable=True, default=0.0)
    eriyik_basinci = db.Column(db.Float, nullable=True, default=0.0)
    cekici_hizi = db.Column(db.Float, nullable=True, default=0.0)

    def __repr__(self):
        return f"<Anomali8 {self.tarih} - Sicaklik: {self.sicaklik1}>"
