PageConverter.kt
package com.example.templateproject.core.mapper
import com.example.templateproject.api.dto.BaseDTO
import com.example.templateproject.api.dto.PageDetails
import com.example.templateproject.api.dto.SortOrder
import org.springframework.data.domain.Sort
import org.springframework.stereotype.Service
@Service
class PageConverter {
fun <D : BaseDTO> createPageDetails(source: org.springframework.data.domain.Page<D>) =
PageDetails<D>(
content = source.content,
pageNumber = source.pageable.pageNumber,
pageSize = source.pageable.pageSize,
totalElements = source.totalElements,
totalPages = source.totalPages,
sorted = source.sort.isSorted,
sortOrders = source.sort.map { createSortOrder(it) }.toList(),
)
private fun createSortOrder(order: Sort.Order) = SortOrder(order.property, order.direction.name)
}