package jnpf.dmsService.search;
|
|
import jnpf.dmsMapper.DmsDocumentMapper;
|
import jnpf.dmsMapper.DmsSearchIndexSourceMapper;
|
import jnpf.dmsService.search.meili.DmsMeilisearchClient;
|
import jnpf.dmsService.search.meili.DmsSearchIndexDocument;
|
import lombok.RequiredArgsConstructor;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
import java.io.IOException;
|
import java.util.UUID;
|
|
@Service
|
@RequiredArgsConstructor
|
public class DmsSearchIndexWriter {
|
private final DmsDocumentMapper documents;
|
private final DmsSearchIndexSourceMapper sources;
|
private final DmsMeilisearchClient client;
|
|
/** Serialize final submission with expiry so late extraction cannot resurrect a deleted index entry. */
|
@Transactional(rollbackFor = Exception.class)
|
public void publish(DmsSearchIndexDocument document) throws IOException {
|
UUID documentId = UUID.fromString(document.getDocumentId());
|
UUID versionId = UUID.fromString(document.getFileVersionId());
|
if (documents.selectByTenantAndIdForUpdate(document.getTenantId(), documentId) == null) return;
|
if (sources.selectSource(document.getTenantId(), documentId, versionId) == null) return;
|
client.upsert(document);
|
}
|
}
|