/** * @export * @class ListResponseStructure * @implements {ListResponse} * @template T */ export class ListResponseStructure implements ListResponse{ /** * @type {T[]} * @memberOf ListResponseStructure */ items: T[]; } export class PaginatedListResponseStructure implements PaginatedListResponse{ /** * Information about pagination * @type {Pagination} * @memberOf PaginatedListResponseStructure */ pagination: Pagination; /** * Items in list * * @type {T[]} * @memberOf PaginatedListResponseStructure */ items: T[]; /** * Returns a promise that resolves into next page of results * @returns {Promise>} * * @memberOf PaginatedListResponseStructure */ nextPage: () => Promise>; /** * Returns a promise that resolves into previous page of results * @returns {Promise>} * * @memberOf PaginatedListResponseStructure */ prevPage: () => Promise>; } /** * @export * @interface Pagination */ export interface Pagination { /** * Current page number * @type {number} * @memberOf Pagination */ pageNumber: number; /** * Number of items per page * @type {number} * @memberOf Pagination */ pageSize: number; /** * Number of pages * @type {number} * @memberOf Pagination */ pageCount: number; /** * Next page number * @type {number} * @memberOf Pagination */ nextPage: number; /** * Previous page number * @type {number} * @memberOf Pagination */ prevPage: number; /** * Whether there is next page available * @type {boolean} * @memberOf Pagination */ hasNextPage: boolean; /** * Whether there is previous page available * @type {boolean} * @memberOf Pagination */ hasPrevPage: boolean; } /** * List of non-paginated items. * @export * @interface ListResponse * @template T */ export interface ListResponse { /** * Items in list * @type {T[]} * @memberOf ListResponse */ items: T[]; } /** * List of paginated items * @export * @interface PaginatedListResponse * @extends {ListResponse} * @template T */ export interface PaginatedListResponse extends ListResponse { /** * Information about pagination * * @type {ResponsePagination} * @memberOf PaginatedListResponse */ pagination: ResponsePagination; /** * Returns a promise that resolves into next page of results * @returns {Promise>} * * @memberOf PaginatedListResponse */ nextPage: () => Promise>; /** * Returns a promise that resolves into previous page of results * @returns {Promise>} * * @memberOf PaginatedListResponse */ prevPage: () => Promise>; } export enum Order { ASCENDING = 'asc', DESCENDING = 'desc', } /** * @export * @interface Sortable */ export interface Sortable { sort?: T | T[] | string | string[]; order?: Order | Order[] | string | string[]; } export interface Paginated { pageNumber: number; pageSize: number; } export interface ResponsePagination { /** * Current page number */ pageNumber: number; /** * Number of items per page */ pageSize: number; /** * Number of pages */ pageCount: number; /** * Next page number */ nextPage: number; /** * Prev page number */ prevPage: number; /** * Whether there is next page available */ hasNextPage: boolean; /** * Whether there is previous page available */ hasPrevPage: boolean; }