"""but_refcomp

Revision ID: 00ad500fb118
Revises: a26b3103697d
Create Date: 2021-12-02 09:01:03.167131

"""
from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
revision = "00ad500fb118"
down_revision = "a26b3103697d"
branch_labels = None
depends_on = None


def upgrade():
    # ### commands auto generated by Alembic - please adjust! ###
    op.create_table(
        "apc_referentiel_competences",
        sa.Column("id", sa.Integer(), nullable=False),
        sa.Column("dept_id", sa.Integer(), nullable=True),
        sa.Column("specialite", sa.Text(), nullable=True),
        sa.Column("specialite_long", sa.Text(), nullable=True),
        sa.Column("type_titre", sa.Text(), nullable=True),
        sa.ForeignKeyConstraint(
            ["dept_id"],
            ["departement.id"],
        ),
        sa.PrimaryKeyConstraint("id"),
    )
    op.create_index(
        op.f("ix_apc_referentiel_competences_dept_id"),
        "apc_referentiel_competences",
        ["dept_id"],
        unique=False,
    )
    op.create_table(
        "apc_competence",
        sa.Column("id", sa.Integer(), nullable=False),
        sa.Column("referentiel_id", sa.Integer(), nullable=False),
        sa.Column("titre", sa.Text(), nullable=False),
        sa.Column("titre_long", sa.Text(), nullable=True),
        sa.Column("numero", sa.Integer(), nullable=True),
        sa.Column("couleur", sa.Text(), nullable=True),
        sa.ForeignKeyConstraint(
            ["referentiel_id"],
            ["apc_referentiel_competences.id"],
        ),
        sa.PrimaryKeyConstraint("id"),
    )
    op.create_table(
        "apc_parcours",
        sa.Column("id", sa.Integer(), nullable=False),
        sa.Column("referentiel_id", sa.Integer(), nullable=False),
        sa.Column("numero", sa.Integer(), nullable=True),
        sa.Column("code", sa.Text(), nullable=False),
        sa.Column("libelle", sa.Text(), nullable=False),
        sa.ForeignKeyConstraint(
            ["referentiel_id"],
            ["apc_referentiel_competences.id"],
        ),
        sa.PrimaryKeyConstraint("id"),
    )
    op.create_table(
        "apc_annee_parcours",
        sa.Column("id", sa.Integer(), nullable=False),
        sa.Column("parcours_id", sa.Integer(), nullable=False),
        sa.Column("numero", sa.Integer(), nullable=True),
        sa.ForeignKeyConstraint(
            ["parcours_id"],
            ["apc_parcours.id"],
        ),
        sa.PrimaryKeyConstraint("id"),
    )
    op.create_table(
        "apc_composante_essentielle",
        sa.Column("id", sa.Integer(), nullable=False),
        sa.Column("competence_id", sa.Integer(), nullable=False),
        sa.Column("libelle", sa.Text(), nullable=False),
        sa.ForeignKeyConstraint(
            ["competence_id"],
            ["apc_competence.id"],
        ),
        sa.PrimaryKeyConstraint("id"),
    )
    op.create_table(
        "apc_niveau",
        sa.Column("id", sa.Integer(), nullable=False),
        sa.Column("competence_id", sa.Integer(), nullable=False),
        sa.Column("libelle", sa.Text(), nullable=False),
        sa.Column("annee", sa.Text(), nullable=False),
        sa.Column("ordre", sa.Integer(), nullable=False),
        sa.ForeignKeyConstraint(
            ["competence_id"],
            ["apc_competence.id"],
        ),
        sa.PrimaryKeyConstraint("id"),
    )
    op.create_table(
        "apc_situation_pro",
        sa.Column("id", sa.Integer(), nullable=False),
        sa.Column("competence_id", sa.Integer(), nullable=False),
        sa.Column("libelle", sa.Text(), nullable=False),
        sa.ForeignKeyConstraint(
            ["competence_id"],
            ["apc_competence.id"],
        ),
        sa.PrimaryKeyConstraint("id"),
    )
    op.create_table(
        "apc_app_critique",
        sa.Column("id", sa.Integer(), nullable=False),
        sa.Column("niveau_id", sa.Integer(), nullable=False),
        sa.Column("code", sa.Text(), nullable=False),
        sa.Column("libelle", sa.Text(), nullable=True),
        sa.ForeignKeyConstraint(
            ["niveau_id"],
            ["apc_niveau.id"],
        ),
        sa.PrimaryKeyConstraint("id"),
    )
    op.create_table(
        "apc_parcours_niveau_competence",
        sa.Column("competence_id", sa.Integer(), nullable=False),
        sa.Column("annee_parcours_id", sa.Integer(), nullable=False),
        sa.Column("niveau", sa.Integer(), nullable=False),
        sa.ForeignKeyConstraint(
            ["annee_parcours_id"], ["apc_annee_parcours.id"], ondelete="CASCADE"
        ),
        sa.ForeignKeyConstraint(
            ["competence_id"], ["apc_competence.id"], ondelete="CASCADE"
        ),
        sa.PrimaryKeyConstraint("competence_id", "annee_parcours_id"),
    )
    op.create_table(
        "apc_modules_acs",
        sa.Column("module_id", sa.Integer(), nullable=True),
        sa.Column("app_crit_id", sa.Integer(), nullable=True),
        sa.ForeignKeyConstraint(
            ["app_crit_id"],
            ["apc_app_critique.id"],
        ),
        sa.ForeignKeyConstraint(
            ["module_id"],
            ["notes_modules.id"],
        ),
    )
    # op.drop_table("app_crit")
    # op.drop_table("modules_acs")
    op.add_column(
        "notes_formations",
        sa.Column("referentiel_competence_id", sa.Integer(), nullable=True),
    )
    op.create_foreign_key(
        "notes_formations_referentiel_competence_id_fkey",
        "notes_formations",
        "apc_referentiel_competences",
        ["referentiel_competence_id"],
        ["id"],
    )
    # ### end Alembic commands ###


def downgrade():
    # ### commands auto generated by Alembic - please adjust! ###
    op.drop_constraint(
        "notes_formations_referentiel_competence_id_fkey",
        "notes_formations",
        type_="foreignkey",
    )
    op.drop_column("notes_formations", "referentiel_competence_id")
    # op.create_table(
    #     "modules_acs",
    #     sa.Column("module_id", sa.INTEGER(), autoincrement=False, nullable=True),
    #     sa.Column("ac_id", sa.INTEGER(), autoincrement=False, nullable=True),
    #     sa.ForeignKeyConstraint(
    #         ["ac_id"], ["app_crit.id"], name="modules_acs_ac_id_fkey"
    #     ),
    #     sa.ForeignKeyConstraint(
    #         ["module_id"], ["notes_modules.id"], name="modules_acs_module_id_fkey"
    #     ),
    # )
    # op.create_table(
    #     "app_crit",
    #     sa.Column("id", sa.INTEGER(), autoincrement=True, nullable=False),
    #     sa.Column("code", sa.TEXT(), autoincrement=False, nullable=False),
    #     sa.Column("titre", sa.TEXT(), autoincrement=False, nullable=True),
    #     sa.PrimaryKeyConstraint("id", name="app_crit_pkey"),
    # )
    op.drop_table("apc_modules_acs")
    op.drop_table("apc_parcours_niveau_competence")
    op.drop_table("apc_app_critique")
    op.drop_table("apc_situation_pro")
    op.drop_table("apc_niveau")
    op.drop_table("apc_composante_essentielle")
    op.drop_table("apc_annee_parcours")
    op.drop_table("apc_parcours")
    op.drop_table("apc_competence")
    op.drop_index(
        op.f("ix_apc_referentiel_competences_dept_id"),
        table_name="apc_referentiel_competences",
    )
    op.drop_table("apc_referentiel_competences")
    # ### end Alembic commands ###
