Skip to content

Commit 5178354

Browse files
[DOP-22267] - remove is_deleted column to deleted object for Group, Transfer, Queue objects (#168)
* [DOP-22267] - remove is_deleted column to deleted object for (Group, Queue, Transfer) * [DOP-22267] - add removing orphan transfers from scheduler
1 parent db2374f commit 5178354

File tree

16 files changed

+73
-45
lines changed

16 files changed

+73
-45
lines changed
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Add deletion of **transfers**, **queues** and **groups** records
2+
instead of marking them as deleted

syncmaster/db/migrations/versions/2023-11-23_0002_create_group_table.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ def upgrade():
2727
sa.Column("owner_id", sa.BigInteger(), nullable=False),
2828
sa.Column("created_at", sa.DateTime(), server_default=sa.text("now()"), nullable=False),
2929
sa.Column("updated_at", sa.DateTime(), server_default=sa.text("now()"), nullable=False),
30-
sa.Column("is_deleted", sa.Boolean(), nullable=False),
3130
sa.Column(
3231
"search_vector",
3332
postgresql.TSVECTOR(),

syncmaster/db/migrations/versions/2023-11-23_0003_create_queue_table.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ def upgrade():
2828
sa.Column("description", sa.String(length=512), nullable=False),
2929
sa.Column("created_at", sa.DateTime(), server_default=sa.text("now()"), nullable=False),
3030
sa.Column("updated_at", sa.DateTime(), server_default=sa.text("now()"), nullable=False),
31-
sa.Column("is_deleted", sa.Boolean(), nullable=False),
3231
sa.Column(
3332
"search_vector",
3433
postgresql.TSVECTOR(),

syncmaster/db/migrations/versions/2023-11-23_0007_create_transfer_table.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@ def upgrade():
4747
sa.Column("is_scheduled", sa.Boolean(), nullable=False),
4848
sa.Column("schedule", sa.String(length=32), nullable=False),
4949
sa.Column("queue_id", sa.BigInteger(), nullable=False),
50-
sa.Column("is_deleted", sa.Boolean(), nullable=False),
5150
sa.Column("created_at", sa.DateTime(), server_default=sa.text("now()"), nullable=False),
5251
sa.Column("updated_at", sa.DateTime(), server_default=sa.text("now()"), nullable=False),
5352
sa.ForeignKeyConstraint(

syncmaster/db/models/group.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
from sqlalchemy.orm import Mapped, mapped_column, relationship
1111
from sqlalchemy_utils import ChoiceType
1212

13-
from syncmaster.db.mixins import DeletableMixin, TimestampMixin
13+
from syncmaster.db.mixins import TimestampMixin
1414
from syncmaster.db.models.base import Base
1515
from syncmaster.db.models.user import User
1616

@@ -69,7 +69,7 @@ def roles_at_least(cls, role: str | GroupMemberRole) -> list[str]:
6969
return [r.value for r, level in cls.role_hierarchy().items() if level >= required_level]
7070

7171

72-
class Group(Base, TimestampMixin, DeletableMixin):
72+
class Group(Base, TimestampMixin):
7373
id: Mapped[int] = mapped_column(BigInteger, primary_key=True)
7474
name: Mapped[str] = mapped_column(String(256), nullable=False, unique=True)
7575
description: Mapped[str] = mapped_column(String(512), nullable=False, default="")

syncmaster/db/models/queue.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,15 @@
88
from sqlalchemy.dialects.postgresql import TSVECTOR
99
from sqlalchemy.orm import Mapped, mapped_column, relationship
1010

11-
from syncmaster.db.mixins import DeletableMixin, ResourceMixin, TimestampMixin
11+
from syncmaster.db.mixins import ResourceMixin, TimestampMixin
1212
from syncmaster.db.models.base import Base
1313

1414
if TYPE_CHECKING:
1515
from syncmaster.db.models.group import Group
1616
from syncmaster.db.models.transfer import Transfer
1717

1818

19-
class Queue(Base, ResourceMixin, TimestampMixin, DeletableMixin):
19+
class Queue(Base, ResourceMixin, TimestampMixin):
2020
name: Mapped[str] = mapped_column(String(128), nullable=False)
2121
slug: Mapped[str] = mapped_column(String(256), nullable=False, unique=True)
2222

syncmaster/db/models/transfer.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
from sqlalchemy.dialects.postgresql import TSVECTOR
1818
from sqlalchemy.orm import Mapped, declared_attr, mapped_column, relationship
1919

20-
from syncmaster.db.mixins import DeletableMixin, ResourceMixin, TimestampMixin
20+
from syncmaster.db.mixins import ResourceMixin, TimestampMixin
2121
from syncmaster.db.models.base import Base
2222
from syncmaster.db.models.group import Group
2323

@@ -29,7 +29,6 @@
2929
class Transfer(
3030
Base,
3131
ResourceMixin,
32-
DeletableMixin,
3332
TimestampMixin,
3433
):
3534
source_connection_id: Mapped[int] = mapped_column(

syncmaster/db/repositories/group.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ async def paginate_all(
3232
page_size: int,
3333
search_query: str | None = None,
3434
) -> Pagination:
35-
stmt = select(Group).where(Group.is_deleted.is_(False))
35+
stmt = select(Group)
3636
if search_query:
3737
stmt = self._construct_vector_search(stmt, search_query)
3838

@@ -73,7 +73,6 @@ async def paginate_for_user(
7373
select(Group)
7474
.where(
7575
Group.owner_id == current_user_id,
76-
Group.is_deleted.is_(False),
7776
)
7877
.order_by(Group.name)
7978
)
@@ -104,7 +103,6 @@ async def paginate_for_user(
104103
.join(Group, UserGroup.group_id == Group.id)
105104
.where(
106105
UserGroup.user_id == current_user_id,
107-
Group.is_deleted.is_(False),
108106
)
109107
.order_by(Group.name)
110108
)
@@ -154,7 +152,7 @@ async def read_by_id(
154152
self,
155153
group_id: int,
156154
) -> Group:
157-
stmt = select(Group).where(Group.id == group_id, Group.is_deleted.is_(False))
155+
stmt = select(Group).where(Group.id == group_id)
158156
try:
159157
result: ScalarResult[Group] = await self._session.scalars(stmt)
160158
return result.one()
@@ -186,7 +184,7 @@ async def update(
186184
description: str,
187185
owner_id: int,
188186
) -> Group:
189-
args = [Group.id == group_id, Group.is_deleted.is_(False)]
187+
args = [Group.id == group_id]
190188
try:
191189
return await self._update(
192190
*args,
@@ -278,7 +276,7 @@ async def get_member_paginate(
278276
async def delete(self, group_id: int) -> None:
279277
try:
280278
await self._delete(group_id)
281-
except EntityNotFoundError as e:
279+
except (EntityNotFoundError, NoResultFound) as e:
282280
raise GroupNotFoundError from e
283281

284282
async def add_user(

syncmaster/db/repositories/queue.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ async def read_by_id(
3838
) -> Queue:
3939
stmt = (
4040
select(Queue)
41-
.where(Queue.id == queue_id, Queue.is_deleted.is_(False))
41+
.where(Queue.id == queue_id)
4242
.options(selectinload(Queue.transfers))
4343
.options(selectinload(Queue.group))
4444
)
@@ -56,7 +56,6 @@ async def paginate(
5656
search_query: str | None = None,
5757
):
5858
stmt = select(Queue).where(
59-
Queue.is_deleted.is_(False),
6059
Queue.group_id == group_id,
6160
)
6261
if search_query:
@@ -77,7 +76,6 @@ async def update(
7776
queue = await self.read_by_id(queue_id=queue_id)
7877
return await self._update(
7978
Queue.id == queue_id,
80-
Queue.is_deleted.is_(False),
8179
description=queue_data.description or queue.description,
8280
)
8381
except IntegrityError as e:

syncmaster/db/repositories/transfer.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@ async def paginate(
4141
is_scheduled: bool | None = None,
4242
) -> Pagination:
4343
stmt = select(Transfer).where(
44-
Transfer.is_deleted.is_(False),
4544
Transfer.group_id == group_id,
4645
)
4746

@@ -97,7 +96,6 @@ async def read_by_id(
9796
select(Transfer)
9897
.where(
9998
Transfer.id == transfer_id,
100-
Transfer.is_deleted.is_(False),
10199
)
102100
.options(selectinload(Transfer.queue))
103101
)
@@ -172,7 +170,6 @@ async def update(
172170
strategy_params[key] = transfer.strategy_params[key]
173171
return await self._update(
174172
Transfer.id == transfer.id,
175-
Transfer.is_deleted.is_(False),
176173
name=name or transfer.name,
177174
description=description or transfer.description,
178175
strategy_params=strategy_params,

0 commit comments

Comments
 (0)