organismo.py 2.99 KB
from sqlalchemy.orm import Mapped, mapped_column
from presupuestov1.model import Base

from sqlalchemy import (
    Integer,
    String,
    Text,
    Numeric,
    Index,
    MetaData,
)


class OrganismoEstado(Base):
    __tablename__ = "organismo_estado"
    __table_args__ = (
        Index("idx_organismo_estado_gestion", "gestion"),
        Index("idx_organismo_estado_organismo", "organismo"),
        Index("idx_organismo_estado_organismo_gestion", "organismo", "gestion"),
        {"schema": "web"},
    )

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

    gestion: Mapped[int] = mapped_column(Integer)
    organismo: Mapped[str] = mapped_column(Text)
    nivel: Mapped[str | None] = mapped_column(Text)

    total: Mapped[float | None] = mapped_column(Numeric(30, 15))
    poblacion: Mapped[int | None] = mapped_column(Numeric)
    n_entidades: Mapped[int | None] = mapped_column(Integer)
    per_capita: Mapped[float | None] = mapped_column(Numeric)
    total_gestion: Mapped[float | None] = mapped_column(Numeric(30, 15))
    prop: Mapped[float | None] = mapped_column(Numeric)
    ranking: Mapped[int | None] = mapped_column(Integer)
    n_pares: Mapped[int | None] = mapped_column(Integer)

    top1_entidad: Mapped[int | None] = mapped_column(Numeric)
    top1_entidad_desc: Mapped[str | None] = mapped_column(Text)
    top1_monto: Mapped[float | None] = mapped_column(Numeric(30, 15))
    top1_pct: Mapped[float | None] = mapped_column(Numeric)

    top2_entidad: Mapped[int | None] = mapped_column(Numeric)
    top2_entidad_desc: Mapped[str | None] = mapped_column(Text)
    top2_monto: Mapped[float | None] = mapped_column(Numeric(30, 15))
    top2_pct: Mapped[float | None] = mapped_column(Numeric)

    top3_entidad: Mapped[int | None] = mapped_column(Numeric)
    top3_entidad_desc: Mapped[str | None] = mapped_column(Text)
    top3_monto: Mapped[float | None] = mapped_column(Numeric(30, 15))
    top3_pct: Mapped[float | None] = mapped_column(Numeric)


class OrganismoEntidad(Base):
    __tablename__ = "organismo_entidad"
    __table_args__ = (
        Index("idx_organismo_entidad_gestion", "gestion"),
        Index("idx_organismo_entidad_objeto", "organismo"),
        Index("idx_organismo_entidad_rubro_entidad", "organismo", "entidad"),
        Index("idx_organismo_entidad_rubro_gestion", "organismo", "gestion"),
        {"schema": "web"},
    )

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

    gestion: Mapped[int] = mapped_column(Integer)
    organismo: Mapped[str] = mapped_column(Text)
    entidad: Mapped[int] = mapped_column(Integer)

    nivel: Mapped[str | None] = mapped_column(Text)
    entidad_desc: Mapped[str | None] = mapped_column(Text)
    monto: Mapped[float | None] = mapped_column(Numeric(30, 15))
    per_capita: Mapped[float | None] = mapped_column(Numeric)
    ranking: Mapped[int | None] = mapped_column(Integer)
    prop: Mapped[float | None] = mapped_column(Numeric)
    n_entidades: Mapped[int | None] = mapped_column(Integer)