private Mono<Boolean> createCollectionsIfNotExist(Set<String> existingCollectionNames) {
        return PublisherUtil.areAllTrue(
                adminMongoClient.createCollectionIfNotExists(Admin.class, existingCollectionNames),
                adminMongoClient.createCollectionIfNotExists(AdminRole.class,
                        existingCollectionNames),

                groupMongoClient.createCollectionIfNotExists(Group.class, existingCollectionNames),
                groupMongoClient.createCollectionIfNotExists(GroupBlockedUser.class,
                        existingCollectionNames),
                groupMongoClient.createCollectionIfNotExists(GroupInvitation.class,
                        existingCollectionNames),
                groupMongoClient.createCollectionIfNotExists(GroupJoinQuestion.class,
                        existingCollectionNames),
                groupMongoClient.createCollectionIfNotExists(GroupJoinRequest.class,
                        existingCollectionNames),
                groupMongoClient.createCollectionIfNotExists(GroupMember.class,
                        existingCollectionNames),
                groupMongoClient.createCollectionIfNotExists(GroupType.class,
                        existingCollectionNames),
                groupMongoClient.createCollectionIfNotExists(GroupVersion.class,
                        existingCollectionNames),

                conferenceMongoClient.createCollectionIfNotExists(Meeting.class,
                        existingCollectionNames),

                messageMongoClient.createCollectionIfNotExists(Message.class,
                        existingCollectionNames),

                conversationMongoClient.createCollectionIfNotExists(ConversationSettings.class,
                        existingCollectionNames),
                conversationMongoClient.createCollectionIfNotExists(GroupConversation.class,
                        existingCollectionNames),
                conversationMongoClient.createCollectionIfNotExists(PrivateConversation.class,
                        existingCollectionNames),

                // ElasticsearchManager has its own logic to create collections dynamically,
                // so we don't need to create collections for it.
                // mongoClient.createCollectionIfNotExists(SyncLog.class),

                userMongoClient.createCollectionIfNotExists(User.class, existingCollectionNames),
                userMongoClient.createCollectionIfNotExists(UserFriendRequest.class,
                        existingCollectionNames),
                userMongoClient.createCollectionIfNotExists(UserRelationship.class,
                        existingCollectionNames),
                userMongoClient.createCollectionIfNotExists(UserRelationshipGroup.class,
                        existingCollectionNames),
                userMongoClient.createCollectionIfNotExists(UserRelationshipGroupMember.class,
                        existingCollectionNames),
                userMongoClient.createCollectionIfNotExists(UserRole.class,
                        existingCollectionNames),
                userMongoClient.createCollectionIfNotExists(UserSettings.class,
                        existingCollectionNames),
                userMongoClient.createCollectionIfNotExists(UserVersion.class,
                        existingCollectionNames));
    }
@return True if all collections have existed
turms-service/src/main/java/im/turms/service/storage/mongo/MongoCollectionInitializer.java