"""Revision ID: 20260716_0013 Revises: 20260716_0012 """ from typing import Sequence, Union import sqlalchemy as sa from alembic import op revision: str = "20260716_0013" down_revision: Union[str, None] = "20260716_0012" branch_labels: Union[str, Sequence[str], None] = None depends_on: Union[str, Sequence[str], None] = None def upgrade() -> None: op.create_table( "zootech_lab_animal_profile", sa.Column("enterprise_id", sa.String(length=36), nullable=False), sa.Column("id", sa.String(length=36), nullable=False), sa.Column("profile_key", sa.String(length=64), nullable=False), sa.Column("label", sa.String(length=200), nullable=False), sa.Column("ration_type", sa.String(length=10), nullable=False), sa.Column("mass_kg", sa.Float(), nullable=True), sa.Column("milk_yield_kg", sa.Float(), nullable=True), sa.Column("external_no", sa.Integer(), nullable=True), sa.Column("norms_method", sa.String(length=20), nullable=False, server_default="wesp"), sa.Column("norms_params_json", sa.Text(), nullable=True), sa.Column("version", sa.Integer(), nullable=False, server_default="1"), sa.Column("created_by", sa.String(length=50), nullable=False, server_default="system"), sa.Column("updated_by", sa.String(length=50), nullable=False, server_default="system"), sa.Column("is_deleted", sa.Boolean(), nullable=False, server_default=sa.false()), sa.Column("deleted_at", sa.DateTime(timezone=True), nullable=True), sa.Column("deleted_by", sa.String(length=50), nullable=True), sa.Column("created_at", sa.DateTime(timezone=True), nullable=False), sa.Column("updated_at", sa.DateTime(timezone=True), nullable=False), sa.PrimaryKeyConstraint("id"), sa.UniqueConstraint("enterprise_id", "id", name="uq_zootech_lab_profile_ent_id"), sa.UniqueConstraint("enterprise_id", "profile_key", name="uq_zootech_lab_profile_ent_key"), ) op.create_index("idx_zootech_lab_animal_profile_enterprise", "zootech_lab_animal_profile", ["enterprise_id"]) op.create_index("idx_zootech_lab_animal_profile_ration_type", "zootech_lab_animal_profile", ["ration_type"]) op.create_table( "zootech_lab_profile_norm", sa.Column("enterprise_id", sa.String(length=36), nullable=False), sa.Column("id", sa.String(length=36), nullable=False), sa.Column("profile_id", sa.String(length=36), nullable=False), sa.Column("indicator_key", sa.String(length=64), nullable=False), sa.Column("min_value", sa.Float(), nullable=True), sa.Column("max_value", sa.Float(), nullable=True), sa.PrimaryKeyConstraint("id"), sa.UniqueConstraint( "enterprise_id", "profile_id", "indicator_key", name="uq_zootech_lab_profile_norm", ), ) op.create_index("idx_zootech_lab_profile_norm_enterprise", "zootech_lab_profile_norm", ["enterprise_id"]) op.create_index("idx_zootech_lab_profile_norm_profile", "zootech_lab_profile_norm", ["profile_id"]) op.create_table( "zootech_lab_component_nutrient_value", sa.Column("enterprise_id", sa.String(length=36), nullable=False), sa.Column("id", sa.String(length=36), nullable=False), sa.Column("component_id", sa.String(length=36), nullable=False), sa.Column("nutrient_key", sa.String(length=80), nullable=False), sa.Column("value", sa.Float(), nullable=True), sa.PrimaryKeyConstraint("id"), sa.UniqueConstraint( "enterprise_id", "component_id", "nutrient_key", name="uq_zootech_lab_comp_nutrient", ), ) op.create_index( "idx_zootech_lab_component_nutrient_enterprise", "zootech_lab_component_nutrient_value", ["enterprise_id"], ) op.create_index( "idx_zootech_lab_component_nutrient_component", "zootech_lab_component_nutrient_value", ["component_id"], ) op.create_table( "zootech_lab_recipe_ration", sa.Column("enterprise_id", sa.String(length=36), nullable=False), sa.Column("recipe_id", sa.String(length=36), nullable=False), sa.Column("animal_profile_id", sa.String(length=36), nullable=True), sa.Column("calc_engine", sa.String(length=20), nullable=True), sa.Column("seed_source", sa.String(length=32), nullable=True), sa.Column("calculated_at", sa.DateTime(timezone=True), nullable=True), sa.Column("version", sa.Integer(), nullable=False, server_default="1"), sa.Column("created_by", sa.String(length=50), nullable=False, server_default="system"), sa.Column("updated_by", sa.String(length=50), nullable=False, server_default="system"), sa.Column("is_deleted", sa.Boolean(), nullable=False, server_default=sa.false()), sa.Column("deleted_at", sa.DateTime(timezone=True), nullable=True), sa.Column("deleted_by", sa.String(length=50), nullable=True), sa.Column("created_at", sa.DateTime(timezone=True), nullable=False), sa.Column("updated_at", sa.DateTime(timezone=True), nullable=False), sa.PrimaryKeyConstraint("enterprise_id", "recipe_id"), ) op.create_index("idx_zootech_lab_recipe_ration_profile", "zootech_lab_recipe_ration", ["animal_profile_id"]) op.create_table( "zootech_lab_ration_line", sa.Column("enterprise_id", sa.String(length=36), nullable=False), sa.Column("id", sa.String(length=36), nullable=False), sa.Column("recipe_id", sa.String(length=36), nullable=False), sa.Column("component_id", sa.String(length=36), nullable=True), sa.Column("row_index", sa.Integer(), nullable=False, server_default="0"), sa.Column("ingredient_name", sa.String(length=200), nullable=True), sa.Column("daily_kg", sa.Float(), nullable=True), sa.Column("in_ration", sa.Boolean(), nullable=False, server_default=sa.true()), sa.Column("in_compound", sa.Boolean(), nullable=False, server_default=sa.false()), sa.Column("version", sa.Integer(), nullable=False, server_default="1"), sa.Column("created_by", sa.String(length=50), nullable=False, server_default="system"), sa.Column("updated_by", sa.String(length=50), nullable=False, server_default="system"), sa.Column("is_deleted", sa.Boolean(), nullable=False, server_default=sa.false()), sa.Column("deleted_at", sa.DateTime(timezone=True), nullable=True), sa.Column("deleted_by", sa.String(length=50), nullable=True), sa.Column("created_at", sa.DateTime(timezone=True), nullable=False), sa.Column("updated_at", sa.DateTime(timezone=True), nullable=False), sa.PrimaryKeyConstraint("id"), sa.UniqueConstraint("enterprise_id", "id", name="uq_zootech_lab_ration_line_ent_id"), ) op.create_index("idx_zootech_lab_ration_line_enterprise", "zootech_lab_ration_line", ["enterprise_id"]) op.create_index("idx_zootech_lab_ration_line_recipe", "zootech_lab_ration_line", ["recipe_id"]) op.create_table( "zootech_lab_ration_calc_total", sa.Column("enterprise_id", sa.String(length=36), nullable=False), sa.Column("id", sa.String(length=36), nullable=False), sa.Column("recipe_id", sa.String(length=36), nullable=False), sa.Column("scope", sa.String(length=16), nullable=False, server_default="ration"), sa.Column("metric_key", sa.String(length=32), nullable=False), sa.Column("label", sa.String(length=128), nullable=False, server_default=""), sa.Column("value", sa.Float(), nullable=True), sa.Column("sort_order", sa.Integer(), nullable=False, server_default="0"), sa.PrimaryKeyConstraint("id"), sa.UniqueConstraint("enterprise_id", "id", name="uq_zootech_lab_calc_total_ent_id"), ) op.create_index("idx_zootech_lab_calc_total_recipe", "zootech_lab_ration_calc_total", ["recipe_id"]) op.create_table( "zootech_lab_ration_calc_indicator", sa.Column("enterprise_id", sa.String(length=36), nullable=False), sa.Column("id", sa.String(length=36), nullable=False), sa.Column("recipe_id", sa.String(length=36), nullable=False), sa.Column("scope", sa.String(length=16), nullable=False, server_default="ration"), sa.Column("indicator_key", sa.String(length=64), nullable=True), sa.Column("label", sa.String(length=128), nullable=False, server_default=""), sa.Column("unit", sa.String(length=32), nullable=False, server_default=""), sa.Column("min_value", sa.Float(), nullable=True), sa.Column("max_value", sa.Float(), nullable=True), sa.Column("content", sa.Float(), nullable=True), sa.Column("diff", sa.Float(), nullable=True), sa.Column("sort_order", sa.Integer(), nullable=False, server_default="0"), sa.PrimaryKeyConstraint("id"), sa.UniqueConstraint("enterprise_id", "id", name="uq_zootech_lab_calc_ind_ent_id"), ) op.create_index("idx_zootech_lab_calc_indicator_recipe", "zootech_lab_ration_calc_indicator", ["recipe_id"]) op.create_table( "zootech_lab_ration_compound_line", sa.Column("enterprise_id", sa.String(length=36), nullable=False), sa.Column("id", sa.String(length=36), nullable=False), sa.Column("recipe_id", sa.String(length=36), nullable=False), sa.Column("row_index", sa.Integer(), nullable=False, server_default="0"), sa.Column("ingredient_name", sa.String(length=200), nullable=True), sa.Column("daily_kg", sa.Float(), nullable=True), sa.Column("share_pct", sa.Float(), nullable=True), sa.PrimaryKeyConstraint("id"), sa.UniqueConstraint("enterprise_id", "id", name="uq_zootech_lab_compound_line_ent_id"), ) op.create_index("idx_zootech_lab_compound_line_recipe", "zootech_lab_ration_compound_line", ["recipe_id"]) op.create_table( "zootech_lab_racion_normy_moskwa", sa.Column("id", sa.String(length=36), nullable=False), sa.Column("npitv", sa.Integer(), nullable=False), sa.Column("pom", sa.Integer(), nullable=False, server_default="1"), sa.Column("koef", sa.Float(), nullable=True), sa.Column("popr_k_json", sa.Text(), nullable=True), sa.PrimaryKeyConstraint("id"), sa.UniqueConstraint("npitv", "pom", name="uq_zootech_lab_racion_moskwa_npitv_pom"), ) op.create_index("idx_zootech_lab_racion_moskwa_npitv", "zootech_lab_racion_normy_moskwa", ["npitv"]) op.create_table( "zootech_lab_racion_normy_moskwa_meta", sa.Column("id", sa.String(length=36), nullable=False), sa.Column("meta_key", sa.String(length=32), nullable=False), sa.Column("meta_json", sa.Text(), nullable=True), sa.PrimaryKeyConstraint("id"), sa.UniqueConstraint("meta_key"), ) op.create_table( "zootech_lab_racion_normy_piter", sa.Column("id", sa.String(length=36), nullable=False), sa.Column("npitv", sa.Integer(), nullable=False), sa.Column("konc", sa.Float(), nullable=False), sa.Column("udoy", sa.Float(), nullable=False), sa.Column("normy_json", sa.Text(), nullable=True), sa.PrimaryKeyConstraint("id"), sa.UniqueConstraint("npitv", "konc", "udoy", name="uq_zootech_lab_racion_piter_npitv_konc_udoy"), ) op.create_index("idx_zootech_lab_racion_piter_npitv", "zootech_lab_racion_normy_piter", ["npitv"]) op.create_table( "zootech_lab_racion_normy_piter_meta", sa.Column("id", sa.String(length=36), nullable=False), sa.Column("meta_key", sa.String(length=32), nullable=False), sa.Column("meta_json", sa.Text(), nullable=True), sa.PrimaryKeyConstraint("id"), sa.UniqueConstraint("meta_key"), ) op.create_table( "zootech_lab_racion_normy_info", sa.Column("id", sa.String(length=36), nullable=False), sa.Column("nperem", sa.Integer(), nullable=False), sa.Column("znachenie_json", sa.Text(), nullable=True), sa.PrimaryKeyConstraint("id"), sa.UniqueConstraint("nperem"), ) op.create_index("idx_zootech_lab_racion_info_nperem", "zootech_lab_racion_normy_info", ["nperem"]) def downgrade() -> None: for table in ( "zootech_lab_racion_normy_info", "zootech_lab_racion_normy_piter_meta", "zootech_lab_racion_normy_piter", "zootech_lab_racion_normy_moskwa_meta", "zootech_lab_racion_normy_moskwa", "zootech_lab_ration_compound_line", "zootech_lab_ration_calc_indicator", "zootech_lab_ration_calc_total", "zootech_lab_ration_line", "zootech_lab_recipe_ration", "zootech_lab_component_nutrient_value", "zootech_lab_profile_norm", "zootech_lab_animal_profile", ): op.drop_table(table)