daily.py 2.96 KB
from sqlalchemy.orm import Mapped, mapped_column
from presupuestov1.model import Base

from sqlalchemy import (
    Integer,
    String,
    Text,
    Numeric,
    Index,
    MetaData,
    Boolean,
    DateTime,
    Date
)
from datetime import datetime, date


class UpdateStatus(Base):
    __tablename__ = "diario_status"
    __table_args__ = (
        {"schema": "web"},
    )

    id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=True)

    fecha_actualizacion: Mapped[datetime] = mapped_column(DateTime)
    status: Mapped[bool] = mapped_column(Boolean)


class EjecucionClasificadores(Base):
    __tablename__ = "diario_ejecucion_clasificadores"
    __table_args__ = (
        Index("idx_ejecucion_clasificadores_dias", "dias"),
        Index("idx_ejecucion_clasificadores_transferencias", "transferencias"),
        {"schema": "web"},
    )

    id: Mapped[int] = mapped_column(Integer, primary_key=True)

    transferencias: Mapped[bool] = mapped_column(Boolean)
    dias: Mapped[int] = mapped_column(Integer)
    clasificador: Mapped[str] = mapped_column(String(48))

    devengado: Mapped[float] = mapped_column(Numeric(30, 15))

    padre: Mapped[str] = mapped_column(Text)
    hijo: Mapped[str] = mapped_column(Text)


class EjecucionEntidades(Base):
    __tablename__ = "diario_ejecucion_entidades"
    __table_args__ = (
        Index("idx_ejecucion_entidades_dias", "dias"),
        Index("idx_ejecucion_entidades_transferencias", "transferencias"),
        Index("idx_ejecucion_entidades_entidad", "entidad"),
        {"schema": "web"},
    )

    id: Mapped[int] = mapped_column(Integer, primary_key=True)

    transferencias: Mapped[bool] = mapped_column(Boolean)
    dias: Mapped[int] = mapped_column(Integer)
    entidad: Mapped[int] = mapped_column(Integer)

    vigente: Mapped[float] = mapped_column(Numeric(30, 15))
    devengado: Mapped[float] = mapped_column(Numeric(30, 15))
    ejecucion: Mapped[float] = mapped_column(Numeric)

    entidad_desc_area: Mapped[str] = mapped_column(Text)
    entidad_desc_entidad: Mapped[str] = mapped_column(Text)


class Timeline(Base):
    __tablename__ = "diario_timeline"
    __table_args__ = (
        Index("idx_diario_timeline_entidad", "entidad"),
        {"schema": "web"},
    )

    id: Mapped[int] = mapped_column(Integer, primary_key=True)

    entidad: Mapped[int] = mapped_column(Integer)
    devengado: Mapped[float] = mapped_column(Numeric(30, 15))

    entidad_desc_area: Mapped[str] = mapped_column(Text)
    entidad_desc_entidad: Mapped[str] = mapped_column(Text)
    desc_programa: Mapped[str] = mapped_column(Text)
    desc_actividad_proyecto: Mapped[str] = mapped_column(Text)


class TimeSeries(Base):
    __tablename__ = "diario_timeseries"

    id: Mapped[int] = mapped_column(Integer, primary_key=True)

    fecha: Mapped[date] = mapped_column(Date)
    devengado: Mapped[float] = mapped_column(Numeric(30, 15))
    diferencia: Mapped[float] = mapped_column(Numeric(30, 15))
    dias: Mapped[int] = mapped_column(Integer)