acteco.py 3.83 KB
from sqlalchemy.orm import Mapped, mapped_column
from presupuestov1.model import Base

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


class ActecoEstado(Base):
    __tablename__ = "acteco_estado"
    __table_args__ = (
        Index("idx_acteco_estado_gestion", "gestion"),
        Index("idx_acteco_estado_acteco", "acteco"),
        Index("idx_acteco_estado_acteco_gestion", "acteco", "gestion"),
        {"schema": "web"},
    )

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

    gestion: Mapped[int] = mapped_column(Integer)
    acteco: Mapped[str] = mapped_column(String(9))

    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 ActecoEntidad(Base):
    __tablename__ = "acteco_entidad"
    __table_args__ = (
        Index("idx_acteco_entidad_gestion", "gestion"),
        Index("idx_acteco_entidad_acteco", "acteco"),
        Index("idx_acteco_entidad_acteco_entidad", "acteco", "entidad"),
        {"schema": "web"},
    )

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

    gestion: Mapped[int] = mapped_column(Integer)
    acteco: Mapped[str] = mapped_column(String(9))
    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)


class ActecoUbigeo(Base):
    __tablename__ = "acteco_ubigeo"
    __table_args__ = (
        Index("idx_acteco_ubigeo_gestion", "gestion"),
        Index("idx_acteco_ubigeo_acteco", "acteco"),
        Index("idx_acteco_ubigeo_acteco_entidad", "acteco", "ubigeo"),
        {"schema": "web"},
    )

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

    gestion: Mapped[int] = mapped_column(Integer)
    acteco: Mapped[str] = mapped_column(String(9))
    ubigeo: Mapped[int] = mapped_column(String(9))

    nivel: Mapped[str | None] = mapped_column(Text)
    desc_ubigeo: Mapped[str | None] = mapped_column(Text)
    desc_departamento: 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)