@@ -167,35 +167,32 @@ def record_search_query(project_slug, version_slug, query, total_results, time_s
167
167
modified__gte = before_10_sec ,
168
168
).order_by ('-modified' )
169
169
170
- # If a partial query exists,
171
- # then just update that object.
172
- for partial_query in partial_query_qs .iterator ():
170
+ # If a partial query exists, then just update that object.
171
+ # Check max 30 queries, in case there is a flood of queries.
172
+ max_queries = 30
173
+ for partial_query in partial_query_qs [:max_queries ]:
173
174
if query .startswith (partial_query .query ):
174
175
partial_query .query = query
175
176
partial_query .total_results = total_results
176
177
partial_query .save ()
177
178
return
178
179
179
- project = Project .objects .filter (slug = project_slug ).first ()
180
- if not project :
181
- log .debug (
182
- 'Not recording the search query because project does not exist. '
183
- 'project_slug: %s' , project_slug
184
- )
185
- return
186
-
187
- version = Version .objects .filter (project = project , slug = version_slug ).first ()
188
-
180
+ version = (
181
+ Version .objects
182
+ .filter (slug = version_slug , project__slug = project_slug )
183
+ .prefetch_related ('project' )
184
+ .first ()
185
+ )
189
186
if not version :
190
187
log .debug (
191
- 'Not recording the search query because version does not exist. '
192
- 'project_slug: %s, version_slug: %s' , project_slug , version_slug
188
+ 'Not recording the search query because project does not exist. '
189
+ 'project=%s version=%s' ,
190
+ project_slug , version_slug ,
193
191
)
194
192
return
195
193
196
- # Create a new SearchQuery object.
197
194
SearchQuery .objects .create (
198
- project = project ,
195
+ project = version . project ,
199
196
version = version ,
200
197
query = query ,
201
198
total_results = total_results ,
0 commit comments