44from dataclasses import dataclass
55from typing import override
66
7- from ai .backend .common .data .permission .types import (
8- EntityType ,
9- RBACElementType ,
10- ScopeType ,
11- )
12- from ai .backend .manager .actions .action import BaseActionResult
13- from ai .backend .manager .actions .action .scope import BaseScopeAction
7+ from ai .backend .common .data .permission .types import RBACElementType
148from ai .backend .manager .actions .types import ActionOperationType
159from ai .backend .manager .data .permission .types import RBACElementRef
1610from ai .backend .manager .services .vfolder .actions .base import (
@@ -60,32 +54,24 @@ def target_entity_id(self) -> str:
6054
6155
6256@dataclass
63- class PurgeVFolderV2Action (BaseScopeAction ):
64- user_id : uuid .UUID
57+ class PurgeVFolderV2Action (VFolderSingleEntityAction ):
58+ """Permanently purge a vfolder by ID with RBAC enforcement."""
59+
6560 vfolder_id : uuid .UUID
6661
6762 @override
68- @classmethod
69- def entity_type (cls ) -> EntityType :
70- return EntityType .VFOLDER
63+ def entity_id (self ) -> str | None :
64+ return str (self .vfolder_id )
7165
7266 @override
7367 @classmethod
7468 def operation_type (cls ) -> ActionOperationType :
7569 return ActionOperationType .PURGE
7670
7771 @override
78- def entity_id (self ) -> str | None :
72+ def target_entity_id (self ) -> str :
7973 return str (self .vfolder_id )
8074
81- @override
82- def scope_type (self ) -> ScopeType :
83- return ScopeType .USER
84-
85- @override
86- def scope_id (self ) -> str :
87- return str (self .user_id )
88-
8975 @override
9076 def target_element (self ) -> RBACElementRef :
9177 return RBACElementRef (
@@ -95,9 +81,13 @@ def target_element(self) -> RBACElementRef:
9581
9682
9783@dataclass
98- class PurgeVFolderV2ActionResult (BaseActionResult ):
84+ class PurgeVFolderV2ActionResult (VFolderSingleEntityActionResult ):
9985 vfolder_id : uuid .UUID
10086
10187 @override
10288 def entity_id (self ) -> str | None :
10389 return str (self .vfolder_id )
90+
91+ @override
92+ def target_entity_id (self ) -> str :
93+ return str (self .vfolder_id )
0 commit comments