diff --git a/src/Resources/views/common.ts.twig b/src/Resources/views/common.ts.twig index 9ba8bef01f2c0fea8508380038d3450b76df238f..cdec1d0f546cf3d5d42eff5c35376f8704c6699e 100644 --- a/src/Resources/views/common.ts.twig +++ b/src/Resources/views/common.ts.twig @@ -14,6 +14,16 @@ export const IRI_PROPERTY = '@id'; */ export const TYPE_PROPERTY = '@type'; +/** + * Nom de la propriété contenant les resource d'une collection. + */ +export const COLLECTION_MEMBERS = 'hydra:member'; + +/** + * Nom de la propriété contenant le nombre total d'objet d'une collection. + */ +export const COLLECTION_TOTAL_COUNT = 'hydra:totalItems'; + /** * IRI typé. * @@ -41,9 +51,25 @@ export interface Resource { /** * Collection représente une collection de respoucres JSON-LD pour un type T donné. */ -export interface Collection<R> { - 'hydra:member': R[]; - 'hydra:totalItems': number; +export interface Collection<R extends Resource> { + [COLLECTION_MEMBERS]: R[]; + [COLLECTION_TOTAL_COUNT]: number; + [property: string]: any; +} + +/** + * Retourne les membres d'une collection. + */ +export function getCollectionMembers<R extends Resource>(collection: Collection<R>): R[] { + return collection[COLLECTION_MEMBERS]; +} + +/** + * Retourne le nombre total d'items + * @param collection + */ +export function getCollectionTotalCount<R extends Resource>(collection: Collection<R>): number { + return collection[COLLECTION_TOTAL_COUNT]; } /**