ContentFullTextRepository.java

package net.sasasin.sreader.repository;

import static net.sasasin.sreader.jooq.Tables.CONTENT_FULL_TEXT;

import java.time.OffsetDateTime;
import net.sasasin.sreader.domain.ContentFullText;
import org.jooq.DSLContext;
import org.springframework.stereotype.Repository;

@Repository
public class ContentFullTextRepository {

  private final DSLContext dsl;

  public ContentFullTextRepository(DSLContext dsl) {
    this.dsl = dsl;
  }

  public boolean insertIfAbsent(ContentFullText fullText) {
    OffsetDateTime now = OffsetDateTime.now();
    return dsl.insertInto(CONTENT_FULL_TEXT)
            .set(CONTENT_FULL_TEXT.ID, fullText.id())
            .set(CONTENT_FULL_TEXT.CONTENT_HEADER_ID, fullText.contentHeaderId())
            .set(CONTENT_FULL_TEXT.FULL_TEXT, fullText.fullText())
            .set(CONTENT_FULL_TEXT.EXTRACTION_METHOD, (String) null)
            .set(CONTENT_FULL_TEXT.EXTRACTION_STATUS, "success")
            .set(CONTENT_FULL_TEXT.ERROR_MESSAGE, (String) null)
            .set(CONTENT_FULL_TEXT.SOURCE_KIND, (String) null)
            .set(CONTENT_FULL_TEXT.EXTRACTED_URL, (String) null)
            .set(CONTENT_FULL_TEXT.EXTRACTED_AT, now)
            .set(CONTENT_FULL_TEXT.CREATED_AT, now)
            .set(CONTENT_FULL_TEXT.UPDATED_AT, now)
            .onConflict(CONTENT_FULL_TEXT.ID)
            .doNothing()
            .execute()
        == 1;
  }
}