diff --git a/migrations/versions/20251130_0207_a0d420b720ba_sync_migrations_and_definitions.py b/migrations/versions/20251130_0207_a0d420b720ba_sync_migrations_and_definitions.py new file mode 100644 index 0000000..853d3ad --- /dev/null +++ b/migrations/versions/20251130_0207_a0d420b720ba_sync_migrations_and_definitions.py @@ -0,0 +1,653 @@ +"""sync migrations and definitions + +Revision ID: a0d420b720ba +Revises: 3ac342622c64 +Create Date: 2025-11-30 02:07:25.872931 + +""" + +import os + +import sqlalchemy as sa +from alembic import op +from sqlalchemy.dialects import postgresql + + +# revision identifiers, used by Alembic. +revision = 'a0d420b720ba' +down_revision = '3ac342622c64' +branch_labels = None +depends_on = None + + +def upgrade(): + op.create_group( + "test_sensitive_dwh_stg_userdata_all" + if os.getenv("ENVIRONMENT") != "production" + else "prod_sensitive_dwh_stg_userdata_all" + ) + op.create_group( + "test_sensitive_dwh_stg_userdata_read" + if os.getenv("ENVIRONMENT") != "production" + else "prod_sensitive_dwh_stg_userdata_read" + ) + op.create_group( + "test_sensitive_dwh_stg_userdata_write" + if os.getenv("ENVIRONMENT") != "production" + else "prod_sensitive_dwh_stg_userdata_write" + ) + op.grant_on_schema( + ( + "test_sensitive_dwh_stg_userdata_all" + if os.getenv("ENVIRONMENT") != "production" + else "prod_sensitive_dwh_stg_userdata_all" + ), + "STG_USERDATA", + ) + op.grant_on_schema( + ( + "test_sensitive_dwh_stg_userdata_read" + if os.getenv("ENVIRONMENT") != "production" + else "prod_sensitive_dwh_stg_userdata_read" + ), + "STG_USERDATA", + ) + op.grant_on_schema( + ( + "test_sensitive_dwh_stg_userdata_write" + if os.getenv("ENVIRONMENT") != "production" + else "prod_sensitive_dwh_stg_userdata_write" + ), + "STG_USERDATA", + ) + op.grant_on_table( + "test_dwh_dm_rental_write" if os.getenv("ENVIRONMENT") != "production" else "prod_dwh_dm_rental_write", + ['SELECT', 'UPDATE', 'DELETE', 'TRUNCATE', 'INSERT'], + '"DM_RENTAL".dm_strike', + ) + op.grant_on_table( + "test_dwh_dm_rental_read" if os.getenv("ENVIRONMENT") != "production" else "prod_dwh_dm_rental_read", + ['SELECT'], + '"DM_RENTAL".dm_strike', + ) + op.grant_on_table( + "test_dwh_dm_rental_all" if os.getenv("ENVIRONMENT") != "production" else "prod_dwh_dm_rental_all", + ['ALL'], + '"DM_RENTAL".dm_strike', + ) + op.grant_on_table( + "test_dwh_dm_timetable_all" if os.getenv("ENVIRONMENT") != "production" else "prod_dwh_dm_timetable_all", + ['ALL'], + '"DM_TIMETABLE".dm_timetable_act', + ) + op.grant_on_table( + "test_dwh_dm_timetable_read" if os.getenv("ENVIRONMENT") != "production" else "prod_dwh_dm_timetable_read", + ['SELECT'], + '"DM_TIMETABLE".dm_timetable_act', + ) + op.grant_on_table( + "test_dwh_dm_timetable_write" if os.getenv("ENVIRONMENT") != "production" else "prod_dwh_dm_timetable_write", + ['SELECT', 'UPDATE', 'DELETE', 'TRUNCATE', 'INSERT'], + '"DM_TIMETABLE".dm_timetable_act', + ) + op.grant_on_table( + "test_dwh_dm_user_read" if os.getenv("ENVIRONMENT") != "production" else "prod_dwh_dm_user_read", + ['SELECT'], + '"DM_USER".union_member_card', + ) + op.grant_on_table( + "test_dwh_dm_user_write" if os.getenv("ENVIRONMENT") != "production" else "prod_dwh_dm_user_write", + ['SELECT', 'UPDATE', 'DELETE', 'TRUNCATE', 'INSERT'], + '"DM_USER".union_member_card', + ) + op.grant_on_table( + "test_dwh_dm_user_all" if os.getenv("ENVIRONMENT") != "production" else "prod_dwh_dm_user_all", + ['ALL'], + '"DM_USER".union_member_card', + ) + op.grant_on_table( + "test_dwh_dwh_user_info_all" if os.getenv("ENVIRONMENT") != "production" else "prod_dwh_dwh_user_info_all", + ['ALL'], + '"DWH_USER_INFO".encrypted_info', + ) + op.grant_on_table( + "test_dwh_dwh_user_info_read" if os.getenv("ENVIRONMENT") != "production" else "prod_dwh_dwh_user_info_read", + ['SELECT'], + '"DWH_USER_INFO".encrypted_info', + ) + op.grant_on_table( + "test_dwh_dwh_user_info_write" if os.getenv("ENVIRONMENT") != "production" else "prod_dwh_dwh_user_info_write", + ['SELECT', 'UPDATE', 'DELETE', 'TRUNCATE', 'INSERT'], + '"DWH_USER_INFO".encrypted_info', + ) + op.alter_column( + 'git_hub', + 'issue_id', + existing_type=sa.VARCHAR(), + comment='Идентификатор issue', + existing_nullable=True, + schema='ODS_SOCIAL', + ) + op.alter_column( + 'git_hub', + 'user_id', + existing_type=sa.VARCHAR(), + comment='Идентификатор пользователя открывшего issue', + existing_nullable=True, + schema='ODS_SOCIAL', + ) + op.alter_column( + 'git_hub', + 'repository_id', + existing_type=sa.VARCHAR(), + comment='Идентификатор репозитория', + existing_nullable=True, + schema='ODS_SOCIAL', + ) + op.alter_column( + 'git_hub', + 'assignee_id', + existing_type=sa.VARCHAR(), + comment='Идентификатор назначенного исполнителем issue', + existing_nullable=True, + schema='ODS_SOCIAL', + ) + op.alter_column( + 'git_hub', + 'assignee_login', + existing_type=sa.VARCHAR(), + comment='Логин назначенного исполнителем issue', + existing_nullable=True, + schema='ODS_SOCIAL', + ) + op.alter_column( + 'git_hub', + 'organization_id', + existing_type=sa.VARCHAR(), + nullable=False, + comment='Идентификатор организации', + schema='ODS_SOCIAL', + ) + op.grant_on_table( + "test_dwh_ods_social_read" if os.getenv("ENVIRONMENT") != "production" else "prod_dwh_ods_social_read", + ['SELECT'], + '"ODS_SOCIAL".git_hub', + ) + op.grant_on_table( + "test_dwh_ods_social_all" if os.getenv("ENVIRONMENT") != "production" else "prod_dwh_ods_social_all", + ['ALL'], + '"ODS_SOCIAL".git_hub', + ) + op.grant_on_table( + "test_dwh_ods_social_write" if os.getenv("ENVIRONMENT") != "production" else "prod_dwh_ods_social_write", + ['SELECT', 'UPDATE', 'DELETE', 'TRUNCATE', 'INSERT'], + '"ODS_SOCIAL".git_hub', + ) + op.grant_on_table( + "test_dwh_ods_userdata_read" if os.getenv("ENVIRONMENT") != "production" else "prod_dwh_ods_userdata_read", + ['SELECT'], + '"ODS_USERDATA".card', + ) + op.grant_on_table( + "test_dwh_ods_userdata_all" if os.getenv("ENVIRONMENT") != "production" else "prod_dwh_ods_userdata_all", + ['ALL'], + '"ODS_USERDATA".card', + ) + op.grant_on_table( + "test_dwh_ods_userdata_write" if os.getenv("ENVIRONMENT") != "production" else "prod_dwh_ods_userdata_write", + ['SELECT', 'UPDATE', 'DELETE', 'TRUNCATE', 'INSERT'], + '"ODS_USERDATA".card', + ) + 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.grant_on_table( + "test_dwh_ods_userdata_read" if os.getenv("ENVIRONMENT") != "production" else "prod_dwh_ods_userdata_read", + ['SELECT'], + '"ODS_USERDATA".rzd', + ) + op.grant_on_table( + "test_dwh_ods_userdata_all" if os.getenv("ENVIRONMENT") != "production" else "prod_dwh_ods_userdata_all", + ['ALL'], + '"ODS_USERDATA".rzd', + ) + op.grant_on_table( + "test_dwh_ods_userdata_write" if os.getenv("ENVIRONMENT") != "production" else "prod_dwh_ods_userdata_write", + ['SELECT', 'UPDATE', 'DELETE', 'TRUNCATE', 'INSERT'], + '"ODS_USERDATA".rzd', + ) + op.grant_on_table( + "test_dwh_ods_userdata_read" if os.getenv("ENVIRONMENT") != "production" else "prod_dwh_ods_userdata_read", + ['SELECT'], + '"ODS_USERDATA".status', + ) + op.grant_on_table( + "test_dwh_ods_userdata_all" if os.getenv("ENVIRONMENT") != "production" else "prod_dwh_ods_userdata_all", + ['ALL'], + '"ODS_USERDATA".status', + ) + op.grant_on_table( + "test_dwh_ods_userdata_write" if os.getenv("ENVIRONMENT") != "production" else "prod_dwh_ods_userdata_write", + ['SELECT', 'UPDATE', 'DELETE', 'TRUNCATE', 'INSERT'], + '"ODS_USERDATA".status', + ) + 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') + 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'], + '"STG_USERDATA".encrypted_info', + ) + op.grant_on_table( + "test_dwh_stg_userdata_read" if os.getenv("ENVIRONMENT") != "production" else "prod_dwh_stg_userdata_read", + ['SELECT'], + '"STG_USERDATA".encrypted_info', + ) + op.grant_on_table( + "test_dwh_stg_userdata_all" if os.getenv("ENVIRONMENT") != "production" else "prod_dwh_stg_userdata_all", + ['ALL'], + '"STG_USERDATA".encrypted_info', + ) + op.grant_on_table( + ( + "test_sensitive_dwh_stg_userdata_write" + if os.getenv("ENVIRONMENT") != "production" + else "prod_sensitive_dwh_stg_userdata_write" + ), + ['SELECT', 'UPDATE', 'DELETE', 'TRUNCATE', 'INSERT'], + '"STG_USERDATA".info_keys', + ) + op.grant_on_table( + ( + "test_sensitive_dwh_stg_userdata_all" + if os.getenv("ENVIRONMENT") != "production" + else "prod_sensitive_dwh_stg_userdata_all" + ), + ['ALL'], + '"STG_USERDATA".info_keys', + ) + op.grant_on_table( + ( + "test_sensitive_dwh_stg_userdata_read" + if os.getenv("ENVIRONMENT") != "production" + else "prod_sensitive_dwh_stg_userdata_read" + ), + ['SELECT'], + '"STG_USERDATA".info_keys', + ) + + +def downgrade(): + op.revoke_on_table( + ( + "test_sensitive_dwh_stg_userdata_read" + if os.getenv("ENVIRONMENT") != "production" + else "prod_sensitive_dwh_stg_userdata_read" + ), + ['SELECT'], + '"STG_USERDATA".info_keys', + ) + op.revoke_on_table( + ( + "test_sensitive_dwh_stg_userdata_all" + if os.getenv("ENVIRONMENT") != "production" + else "prod_sensitive_dwh_stg_userdata_all" + ), + ['ALL'], + '"STG_USERDATA".info_keys', + ) + op.revoke_on_table( + ( + "test_sensitive_dwh_stg_userdata_write" + if os.getenv("ENVIRONMENT") != "production" + else "prod_sensitive_dwh_stg_userdata_write" + ), + ['SELECT', 'UPDATE', 'DELETE', 'TRUNCATE', 'INSERT'], + '"STG_USERDATA".info_keys', + ) + op.revoke_on_table( + "test_dwh_stg_userdata_all" if os.getenv("ENVIRONMENT") != "production" else "prod_dwh_stg_userdata_all", + ['ALL'], + '"STG_USERDATA".encrypted_info', + ) + op.revoke_on_table( + "test_dwh_stg_userdata_read" if os.getenv("ENVIRONMENT") != "production" else "prod_dwh_stg_userdata_read", + ['SELECT'], + '"STG_USERDATA".encrypted_info', + ) + op.revoke_on_table( + "test_dwh_stg_userdata_write" if os.getenv("ENVIRONMENT") != "production" else "prod_dwh_stg_userdata_write", + ['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.alter_column( + 'union_member', + 'middle_name', + existing_type=sa.VARCHAR(), + comment=None, + existing_comment='Отчество пользователя', + existing_nullable=True, + schema='STG_UNION_MEMBER', + ) + op.revoke_on_table( + "test_dwh_ods_userdata_write" if os.getenv("ENVIRONMENT") != "production" else "prod_dwh_ods_userdata_write", + ['SELECT', 'UPDATE', 'DELETE', 'TRUNCATE', 'INSERT'], + '"ODS_USERDATA".status', + ) + op.revoke_on_table( + "test_dwh_ods_userdata_all" if os.getenv("ENVIRONMENT") != "production" else "prod_dwh_ods_userdata_all", + ['ALL'], + '"ODS_USERDATA".status', + ) + op.revoke_on_table( + "test_dwh_ods_userdata_read" if os.getenv("ENVIRONMENT") != "production" else "prod_dwh_ods_userdata_read", + ['SELECT'], + '"ODS_USERDATA".status', + ) + op.revoke_on_table( + "test_dwh_ods_userdata_write" if os.getenv("ENVIRONMENT") != "production" else "prod_dwh_ods_userdata_write", + ['SELECT', 'UPDATE', 'DELETE', 'TRUNCATE', 'INSERT'], + '"ODS_USERDATA".rzd', + ) + op.revoke_on_table( + "test_dwh_ods_userdata_all" if os.getenv("ENVIRONMENT") != "production" else "prod_dwh_ods_userdata_all", + ['ALL'], + '"ODS_USERDATA".rzd', + ) + op.revoke_on_table( + "test_dwh_ods_userdata_read" if os.getenv("ENVIRONMENT") != "production" else "prod_dwh_ods_userdata_read", + ['SELECT'], + '"ODS_USERDATA".rzd', + ) + 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.revoke_on_table( + "test_dwh_ods_userdata_write" if os.getenv("ENVIRONMENT") != "production" else "prod_dwh_ods_userdata_write", + ['SELECT', 'UPDATE', 'DELETE', 'TRUNCATE', 'INSERT'], + '"ODS_USERDATA".card', + ) + op.revoke_on_table( + "test_dwh_ods_userdata_all" if os.getenv("ENVIRONMENT") != "production" else "prod_dwh_ods_userdata_all", + ['ALL'], + '"ODS_USERDATA".card', + ) + op.revoke_on_table( + "test_dwh_ods_userdata_read" if os.getenv("ENVIRONMENT") != "production" else "prod_dwh_ods_userdata_read", + ['SELECT'], + '"ODS_USERDATA".card', + ) + op.revoke_on_table( + "test_dwh_ods_social_write" if os.getenv("ENVIRONMENT") != "production" else "prod_dwh_ods_social_write", + ['SELECT', 'UPDATE', 'DELETE', 'TRUNCATE', 'INSERT'], + '"ODS_SOCIAL".git_hub', + ) + op.revoke_on_table( + "test_dwh_ods_social_all" if os.getenv("ENVIRONMENT") != "production" else "prod_dwh_ods_social_all", + ['ALL'], + '"ODS_SOCIAL".git_hub', + ) + op.revoke_on_table( + "test_dwh_ods_social_read" if os.getenv("ENVIRONMENT") != "production" else "prod_dwh_ods_social_read", + ['SELECT'], + '"ODS_SOCIAL".git_hub', + ) + op.alter_column( + 'git_hub', + 'organization_id', + existing_type=sa.VARCHAR(), + nullable=True, + comment=None, + existing_comment='Идентификатор организации', + schema='ODS_SOCIAL', + ) + op.alter_column( + 'git_hub', + 'assignee_login', + existing_type=sa.VARCHAR(), + comment=None, + existing_comment='Логин назначенного исполнителем issue', + existing_nullable=True, + schema='ODS_SOCIAL', + ) + op.alter_column( + 'git_hub', + 'assignee_id', + existing_type=sa.VARCHAR(), + comment=None, + existing_comment='Идентификатор назначенного исполнителем issue', + existing_nullable=True, + schema='ODS_SOCIAL', + ) + op.alter_column( + 'git_hub', + 'repository_id', + existing_type=sa.VARCHAR(), + comment=None, + existing_comment='Идентификатор репозитория', + existing_nullable=True, + schema='ODS_SOCIAL', + ) + op.alter_column( + 'git_hub', + 'user_id', + existing_type=sa.VARCHAR(), + comment=None, + existing_comment='Идентификатор пользователя открывшего issue', + existing_nullable=True, + schema='ODS_SOCIAL', + ) + op.alter_column( + 'git_hub', + 'issue_id', + existing_type=sa.VARCHAR(), + comment=None, + existing_comment='Идентификатор issue', + existing_nullable=True, + schema='ODS_SOCIAL', + ) + op.revoke_on_table( + "test_dwh_dwh_user_info_write" if os.getenv("ENVIRONMENT") != "production" else "prod_dwh_dwh_user_info_write", + ['SELECT', 'UPDATE', 'DELETE', 'TRUNCATE', 'INSERT'], + '"DWH_USER_INFO".encrypted_info', + ) + op.revoke_on_table( + "test_dwh_dwh_user_info_read" if os.getenv("ENVIRONMENT") != "production" else "prod_dwh_dwh_user_info_read", + ['SELECT'], + '"DWH_USER_INFO".encrypted_info', + ) + op.revoke_on_table( + "test_dwh_dwh_user_info_all" if os.getenv("ENVIRONMENT") != "production" else "prod_dwh_dwh_user_info_all", + ['ALL'], + '"DWH_USER_INFO".encrypted_info', + ) + op.revoke_on_table( + "test_dwh_dm_user_all" if os.getenv("ENVIRONMENT") != "production" else "prod_dwh_dm_user_all", + ['ALL'], + '"DM_USER".union_member_card', + ) + op.revoke_on_table( + "test_dwh_dm_user_write" if os.getenv("ENVIRONMENT") != "production" else "prod_dwh_dm_user_write", + ['SELECT', 'UPDATE', 'DELETE', 'TRUNCATE', 'INSERT'], + '"DM_USER".union_member_card', + ) + op.revoke_on_table( + "test_dwh_dm_user_read" if os.getenv("ENVIRONMENT") != "production" else "prod_dwh_dm_user_read", + ['SELECT'], + '"DM_USER".union_member_card', + ) + op.revoke_on_table( + "test_dwh_dm_timetable_write" if os.getenv("ENVIRONMENT") != "production" else "prod_dwh_dm_timetable_write", + ['SELECT', 'UPDATE', 'DELETE', 'TRUNCATE', 'INSERT'], + '"DM_TIMETABLE".dm_timetable_act', + ) + op.revoke_on_table( + "test_dwh_dm_timetable_read" if os.getenv("ENVIRONMENT") != "production" else "prod_dwh_dm_timetable_read", + ['SELECT'], + '"DM_TIMETABLE".dm_timetable_act', + ) + op.revoke_on_table( + "test_dwh_dm_timetable_all" if os.getenv("ENVIRONMENT") != "production" else "prod_dwh_dm_timetable_all", + ['ALL'], + '"DM_TIMETABLE".dm_timetable_act', + ) + op.revoke_on_table( + "test_dwh_dm_rental_all" if os.getenv("ENVIRONMENT") != "production" else "prod_dwh_dm_rental_all", + ['ALL'], + '"DM_RENTAL".dm_strike', + ) + op.revoke_on_table( + "test_dwh_dm_rental_read" if os.getenv("ENVIRONMENT") != "production" else "prod_dwh_dm_rental_read", + ['SELECT'], + '"DM_RENTAL".dm_strike', + ) + op.revoke_on_table( + "test_dwh_dm_rental_write" if os.getenv("ENVIRONMENT") != "production" else "prod_dwh_dm_rental_write", + ['SELECT', 'UPDATE', 'DELETE', 'TRUNCATE', 'INSERT'], + '"DM_RENTAL".dm_strike', + ) + op.revoke_on_schema( + ( + "test_sensitive_dwh_stg_userdata_write" + if os.getenv("ENVIRONMENT") != "production" + else "prod_sensitive_dwh_stg_userdata_write" + ), + "STG_USERDATA", + ) + op.revoke_on_schema( + ( + "test_sensitive_dwh_stg_userdata_read" + if os.getenv("ENVIRONMENT") != "production" + else "prod_sensitive_dwh_stg_userdata_read" + ), + "STG_USERDATA", + ) + op.revoke_on_schema( + ( + "test_sensitive_dwh_stg_userdata_all" + if os.getenv("ENVIRONMENT") != "production" + else "prod_sensitive_dwh_stg_userdata_all" + ), + "STG_USERDATA", + ) + op.delete_group( + "test_sensitive_dwh_stg_userdata_write" + if os.getenv("ENVIRONMENT") != "production" + else "prod_sensitive_dwh_stg_userdata_write" + ) + op.delete_group( + "test_sensitive_dwh_stg_userdata_read" + if os.getenv("ENVIRONMENT") != "production" + else "prod_sensitive_dwh_stg_userdata_read" + ) + op.delete_group( + "test_sensitive_dwh_stg_userdata_all" + if os.getenv("ENVIRONMENT") != "production" + else "prod_sensitive_dwh_stg_userdata_all" + ) diff --git a/profcomff_definitions/DM/rental.py b/profcomff_definitions/DM/rental.py index a4cbd7b..c06001e 100644 --- a/profcomff_definitions/DM/rental.py +++ b/profcomff_definitions/DM/rental.py @@ -32,11 +32,12 @@ class DmRentalsEvents(Base): class DmStrike(Base): - __tablename__ = "dm_strike" """ Витрина страйки """ + __tablename__ = "dm_strike" + strike_id: Mapped[int] = mapped_column(primary_key=True, comment="Идентификатор страйка") user_id: Mapped[int] = mapped_column(comment="Идентификатор пользователя") user_segment: Mapped[str | None] = mapped_column(comment="Сегмент пользователя (опционально)") diff --git a/profcomff_definitions/DWH/rating.py b/profcomff_definitions/DWH/rating.py index a0326f6..18fe742 100644 --- a/profcomff_definitions/DWH/rating.py +++ b/profcomff_definitions/DWH/rating.py @@ -2,6 +2,7 @@ from uuid import UUID from sqlalchemy.orm import Mapped, mapped_column +from sqlalchemy.schema import Index from profcomff_definitions.base import Base @@ -36,6 +37,9 @@ class Lecturer(Base): valid_to_dt: Mapped[date | None] = mapped_column(comment="Дата конца действия записи") +Index('lecturer_ts_idx', Lecturer.valid_from_dt, Lecturer.valid_to_dt) + + class Comment(Base): """ Комментарии в rating-api diff --git a/profcomff_definitions/ODS/social.py b/profcomff_definitions/ODS/social.py index 343a321..8b923ef 100644 --- a/profcomff_definitions/ODS/social.py +++ b/profcomff_definitions/ODS/social.py @@ -26,16 +26,16 @@ class GitHub(Base): uuid: Mapped[UUID] = mapped_column(primary_key=True, comment="Техническое поле в dwh") status: Mapped[str] = mapped_column(comment="Статус issue") url: Mapped[str] = mapped_column(comment="Ссылка на issue") - issue_id: Mapped[int | None] = mapped_column(comment="Идентификатор issue") - user_id: Mapped[int | None] = mapped_column(comment="Идентификатор пользователя открывшего issue") + issue_id: Mapped[str | None] = mapped_column(comment="Идентификатор issue") + user_id: Mapped[str | None] = mapped_column(comment="Идентификатор пользователя открывшего issue") user_login: Mapped[str | None] = mapped_column(comment="Логин пользователя открывшего issue") issue_title: Mapped[str | None] = mapped_column(comment="Название issue") - repository_id: Mapped[int | None] = mapped_column(comment="Идентификатор репозитория") - assignee_id: Mapped[int | None] = mapped_column(comment="Идентификатор назначенного исполнителем issue") - assignee_login: Mapped[int | None] = mapped_column(comment="Логин назначенного исполнителем issue") + repository_id: Mapped[str | None] = mapped_column(comment="Идентификатор репозитория") + assignee_id: Mapped[str | None] = mapped_column(comment="Идентификатор назначенного исполнителем issue") + assignee_login: Mapped[str | None] = mapped_column(comment="Логин назначенного исполнителем issue") created_at: Mapped[datetime | None] = mapped_column(comment="Временная метка создания issue") updated_at: Mapped[datetime | None] = mapped_column(comment="Временная метка апдейта issue") closed_at: Mapped[datetime | None] = mapped_column(comment="Временная метка закрытия issue") - organization_id: Mapped[int] = mapped_column(comment="Идентификатор организации") + organization_id: Mapped[str] = mapped_column(comment="Идентификатор организации") organizatin_login: Mapped[str | None] = mapped_column(comment="Логин организации") event_ts: Mapped[datetime] = mapped_column(comment="Временная метка данного события")