Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
package it.aboutbits.springboot.toolbox.web.response;

import it.aboutbits.springboot.toolbox.web.response.meta.Meta;
import lombok.NonNull;

public record ItemResponse<T>(@NonNull T data) {
public final class ItemResponse<T> extends ItemResponseWithMeta<T, Meta.EmptyMeta> {
public ItemResponse(@NonNull T data) {
super(data, new Meta.EmptyMeta());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package it.aboutbits.springboot.toolbox.web.response;

import it.aboutbits.springboot.toolbox.web.response.meta.Meta;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NonNull;

@Getter
@EqualsAndHashCode
public class ItemResponseWithMeta<T, M extends Meta> {
private final T data;
private final M meta;

public ItemResponseWithMeta(@NonNull T data, @NonNull M meta) {
this.data = data;
this.meta = meta;
}

public T data() {
return data;
}

public M meta() {
return meta;
}
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
package it.aboutbits.springboot.toolbox.web.response;

import it.aboutbits.springboot.toolbox.web.response.meta.Meta;
import lombok.NonNull;

import java.util.List;

public record ListResponse<T>(@NonNull List<T> data) {
public final class ListResponse<T> extends ListResponseWithMeta<T, Meta.EmptyMeta> {
public ListResponse(@NonNull List<T> data) {
super(data, new Meta.EmptyMeta());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package it.aboutbits.springboot.toolbox.web.response;

import it.aboutbits.springboot.toolbox.web.response.meta.Meta;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NonNull;

import java.util.List;

@Getter
@EqualsAndHashCode
public class ListResponseWithMeta<T, M extends Meta> {
private final List<T> data;
private final M meta;

public ListResponseWithMeta(@NonNull List<T> data, @NonNull M meta) {
this.data = data;
this.meta = meta;
}

public List<T> data() {
return data;
}

public M meta() {
return meta;
}
}
Original file line number Diff line number Diff line change
@@ -1,28 +1,22 @@
package it.aboutbits.springboot.toolbox.web.response;

import it.aboutbits.springboot.toolbox.web.response.meta.MetaWithPagination;
import lombok.NonNull;
import org.springframework.data.domain.Page;

import java.util.List;
import java.util.function.Function;

public record PagedResponse<T>(
@NonNull
List<T> data,
@NonNull
MetaWithPagination meta
) {
public final class PagedResponse<T> extends PagedResponseWithMeta<T, MetaWithPagination> {

public PagedResponse(@NonNull List<T> data, @NonNull MetaWithPagination meta) {
super(data, meta);
}

public static <T> PagedResponse<T> of(@NonNull Page<T> page) {
return new PagedResponse<>(
page.getContent(),
new MetaWithPagination(
new MetaWithPagination.Pagination(
page.getNumber(),
page.getSize(),
page.getTotalElements()
)
)
MetaWithPagination.of(page)
);
}

Expand All @@ -31,28 +25,7 @@ public static <I, O> PagedResponse<O> of(@NonNull Page<I> page, @NonNull Functio

return new PagedResponse<>(
mapped.getContent(),
new MetaWithPagination(
new MetaWithPagination.Pagination(
mapped.getNumber(),
mapped.getSize(),
mapped.getTotalElements()
)
)
MetaWithPagination.of(page)
);
}

public record MetaWithPagination(
@NonNull
Pagination pagination
) {
public record Pagination(long page, int size, long totalElements) {
public static Pagination of(@NonNull Page<?> page) {
return new Pagination(
page.getNumber(),
page.getSize(),
page.getTotalElements()
);
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package it.aboutbits.springboot.toolbox.web.response;

import it.aboutbits.springboot.toolbox.web.response.meta.MetaWithPagination;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NonNull;

import java.util.List;

@Getter
@EqualsAndHashCode
public class PagedResponseWithMeta<T, M extends MetaWithPagination> {
private final List<T> data;
private final M meta;

public PagedResponseWithMeta(@NonNull List<T> data, @NonNull M meta) {
this.data = data;
this.meta = meta;
}

public List<T> data() {
return data;
}

public M meta() {
return meta;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package it.aboutbits.springboot.toolbox.web.response.meta;

public interface Meta {
record EmptyMeta() implements Meta {
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package it.aboutbits.springboot.toolbox.web.response.meta;

import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NonNull;
import org.springframework.data.domain.Page;

@Getter
@EqualsAndHashCode
public class MetaWithPagination implements Meta {
private final Pagination pagination;

public MetaWithPagination(@NonNull Pagination pagination) {
this.pagination = pagination;
}

public Pagination pagination() {
return pagination;
}

public static MetaWithPagination of(@NonNull Page<?> page) {
return new MetaWithPagination(
new MetaWithPagination.Pagination(
page.getNumber(),
page.getSize(),
page.getTotalElements()
)
);
}

public record Pagination(long page, int size, long totalElements) {
public static Pagination of(@NonNull Page<?> page) {
return new Pagination(
page.getNumber(),
page.getSize(),
page.getTotalElements()
);
}
}
}