
com.thebund1st.liyang.adapter.jdbc.JdbcExpiringDelayJobQuery Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of delay-job-core Show documentation
Show all versions of delay-job-core Show documentation
Your description of the lib
The newest version!
package com.thebund1st.liyang.adapter.jdbc;
import com.thebund1st.liyang.application.ExpiringDelayJobQuery;
import com.thebund1st.liyang.domain.model.DelayJob;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.Pageable;
import org.springframework.jdbc.core.JdbcTemplate;
import java.util.List;
import static com.thebund1st.liyang.domain.model.DelayJob.Status.PENDING;
@RequiredArgsConstructor
public class JdbcExpiringDelayJobQuery implements ExpiringDelayJobQuery {
private final JdbcTemplate jdbcTemplate;
@Override
public Page findBy(Long expireBeforeThis, Pageable pageable) {
long totalElements = jdbcTemplate.queryForObject("SELECT COUNT(ID) AS TOTAL_ELEMENTS FROM DELAY_JOB " +
"WHERE EXPIRES <= ? AND STATUS = ? ",
new Object[]{expireBeforeThis, PENDING.getValue()},
(rs, rowNum) -> rs.getLong("TOTAL_ELEMENTS"));
List content = jdbcTemplate.query("SELECT ID FROM DELAY_JOB " +
"WHERE EXPIRES <= ? AND STATUS = ? " +
"ORDER BY CREATED_AT ASC " +
"LIMIT ?, ?",
new Object[]{
expireBeforeThis,
PENDING.getValue(),
pageable.getOffset(),
pageable.getPageSize()
},
(rs, rowNum) -> new DelayJob.Identifier(rs.getString("ID")));
return new PageImpl<>(content, pageable, totalElements);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy