From 271fa832d96cc2c8d52a918562982b73f960962f Mon Sep 17 00:00:00 2001 From: Davlat Davydov Date: Mon, 10 Aug 2026 13:38:53 +0300 Subject: [PATCH 1/3] feat(application): remove company grant repository interface --- src/conode/application/interfaces/repositories/__init__.py | 3 +-- .../application/interfaces/repositories/grant/__init__.py | 6 +----- .../application/interfaces/repositories/grant/company.py | 4 ---- 3 files changed, 2 insertions(+), 11 deletions(-) delete mode 100644 src/conode/application/interfaces/repositories/grant/company.py diff --git a/src/conode/application/interfaces/repositories/__init__.py b/src/conode/application/interfaces/repositories/__init__.py index c1879b0..cb20e83 100644 --- a/src/conode/application/interfaces/repositories/__init__.py +++ b/src/conode/application/interfaces/repositories/__init__.py @@ -2,7 +2,7 @@ from .context import ContextRepository from .contract import ContractRepository from .edge import EdgeRepository -from .grant import CompanyGrantRepository, UserGrantRepository +from .grant import UserGrantRepository from .group import GroupRepository from .node import NodeAssociationRepository, NodeRepository from .offer import ( @@ -16,7 +16,6 @@ from .user import UserRepository __all__ = ( - "CompanyGrantRepository", "CompanyRepository", "ContextRepository", "ContractRepository", diff --git a/src/conode/application/interfaces/repositories/grant/__init__.py b/src/conode/application/interfaces/repositories/grant/__init__.py index 0a7626a..a950672 100644 --- a/src/conode/application/interfaces/repositories/grant/__init__.py +++ b/src/conode/application/interfaces/repositories/grant/__init__.py @@ -1,7 +1,3 @@ -from .company import CompanyGrantRepository from .user import UserGrantRepository -__all__ = ( - "CompanyGrantRepository", - "UserGrantRepository", -) +__all__ = ("UserGrantRepository",) diff --git a/src/conode/application/interfaces/repositories/grant/company.py b/src/conode/application/interfaces/repositories/grant/company.py deleted file mode 100644 index 6d37743..0000000 --- a/src/conode/application/interfaces/repositories/grant/company.py +++ /dev/null @@ -1,4 +0,0 @@ -from typing import Protocol - - -class CompanyGrantRepository(Protocol): ... From cac21ab2ae2aa8379013f037fec2c9eeca878958 Mon Sep 17 00:00:00 2001 From: Davlat Davydov Date: Mon, 10 Aug 2026 13:39:21 +0300 Subject: [PATCH 2/3] feat(infrastructure): remove company grant repository --- .../4574d0b1f6b0_remove_company_grant.py | 41 +++++++++++++++++++ .../infrastructure/persistence/registry.py | 21 +--------- 2 files changed, 42 insertions(+), 20 deletions(-) create mode 100644 src/conode/infrastructure/persistence/migrations/versions/4574d0b1f6b0_remove_company_grant.py diff --git a/src/conode/infrastructure/persistence/migrations/versions/4574d0b1f6b0_remove_company_grant.py b/src/conode/infrastructure/persistence/migrations/versions/4574d0b1f6b0_remove_company_grant.py new file mode 100644 index 0000000..b6ef48c --- /dev/null +++ b/src/conode/infrastructure/persistence/migrations/versions/4574d0b1f6b0_remove_company_grant.py @@ -0,0 +1,41 @@ +"""remove-company-grant + +Revision ID: 4574d0b1f6b0 +Revises: a3029168e306 +Create Date: 2026-08-10 10:37:40.356818 + +""" +from typing import Sequence, Union + +from alembic import op +import sqlalchemy as sa +from sqlalchemy.dialects import postgresql + +# revision identifiers, used by Alembic. +revision: str = '4574d0b1f6b0' +down_revision: Union[str, Sequence[str], None] = 'a3029168e306' +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + """Upgrade schema.""" + # ### commands auto generated by Alembic - please adjust! ### + op.drop_table('company_grant_record') + # ### end Alembic commands ### + + +def downgrade() -> None: + """Downgrade schema.""" + # ### commands auto generated by Alembic - please adjust! ### + op.create_table('company_grant_record', + sa.Column('id', sa.UUID(), autoincrement=False, nullable=False), + sa.Column('role_id', sa.UUID(), autoincrement=False, nullable=False), + sa.Column('company_id', sa.UUID(), autoincrement=False, nullable=False), + sa.Column('created_at', postgresql.TIMESTAMP(timezone=True), autoincrement=False, nullable=False), + sa.Column('updated_at', postgresql.TIMESTAMP(timezone=True), autoincrement=False, nullable=False), + sa.ForeignKeyConstraint(['company_id'], ['company_record.id'], name=op.f('company_grant_record_company_id_fkey'), ondelete='CASCADE'), + sa.ForeignKeyConstraint(['role_id'], ['role_record.id'], name=op.f('company_grant_record_role_id_fkey'), ondelete='CASCADE'), + sa.PrimaryKeyConstraint('id', name=op.f('company_grant_record_pkey')) + ) + # ### end Alembic commands ### diff --git a/src/conode/infrastructure/persistence/registry.py b/src/conode/infrastructure/persistence/registry.py index e9d341c..715bd78 100644 --- a/src/conode/infrastructure/persistence/registry.py +++ b/src/conode/infrastructure/persistence/registry.py @@ -16,7 +16,7 @@ from conode.domain.context import Context from conode.domain.contract import Contract, ContractStatus from conode.domain.edge import Edge -from conode.domain.grant import CompanyGrant, UserGrant +from conode.domain.grant import UserGrant from conode.domain.group import Group from conode.domain.node import Node, NodeAssociation from conode.domain.offer import ( @@ -232,24 +232,6 @@ Column("updated_at", DateTime(timezone=True), nullable=False), ) -company_grant_record_table = Table( - "company_grant_record", - metadata, - Column("id", UUID, primary_key=True, nullable=False), - Column( - "role_id", - ForeignKey("role_record.id", ondelete="CASCADE"), - nullable=False, - ), - Column( - "company_id", - ForeignKey("company_record.id", ondelete="CASCADE"), - nullable=False, - ), - Column("created_at", DateTime(timezone=True), nullable=False), - Column("updated_at", DateTime(timezone=True), nullable=False), -) - offer_link_record_table = Table( "offer_link_record", metadata, @@ -386,7 +368,6 @@ def start_mapper() -> None: registry_mapper.map_imperatively(Context, context_record_table) registry_mapper.map_imperatively(Role, role_record_table) registry_mapper.map_imperatively(UserGrant, user_grant_record_table) - registry_mapper.map_imperatively(CompanyGrant, company_grant_record_table) registry_mapper.map_imperatively(RolePermission, permission_record_table) registry_mapper.map_imperatively( Edge, From 67f7120d1d28d152ef00f0595023280b7bbe8691 Mon Sep 17 00:00:00 2001 From: Davlat Davydov Date: Mon, 10 Aug 2026 13:39:39 +0300 Subject: [PATCH 3/3] feat(domain): remove company grant domain model --- src/conode/domain/grant/__init__.py | 3 --- src/conode/domain/grant/company.py | 32 ----------------------------- 2 files changed, 35 deletions(-) delete mode 100644 src/conode/domain/grant/company.py diff --git a/src/conode/domain/grant/__init__.py b/src/conode/domain/grant/__init__.py index 1f7ca13..e717449 100644 --- a/src/conode/domain/grant/__init__.py +++ b/src/conode/domain/grant/__init__.py @@ -1,9 +1,6 @@ -from .company import CompanyGrant, CompanyGrantId from .user import UserGrant, UserGrantId __all__ = ( - "CompanyGrant", - "CompanyGrantId", "UserGrant", "UserGrantId", ) diff --git a/src/conode/domain/grant/company.py b/src/conode/domain/grant/company.py deleted file mode 100644 index ba4189e..0000000 --- a/src/conode/domain/grant/company.py +++ /dev/null @@ -1,32 +0,0 @@ -from dataclasses import dataclass -from datetime import UTC, datetime -from typing import NewType, Self -from uuid import UUID - -from conode.domain.company import Company, CompanyId -from conode.domain.role import Role, RoleId -from conode.domain.shared import Entity - -CompanyGrantId = NewType("CompanyGrantId", UUID) - - -@dataclass -class CompanyGrant(Entity[CompanyGrantId]): - company_id: CompanyId - role_id: RoleId - - @classmethod - def new( - cls, - company_grant_id: CompanyGrantId, - role: Role, - company: Company, - ) -> Self: - now = datetime.now(UTC) - return cls( - id=company_grant_id, - company_id=company.id, - role_id=role.id, - created_at=now, - updated_at=now, - )