서승완

feat: implement empty trash api

...@@ -70,7 +70,34 @@ def create(request): ...@@ -70,7 +70,34 @@ def create(request):
70 70
71 # TODO: 휴지통 비우기 71 # TODO: 휴지통 비우기
72 def empty_trash(request): 72 def empty_trash(request):
73 - return {'result': True} 73 + # TODO: Auth
74 + request.user_id = 1
75 +
76 + # Query Files
77 + files = File.objects.filter(owner_user_id=request.user_id, is_trahsed=1, deleted_at__isnull=True)
78 +
79 + # First Depth
80 + del_list = []
81 + del_check = []
82 + for del_file in files:
83 + del_check.append(del_file.id)
84 +
85 + # Child Depth
86 + while True:
87 + if not del_check:
88 + break
89 + child_files = File.objects.filter(parent_id__in=del_check)
90 + del_list.extend(del_check)
91 + del_check.clear()
92 + for del_file in child_files:
93 + del_check.append(del_file.id)
94 +
95 + # TODO: S3 Delete
96 +
97 + # Update
98 + File.objects.filter(id__in=del_list).update(is_trahsed=1, deleted_at=timezone.now())
99 +
100 + return {'result': True, 'affected': del_list}
74 101
75 102
76 # TODO: 폴더/파일 조회, 파일 다운로드 103 # TODO: 폴더/파일 조회, 파일 다운로드
......