Skip to content

Commit 45b81f9

Browse files
authored
chore: Remove upsert in setting last release notes version (#31324)
Instead of `upsert`, we `update` first, which is arguably the most used operation in this context, and if that fails, then we attempt an insert. We're not expecting a performance hit, since most operations here would be an actual `update` only.
1 parent e387aa2 commit 45b81f9

File tree

3 files changed

+16
-12
lines changed

3 files changed

+16
-12
lines changed

app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/CustomUserDataRepositoryCE.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
public interface CustomUserDataRepositoryCE extends AppsmithRepository<UserData> {
1010

11-
Mono<Void> saveReleaseNotesViewedVersion(String userId, String version);
11+
Mono<Integer> saveReleaseNotesViewedVersion(String userId, String version);
1212

1313
Mono<Void> removeIdFromRecentlyUsedList(String userId, String workspaceId, List<String> applicationIds);
1414

app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/CustomUserDataRepositoryCEImpl.java

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,6 @@
1414
import java.util.List;
1515

1616
import static com.appsmith.server.helpers.ce.bridge.Bridge.bridge;
17-
import static org.springframework.data.mongodb.core.query.Criteria.where;
18-
import static org.springframework.data.mongodb.core.query.Query.query;
1917

2018
public class CustomUserDataRepositoryCEImpl extends BaseAppsmithRepositoryImpl<UserData>
2119
implements CustomUserDataRepositoryCE {
@@ -28,14 +26,10 @@ public CustomUserDataRepositoryCEImpl(
2826
}
2927

3028
@Override
31-
public Mono<Void> saveReleaseNotesViewedVersion(String userId, String version) {
32-
return mongoOperations
33-
.upsert(
34-
query(where(UserData.Fields.userId).is(userId)),
35-
Update.update(UserData.Fields.releaseNotesViewedVersion, version)
36-
.setOnInsert(UserData.Fields.userId, userId),
37-
UserData.class)
38-
.then();
29+
public Mono<Integer> saveReleaseNotesViewedVersion(String userId, String version) {
30+
return queryBuilder()
31+
.criteria(bridge().equal(UserData.Fields.userId, userId))
32+
.updateFirst(Update.update(UserData.Fields.releaseNotesViewedVersion, version));
3933
}
4034

4135
@Override

app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/UserDataServiceCEImpl.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,17 @@ public Mono<User> setViewedCurrentVersionReleaseNotes(User user, String version)
174174
.getDefaultTenantId()
175175
.flatMap(tenantId -> userRepository.findByEmailAndTenantId(user.getEmail(), tenantId))
176176
.flatMap(user1 -> Mono.justOrEmpty(user1.getId())))
177-
.flatMap(userId -> repository.saveReleaseNotesViewedVersion(userId, version))
177+
.flatMap(userId -> repository
178+
.saveReleaseNotesViewedVersion(userId, version)
179+
.flatMap(count -> {
180+
if (count == 0) {
181+
final UserData userData = new UserData();
182+
userData.setReleaseNotesViewedVersion(version);
183+
userData.setUserId(user.getId());
184+
return repository.save(userData).then();
185+
}
186+
return Mono.empty();
187+
}))
178188
.thenReturn(user);
179189
}
180190

0 commit comments

Comments
 (0)