Skip to content

Commit f1a5cb7

Browse files
pb-jojenkinsEdificePublic
authored andcommitted
fix(conversation): COCO-4649, foreign key usermessagesattachments (#886)
* fix(conversation): COCO-4649, foreign key usermessagesattachments * Fix batches for messages attachements
1 parent 6f84f7f commit f1a5cb7

File tree

1 file changed

+16
-11
lines changed

1 file changed

+16
-11
lines changed

conversation/backend/src/main/java/org/entcore/conversation/service/impl/SqlConversationService.java

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -320,37 +320,42 @@ public void handle(Either<String, JsonObject> event) {
320320
int userMessageValueCount = 0;
321321
int userMessageAttachementCount = 0;
322322

323+
// Messages
324+
//
323325
// Optimisation de l'envois des messages: faire des requêtes unitaires est couteux pour postgresql notament
324326
// au niveau de la gestion des locks et de son index. Les groupes en insert .. values est bcp plus efficace
325327
for(Object toObj : ids){
326-
if(toObj.equals(user.getUserId())) {
327-
continue;
328-
}
328+
if(toObj.equals(user.getUserId())) continue;
329+
329330
userMessageValueCount++;
330331
insertUserMessageBuilder.append(String.format("('%s', '%s', %s ),", toObj, draftId, totalQuota));
331-
if (userMessageValueCount > conversationBatchSize) {
332-
userMessageValueCount = 0;
332+
if (userMessageValueCount >= conversationBatchSize) {
333333
builder.prepared(insertUserMessageBuilder.deleteCharAt(insertUserMessageBuilder.length()-1).toString(), new JsonArray());
334334
insertUserMessageBuilder = new StringBuilder(insertUserMessage);
335+
userMessageValueCount = 0;
335336
}
336337
if (threadId != null) {
337338
builder.prepared(insertUserThread, new fr.wseduc.webutils.collections.JsonArray().add(toObj.toString()).add(threadId).add(1));
338339
}
340+
}
341+
if (userMessageValueCount > 0) {
342+
builder.prepared(insertUserMessageBuilder.deleteCharAt(insertUserMessageBuilder.length()-1).toString(), new JsonArray());
343+
}
344+
345+
// Pièces jointes
346+
for(Object toObj : ids){
347+
if(toObj.equals(user.getUserId())) continue;
339348

340349
for(Object attachmentId : attachmentIds){
341350
userMessageAttachementCount++;
342351
insertUserAttachmentBuilder.append(String.format("('%s', '%s', '%s' ),", toObj, draftId, attachmentId));
343-
if (userMessageAttachementCount > conversationBatchSize) {
344-
userMessageAttachementCount = 0;
352+
if (userMessageAttachementCount >= conversationBatchSize) {
345353
builder.prepared(insertUserAttachmentBuilder.deleteCharAt(insertUserAttachmentBuilder.length()-1).toString(), new JsonArray());
346354
insertUserAttachmentBuilder = new StringBuilder(insertUserAttachment);
355+
userMessageAttachementCount = 0;
347356
}
348357
}
349358
}
350-
351-
if (userMessageValueCount > 0) {
352-
builder.prepared(insertUserMessageBuilder.deleteCharAt(insertUserMessageBuilder.length()-1).toString(), new JsonArray());
353-
}
354359
if (userMessageAttachementCount > 0) {
355360
builder.prepared(insertUserAttachmentBuilder.deleteCharAt(insertUserAttachmentBuilder.length()-1).toString(), new JsonArray());
356361
}

0 commit comments

Comments
 (0)