diff --git a/migrations/versions/20251130_0207_a0d420b720ba_sync_migrations_and_definitions.py b/migrations/versions/20251130_0207_a0d420b720ba_sync_migrations_and_definitions.py index 853d3ad..b4d1e9f 100644 --- a/migrations/versions/20251130_0207_a0d420b720ba_sync_migrations_and_definitions.py +++ b/migrations/versions/20251130_0207_a0d420b720ba_sync_migrations_and_definitions.py @@ -284,7 +284,6 @@ def upgrade(): existing_nullable=True, schema='STG_UNION_MEMBER', ) - op.drop_column('union_member', 'card', schema='STG_UNION_MEMBER') op.grant_on_table( "test_dwh_stg_userdata_write" if os.getenv("ENVIRONMENT") != "production" else "prod_dwh_stg_userdata_write", ['SELECT', 'UPDATE', 'DELETE', 'TRUNCATE', 'INSERT'], @@ -372,9 +371,9 @@ def downgrade(): ['SELECT', 'UPDATE', 'DELETE', 'TRUNCATE', 'INSERT'], '"STG_USERDATA".encrypted_info', ) - op.add_column( - 'union_member', sa.Column('card', sa.VARCHAR(), autoincrement=False, nullable=True), schema='STG_UNION_MEMBER' - ) + # op.add_column( + # 'union_member', sa.Column('card', sa.VARCHAR(), autoincrement=False, nullable=True), schema='STG_UNION_MEMBER' + # ) op.alter_column( 'union_member', 'middle_name', diff --git a/migrations/versions/20251219_0139_d27b68da6902_union_member_add_rows.py b/migrations/versions/20251219_0139_d27b68da6902_union_member_add_rows.py new file mode 100644 index 0000000..60fcb84 --- /dev/null +++ b/migrations/versions/20251219_0139_d27b68da6902_union_member_add_rows.py @@ -0,0 +1,394 @@ +"""union_member_add_rows + +Revision ID: d27b68da6902 +Revises: 3ac342622c64 +Create Date: 2025-12-19 01:39:30.358864 + +""" + +import os + +import sqlalchemy as sa +from alembic import op +from sqlalchemy.dialects import postgresql + + +# revision identifiers, used by Alembic. +revision = 'd27b68da6902' +down_revision = '3ac342622c64' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.alter_column( + 'dm_lecturer_comment_act', + 'mark_weighted', + existing_type=sa.DOUBLE_PRECISION(precision=53), + type_=sa.Integer(), + existing_comment='Взвешенная оценка преподавателя', + existing_nullable=False, + existing_server_default=sa.text("'0'::double precision"), + schema='DM_RATING', + ) + op.alter_column( + 'dm_lecturer_comment_act', + 'mark_kindness_weighted', + existing_type=sa.DOUBLE_PRECISION(precision=53), + type_=sa.Integer(), + existing_comment='Взвешенная доброта преподавателя', + existing_nullable=False, + existing_server_default=sa.text("'0'::double precision"), + schema='DM_RATING', + ) + op.alter_column( + 'dm_lecturer_comment_act', + 'mark_clarity_weighted', + existing_type=sa.DOUBLE_PRECISION(precision=53), + type_=sa.Integer(), + existing_comment='Взвешенная понятность преподавателя', + existing_nullable=False, + existing_server_default=sa.text("'0'::double precision"), + schema='DM_RATING', + ) + op.alter_column( + 'dm_lecturer_comment_act', + 'mark_freebie_weighted', + existing_type=sa.DOUBLE_PRECISION(precision=53), + type_=sa.Integer(), + existing_comment='Взвешенная халявность преподавателя', + existing_nullable=False, + existing_server_default=sa.text("'0'::double precision"), + schema='DM_RATING', + ) + op.drop_table_comment('dm_strike', existing_comment='\n Витрина страйки\n ', schema='DM_RENTAL') + op.drop_index(op.f('lecturer_ts_idx'), table_name='lecturer', schema='DWH_RATING') + op.alter_column( + 'git_hub', + 'issue_id', + existing_type=sa.VARCHAR(), + type_=sa.Integer(), + comment='Идентификатор issue', + existing_nullable=True, + schema='ODS_SOCIAL', + postgresql_using='issue_id::integer', + ) + op.alter_column( + 'git_hub', + 'user_id', + existing_type=sa.VARCHAR(), + type_=sa.Integer(), + comment='Идентификатор пользователя открывшего issue', + existing_nullable=True, + schema='ODS_SOCIAL', + postgresql_using='user_id::integer', + ) + op.alter_column( + 'git_hub', + 'repository_id', + existing_type=sa.VARCHAR(), + type_=sa.Integer(), + comment='Идентификатор репозитория', + existing_nullable=True, + schema='ODS_SOCIAL', + postgresql_using='repository_id::integer', + ) + op.alter_column( + 'git_hub', + 'assignee_id', + existing_type=sa.VARCHAR(), + type_=sa.Integer(), + comment='Идентификатор назначенного исполнителем issue', + existing_nullable=True, + schema='ODS_SOCIAL', + postgresql_using='assignee_id::integer', + ) + op.alter_column( + 'git_hub', + 'assignee_login', + existing_type=sa.VARCHAR(), + type_=sa.Integer(), + comment='Логин назначенного исполнителем issue', + existing_nullable=True, + schema='ODS_SOCIAL', + postgresql_using='assignee_login::integer', + ) + op.alter_column( + 'git_hub', + 'organization_id', + existing_type=sa.VARCHAR(), + type_=sa.Integer(), + nullable=False, + comment='Идентификатор организации', + schema='ODS_SOCIAL', + postgresql_using='organization_id::integer', + ) + op.alter_column( + 'git_hub_username', + 'username', + existing_type=sa.VARCHAR(), + comment='Имя пользователя GitHub', + existing_nullable=False, + schema='ODS_USERDATA', + ) + op.alter_column( + 'git_hub_username', + 'user_id', + existing_type=sa.INTEGER(), + comment='Идентификатор пользователя', + existing_nullable=False, + schema='ODS_USERDATA', + ) + op.alter_column( + 'git_hub_username', + 'source', + existing_type=sa.VARCHAR(), + comment='Источник данных', + existing_nullable=False, + schema='ODS_USERDATA', + ) + op.alter_column( + 'git_hub_username', + 'created', + existing_type=postgresql.TIMESTAMP(), + comment='Дата создания записи', + existing_nullable=True, + schema='ODS_USERDATA', + ) + op.alter_column( + 'git_hub_username', + 'modified', + existing_type=postgresql.TIMESTAMP(), + comment='Дата последнего изменения записи', + existing_nullable=True, + schema='ODS_USERDATA', + ) + op.alter_column( + 'git_hub_username', + 'is_deleted', + existing_type=sa.BOOLEAN(), + comment='Флаг удаления записи', + existing_nullable=True, + schema='ODS_USERDATA', + ) + op.add_column( + 'union_member', + sa.Column( + 'academic_level_translated', + sa.String(), + nullable=True, + comment='Уровень образования (бакалавриат/магистратура/аспирантура на английском)', + ), + schema='STG_UNION_MEMBER', + ) + op.add_column( + 'union_member', + sa.Column('faculty_translated', sa.String(), nullable=True, comment='Название факультета на английском'), + schema='STG_UNION_MEMBER', + ) + op.add_column( + 'union_member', + sa.Column('first_name_translated', sa.String(), nullable=True, comment='Имя пользователя на английском'), + schema='STG_UNION_MEMBER', + ) + op.add_column( + 'union_member', + sa.Column('last_name_translated', sa.String(), nullable=True, comment='Фамилия пользователя на английском'), + schema='STG_UNION_MEMBER', + ) + op.add_column( + 'union_member', + sa.Column('middle_name_translated', sa.String(), nullable=True, comment='Отчество пользователя на английском'), + schema='STG_UNION_MEMBER', + ) + op.alter_column( + 'union_member', + 'middle_name', + existing_type=sa.VARCHAR(), + comment='Отчество пользователя', + existing_nullable=True, + schema='STG_UNION_MEMBER', + ) + op.drop_column('union_member', 'card', schema='STG_UNION_MEMBER') + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.add_column( + 'union_member', sa.Column('card', sa.VARCHAR(), autoincrement=False, nullable=True), schema='STG_UNION_MEMBER' + ) + op.alter_column( + 'union_member', + 'middle_name', + existing_type=sa.VARCHAR(), + comment=None, + existing_comment='Отчество пользователя', + existing_nullable=True, + schema='STG_UNION_MEMBER', + ) + op.drop_column('union_member', 'middle_name_translated', schema='STG_UNION_MEMBER') + op.drop_column('union_member', 'last_name_translated', schema='STG_UNION_MEMBER') + op.drop_column('union_member', 'first_name_translated', schema='STG_UNION_MEMBER') + op.drop_column('union_member', 'faculty_translated', schema='STG_UNION_MEMBER') + op.drop_column('union_member', 'academic_level_translated', schema='STG_UNION_MEMBER') + op.alter_column( + 'git_hub_username', + 'is_deleted', + existing_type=sa.BOOLEAN(), + comment=None, + existing_comment='Флаг удаления записи', + existing_nullable=True, + schema='ODS_USERDATA', + ) + op.alter_column( + 'git_hub_username', + 'modified', + existing_type=postgresql.TIMESTAMP(), + comment=None, + existing_comment='Дата последнего изменения записи', + existing_nullable=True, + schema='ODS_USERDATA', + ) + op.alter_column( + 'git_hub_username', + 'created', + existing_type=postgresql.TIMESTAMP(), + comment=None, + existing_comment='Дата создания записи', + existing_nullable=True, + schema='ODS_USERDATA', + ) + op.alter_column( + 'git_hub_username', + 'source', + existing_type=sa.VARCHAR(), + comment=None, + existing_comment='Источник данных', + existing_nullable=False, + schema='ODS_USERDATA', + ) + op.alter_column( + 'git_hub_username', + 'user_id', + existing_type=sa.INTEGER(), + comment=None, + existing_comment='Идентификатор пользователя', + existing_nullable=False, + schema='ODS_USERDATA', + ) + op.alter_column( + 'git_hub_username', + 'username', + existing_type=sa.VARCHAR(), + comment=None, + existing_comment='Имя пользователя GitHub', + existing_nullable=False, + schema='ODS_USERDATA', + ) + op.alter_column( + 'git_hub', + 'organization_id', + existing_type=sa.Integer(), + type_=sa.VARCHAR(), + nullable=True, + comment=None, + existing_comment='Идентификатор организации', + schema='ODS_SOCIAL', + ) + op.alter_column( + 'git_hub', + 'assignee_login', + existing_type=sa.Integer(), + type_=sa.VARCHAR(), + comment=None, + existing_comment='Логин назначенного исполнителем issue', + existing_nullable=True, + schema='ODS_SOCIAL', + ) + op.alter_column( + 'git_hub', + 'assignee_id', + existing_type=sa.Integer(), + type_=sa.VARCHAR(), + comment=None, + existing_comment='Идентификатор назначенного исполнителем issue', + existing_nullable=True, + schema='ODS_SOCIAL', + ) + op.alter_column( + 'git_hub', + 'repository_id', + existing_type=sa.Integer(), + type_=sa.VARCHAR(), + comment=None, + existing_comment='Идентификатор репозитория', + existing_nullable=True, + schema='ODS_SOCIAL', + ) + op.alter_column( + 'git_hub', + 'user_id', + existing_type=sa.Integer(), + type_=sa.VARCHAR(), + comment=None, + existing_comment='Идентификатор пользователя открывшего issue', + existing_nullable=True, + schema='ODS_SOCIAL', + ) + op.alter_column( + 'git_hub', + 'issue_id', + existing_type=sa.Integer(), + type_=sa.VARCHAR(), + comment=None, + existing_comment='Идентификатор issue', + existing_nullable=True, + schema='ODS_SOCIAL', + ) + op.create_index( + op.f('lecturer_ts_idx'), 'lecturer', ['valid_from_dt', 'valid_to_dt'], unique=False, schema='DWH_RATING' + ) + op.create_table_comment('dm_strike', '\n Витрина страйки\n ', existing_comment=None, schema='DM_RENTAL') + op.alter_column( + 'dm_lecturer_comment_act', + 'mark_freebie_weighted', + existing_type=sa.Integer(), + type_=sa.DOUBLE_PRECISION(precision=53), + existing_comment='Взвешенная халявность преподавателя', + existing_nullable=False, + existing_server_default=sa.text("'0'::double precision"), + schema='DM_RATING', + ) + op.alter_column( + 'dm_lecturer_comment_act', + 'mark_clarity_weighted', + existing_type=sa.Integer(), + type_=sa.DOUBLE_PRECISION(precision=53), + existing_comment='Взвешенная понятность преподавателя', + existing_nullable=False, + existing_server_default=sa.text("'0'::double precision"), + schema='DM_RATING', + ) + op.alter_column( + 'dm_lecturer_comment_act', + 'mark_kindness_weighted', + existing_type=sa.Integer(), + type_=sa.DOUBLE_PRECISION(precision=53), + existing_comment='Взвешенная доброта преподавателя', + existing_nullable=False, + existing_server_default=sa.text("'0'::double precision"), + schema='DM_RATING', + ) + op.alter_column( + 'dm_lecturer_comment_act', + 'mark_weighted', + existing_type=sa.Integer(), + type_=sa.DOUBLE_PRECISION(precision=53), + existing_comment='Взвешенная оценка преподавателя', + existing_nullable=False, + existing_server_default=sa.text("'0'::double precision"), + schema='DM_RATING', + ) + # ### end Alembic commands ### diff --git a/migrations/versions/20251222_1641_d5063f55a1f4_merge_all_heads.py b/migrations/versions/20251222_1641_d5063f55a1f4_merge_all_heads.py new file mode 100644 index 0000000..cc633a4 --- /dev/null +++ b/migrations/versions/20251222_1641_d5063f55a1f4_merge_all_heads.py @@ -0,0 +1,27 @@ +"""merge all heads + +Revision ID: d5063f55a1f4 +Revises: a0d420b720ba, d27b68da6902 +Create Date: 2025-12-22 16:41:43.121271 + +""" + +import os + +import sqlalchemy as sa +from alembic import op + + +# revision identifiers, used by Alembic. +revision = 'd5063f55a1f4' +down_revision = ('a0d420b720ba', 'd27b68da6902') +branch_labels = None +depends_on = None + + +def upgrade(): + pass + + +def downgrade(): + pass diff --git a/migrations/versions/20251223_1502_137dc7c08814_union_member_add_rows.py b/migrations/versions/20251223_1502_137dc7c08814_union_member_add_rows.py new file mode 100644 index 0000000..e859ef4 --- /dev/null +++ b/migrations/versions/20251223_1502_137dc7c08814_union_member_add_rows.py @@ -0,0 +1,221 @@ +"""union_member_add_rows + +Revision ID: 137dc7c08814 +Revises: d5063f55a1f4 +Create Date: 2025-12-23 15:02:50.657876 + +""" + +import os + +import sqlalchemy as sa +from alembic import op + + +# revision identifiers, used by Alembic. +revision = '137dc7c08814' +down_revision = 'd5063f55a1f4' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.alter_column( + 'dm_lecturer_comment_act', + 'mark_weighted', + existing_type=sa.INTEGER(), + type_=sa.Float(), + existing_comment='Взвешенная оценка преподавателя', + existing_nullable=False, + existing_server_default=sa.text("'0'::double precision"), + schema='DM_RATING', + ) + op.alter_column( + 'dm_lecturer_comment_act', + 'mark_kindness_weighted', + existing_type=sa.INTEGER(), + type_=sa.Float(), + existing_comment='Взвешенная доброта преподавателя', + existing_nullable=False, + existing_server_default=sa.text("'0'::double precision"), + schema='DM_RATING', + ) + op.alter_column( + 'dm_lecturer_comment_act', + 'mark_clarity_weighted', + existing_type=sa.INTEGER(), + type_=sa.Float(), + existing_comment='Взвешенная понятность преподавателя', + existing_nullable=False, + existing_server_default=sa.text("'0'::double precision"), + schema='DM_RATING', + ) + op.alter_column( + 'dm_lecturer_comment_act', + 'mark_freebie_weighted', + existing_type=sa.INTEGER(), + type_=sa.Float(), + existing_comment='Взвешенная халявность преподавателя', + existing_nullable=False, + existing_server_default=sa.text("'0'::double precision"), + schema='DM_RATING', + ) + op.create_table_comment('dm_strike', '\n Витрина страйки\n ', existing_comment=None, schema='DM_RENTAL') + op.create_index('lecturer_ts_idx', 'lecturer', ['valid_from_dt', 'valid_to_dt'], unique=False, schema='DWH_RATING') + op.alter_column( + 'git_hub', + 'issue_id', + existing_type=sa.INTEGER(), + type_=sa.String(), + existing_comment='Идентификатор issue', + existing_nullable=True, + schema='ODS_SOCIAL', + ) + op.alter_column( + 'git_hub', + 'user_id', + existing_type=sa.INTEGER(), + type_=sa.String(), + existing_comment='Идентификатор пользователя открывшего issue', + existing_nullable=True, + schema='ODS_SOCIAL', + ) + op.alter_column( + 'git_hub', + 'repository_id', + existing_type=sa.INTEGER(), + type_=sa.String(), + existing_comment='Идентификатор репозитория', + existing_nullable=True, + schema='ODS_SOCIAL', + ) + op.alter_column( + 'git_hub', + 'assignee_id', + existing_type=sa.INTEGER(), + type_=sa.String(), + existing_comment='Идентификатор назначенного исполнителем issue', + existing_nullable=True, + schema='ODS_SOCIAL', + ) + op.alter_column( + 'git_hub', + 'assignee_login', + existing_type=sa.INTEGER(), + type_=sa.String(), + existing_comment='Логин назначенного исполнителем issue', + existing_nullable=True, + schema='ODS_SOCIAL', + ) + op.alter_column( + 'git_hub', + 'organization_id', + existing_type=sa.INTEGER(), + type_=sa.String(), + existing_comment='Идентификатор организации', + existing_nullable=False, + schema='ODS_SOCIAL', + ) + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.alter_column( + 'git_hub', + 'organization_id', + existing_type=sa.String(), + type_=sa.INTEGER(), + existing_comment='Идентификатор организации', + existing_nullable=False, + schema='ODS_SOCIAL', + ) + op.alter_column( + 'git_hub', + 'assignee_login', + existing_type=sa.String(), + type_=sa.INTEGER(), + existing_comment='Логин назначенного исполнителем issue', + existing_nullable=True, + schema='ODS_SOCIAL', + ) + op.alter_column( + 'git_hub', + 'assignee_id', + existing_type=sa.String(), + type_=sa.INTEGER(), + existing_comment='Идентификатор назначенного исполнителем issue', + existing_nullable=True, + schema='ODS_SOCIAL', + ) + op.alter_column( + 'git_hub', + 'repository_id', + existing_type=sa.String(), + type_=sa.INTEGER(), + existing_comment='Идентификатор репозитория', + existing_nullable=True, + schema='ODS_SOCIAL', + ) + op.alter_column( + 'git_hub', + 'user_id', + existing_type=sa.String(), + type_=sa.INTEGER(), + existing_comment='Идентификатор пользователя открывшего issue', + existing_nullable=True, + schema='ODS_SOCIAL', + ) + op.alter_column( + 'git_hub', + 'issue_id', + existing_type=sa.String(), + type_=sa.INTEGER(), + existing_comment='Идентификатор issue', + existing_nullable=True, + schema='ODS_SOCIAL', + ) + op.drop_index('lecturer_ts_idx', table_name='lecturer', schema='DWH_RATING') + op.drop_table_comment('dm_strike', existing_comment='\n Витрина страйки\n ', schema='DM_RENTAL') + op.alter_column( + 'dm_lecturer_comment_act', + 'mark_freebie_weighted', + existing_type=sa.Float(), + type_=sa.INTEGER(), + existing_comment='Взвешенная халявность преподавателя', + existing_nullable=False, + existing_server_default=sa.text("'0'::double precision"), + schema='DM_RATING', + ) + op.alter_column( + 'dm_lecturer_comment_act', + 'mark_clarity_weighted', + existing_type=sa.Float(), + type_=sa.INTEGER(), + existing_comment='Взвешенная понятность преподавателя', + existing_nullable=False, + existing_server_default=sa.text("'0'::double precision"), + schema='DM_RATING', + ) + op.alter_column( + 'dm_lecturer_comment_act', + 'mark_kindness_weighted', + existing_type=sa.Float(), + type_=sa.INTEGER(), + existing_comment='Взвешенная доброта преподавателя', + existing_nullable=False, + existing_server_default=sa.text("'0'::double precision"), + schema='DM_RATING', + ) + op.alter_column( + 'dm_lecturer_comment_act', + 'mark_weighted', + existing_type=sa.Float(), + type_=sa.INTEGER(), + existing_comment='Взвешенная оценка преподавателя', + existing_nullable=False, + existing_server_default=sa.text("'0'::double precision"), + schema='DM_RATING', + ) + # ### end Alembic commands ### diff --git a/migrations/versions/20251223_1726_e52300ce0b4c_union_member_add_rows.py b/migrations/versions/20251223_1726_e52300ce0b4c_union_member_add_rows.py new file mode 100644 index 0000000..bafa6a1 --- /dev/null +++ b/migrations/versions/20251223_1726_e52300ce0b4c_union_member_add_rows.py @@ -0,0 +1,47 @@ +"""union_member_add_rows + +Revision ID: e52300ce0b4c +Revises: 137dc7c08814 +Create Date: 2025-12-23 17:26:06.169058 + +""" + +import os + +import sqlalchemy as sa +from alembic import op + + +# revision identifiers, used by Alembic. +revision = 'e52300ce0b4c' +down_revision = '137dc7c08814' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.alter_column( + 'union_member', + 'academic_level_translated', + existing_type=sa.VARCHAR(), + comment='Уровень образования (бакалавриат/магистратура/аспирантура) на английском', + existing_comment='Уровень образования (бакалавриат/магистратура/аспирантура на английском)', + existing_nullable=True, + schema='STG_UNION_MEMBER', + ) + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.alter_column( + 'union_member', + 'academic_level_translated', + existing_type=sa.VARCHAR(), + comment='Уровень образования (бакалавриат/магистратура/аспирантура на английском)', + existing_comment='Уровень образования (бакалавриат/магистратура/аспирантура) на английском', + existing_nullable=True, + schema='STG_UNION_MEMBER', + ) + # ### end Alembic commands ### diff --git a/profcomff_definitions/STG/union_member.py b/profcomff_definitions/STG/union_member.py index 4b0b29d..2e3f10f 100644 --- a/profcomff_definitions/STG/union_member.py +++ b/profcomff_definitions/STG/union_member.py @@ -10,11 +10,18 @@ class UnionMember(Base): academic_level: Mapped[str | None] = mapped_column( comment="Уровень образования (бакалавриат/магистратура/аспирантура)" ) + academic_level_translated: Mapped[str | None] = mapped_column( + comment="Уровень образования (бакалавриат/магистратура/аспирантура) на английском" + ) status: Mapped[str | None] = mapped_column(comment="Текущий статус пользователя") faculty: Mapped[str | None] = mapped_column(comment="Название факультета") + faculty_translated: Mapped[str | None] = mapped_column(comment="Название факультета на английском") first_name: Mapped[str | None] = mapped_column(comment="Имя пользователя") + first_name_translated: Mapped[str | None] = mapped_column(comment="Имя пользователя на английском") last_name: Mapped[str | None] = mapped_column(comment="Фамилия пользователя") + last_name_translated: Mapped[str | None] = mapped_column(comment="Фамилия пользователя на английском") middle_name: Mapped[str | None] = mapped_column(comment="Отчество пользователя") + middle_name_translated: Mapped[str | None] = mapped_column(comment="Отчество пользователя на английском") email: Mapped[str | None] = mapped_column(comment="Email пользователя") date_of_birth: Mapped[str | None] = mapped_column(comment="Дата рождения") phone_number: Mapped[str | None] = mapped_column(comment="Номер телефона")