package com.nurkiewicz.jdbcrepository.sql;
import com.nurkiewicz.jdbcrepository.TableDescription;
import org.springframework.data.domain.Pageable;
/**
* Author: tom
*/
public class SQL99Helper {
public static String ROW_NUM_WRAPPER = "SELECT a__.* FROM (SELECT row_number() OVER (ORDER BY %s) AS ROW_NUM, t__.* FROM (%s) t__) a__ WHERE a__.row_num BETWEEN %s AND %s";
public static String generateSelectAllWithPagination(TableDescription table, Pageable page, SqlGenerator sqlGenerator) {
final int beginOffset = page.getPageNumber() * page.getPageSize() + 1;
final int endOffset = beginOffset + page.getPageSize() - 1;
String orderByPart = page.getSort() != null ? page.getSort().toString().replace(":", "") : table.getIdColumns().get(0);
String selectAllPart = sqlGenerator.selectAll(table);
return String.format(ROW_NUM_WRAPPER, orderByPart, selectAllPart, beginOffset, endOffset);
}
}