classifier.py 3.82 KB
from sqlalchemy.orm import Mapped, mapped_column
from presupuestov1.model import Base

from sqlalchemy import (
    Integer,
    String,
    Text,
    Numeric,
    Index,
    MetaData,
)
from sqlalchemy.dialects.postgresql import JSONB

from typing import Any


class ClasInstitucional(Base):
    __tablename__ = "clas_institucional"
    __table_args__ = (
        Index("idx_clas_institucional_entidad", "entidad"),
        {"schema": "web"},
    )

    entidad: Mapped[int] = mapped_column(Integer, primary_key=True)
    desc_entidad: Mapped[str | None] = mapped_column(Text)
    sigla_entidad: Mapped[str | None] = mapped_column(String(50))

    sector: Mapped[str | None] = mapped_column(String(10))
    desc_sector: Mapped[str | None] = mapped_column(Text)
    sigla_sector: Mapped[str | None] = mapped_column(String(20))

    subsector: Mapped[str | None] = mapped_column(String(10))
    desc_subsector: Mapped[str | None] = mapped_column(Text)
    sigla_subsector: Mapped[str | None] = mapped_column(String(20))

    area: Mapped[str | None] = mapped_column(String(10))
    desc_area: Mapped[str | None] = mapped_column(Text)
    sigla_area: Mapped[str | None] = mapped_column(String(20))

    subarea: Mapped[str | None] = mapped_column(String(10))
    desc_subarea: Mapped[str | None] = mapped_column(Text)
    sigla_subarea: Mapped[str | None] = mapped_column(String(20))

    gestiones: Mapped[str | None] = mapped_column(Text)
    n_gestiones: Mapped[int | None] = mapped_column(Integer)


class ClasObjetos(Base):
    __tablename__ = "clas_objetos"
    __table_args__ = (
        Index("idx_clas_objetos_entidad", "objeto"),
        {"schema": "web"},
    )

    nivel: Mapped[str | None] = mapped_column(Text)
    objeto: Mapped[str] = mapped_column(Text, primary_key=True)
    desc_objeto: Mapped[str | None] = mapped_column(Text)

    gestiones: Mapped[str | None] = mapped_column(Text)
    n_gestiones: Mapped[int | None] = mapped_column(Integer)
    n_variaciones: Mapped[int | None] = mapped_column(Integer)

    descripciones: Mapped[list[dict[str, Any]] | None] = mapped_column(JSONB)


class ClasRubros(Base):
    __tablename__ = "clas_rubros"
    __table_args__ = (
        Index("idx_clas_rubros_entidad", "rubro"),
        {"schema": "web"},
    )

    nivel: Mapped[str | None] = mapped_column(Text)
    rubro: Mapped[str] = mapped_column(Text, primary_key=True)
    desc_rubro: Mapped[str | None] = mapped_column(Text)

    gestiones: Mapped[str | None] = mapped_column(Text)
    n_gestiones: Mapped[int | None] = mapped_column(Integer)
    n_variaciones: Mapped[int | None] = mapped_column(Integer)

    descripciones: Mapped[list[dict[str, Any]] | None] = mapped_column(JSONB)


class ClasFinfun(Base):
    __tablename__ = "clas_finfun"
    __table_args__ = (
        Index("idx_clas_finfun_entidad", "finfun"),
        {"schema": "web"},
    )

    nivel: Mapped[str | None] = mapped_column(Text)
    finfun: Mapped[str] = mapped_column(Text, primary_key=True)
    desc_finfun: Mapped[str | None] = mapped_column(Text)

    gestiones: Mapped[str | None] = mapped_column(Text)
    n_gestiones: Mapped[int | None] = mapped_column(Integer)
    n_variaciones: Mapped[int | None] = mapped_column(Integer)

    descripciones: Mapped[list[dict[str, Any]] | None] = mapped_column(JSONB)


class ClasActeco(Base):
    __tablename__ = "clas_acteco"
    __table_args__ = (
        Index("idx_clas_acteco_entidad", "acteco"),
        {"schema": "web"},
    )

    nivel: Mapped[str | None] = mapped_column(Text)
    acteco: Mapped[str] = mapped_column(Text, primary_key=True)
    desc_acteco: Mapped[str | None] = mapped_column(Text)

    gestiones: Mapped[str | None] = mapped_column(Text)
    n_gestiones: Mapped[int | None] = mapped_column(Integer)
    n_variaciones: Mapped[int | None] = mapped_column(Integer)

    descripciones: Mapped[list[dict[str, Any]] | None] = mapped_column(JSONB)