6
6
from posts .models .post import Post
7
7
from search .models import SearchIndex
8
8
from users .models .user import User
9
+ from utils .queryset import chunked_queryset
9
10
10
11
log = logging .getLogger (__name__ )
11
12
@@ -16,17 +17,26 @@ class Command(BaseCommand):
16
17
def handle (self , * args , ** options ):
17
18
SearchIndex .objects .all ().delete ()
18
19
19
- for comment in Comment .visible_objects ().filter (is_deleted = False , post__is_visible = True ):
20
- self .stdout .write (f"Indexing comment: { comment .id } " )
21
- SearchIndex .update_comment_index (comment )
22
-
23
- for post in Post .visible_objects ().filter (is_shadow_banned = False ):
24
- self .stdout .write (f"Indexing post: { post .slug } " )
25
- SearchIndex .update_post_index (post )
26
-
27
- for user in User .objects .filter (moderation_status = User .MODERATION_STATUS_APPROVED ):
28
- self .stdout .write (f"Indexing user: { user .slug } " )
29
- SearchIndex .update_user_index (user )
30
- SearchIndex .update_user_tags (user )
20
+ for chunk in chunked_queryset (
21
+ Comment .visible_objects ().filter (is_deleted = False , post__is_visible = True ).order_by ("-created_at" )
22
+ ):
23
+ for comment in chunk :
24
+ self .stdout .write (f"Indexing comment: { comment .id } " )
25
+ SearchIndex .update_comment_index (comment )
26
+
27
+ for chunk in chunked_queryset (
28
+ Post .visible_objects ().filter (is_shadow_banned = False ).order_by ("-created_at" )
29
+ ):
30
+ for post in chunk :
31
+ self .stdout .write (f"Indexing post: { post .slug } " )
32
+ SearchIndex .update_post_index (post )
33
+
34
+ for chunk in chunked_queryset (
35
+ User .objects .filter (moderation_status = User .MODERATION_STATUS_APPROVED ).order_by ("-created_at" )
36
+ ):
37
+ for user in chunk :
38
+ self .stdout .write (f"Indexing user: { user .slug } " )
39
+ SearchIndex .update_user_index (user )
40
+ SearchIndex .update_user_tags (user )
31
41
32
42
self .stdout .write ("Done 🥙" )
0 commit comments