From 79f67e82b0e3d48e518239f5b1cf1f3f90382220 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Guillaume=20Perr=C3=A9al?= <guillaume.perreal@irstea.fr>
Date: Mon, 26 Nov 2018 16:08:01 +0100
Subject: [PATCH] =?UTF-8?q?D=C3=A9finit=20des=20constants=20pour=20les=20p?=
 =?UTF-8?q?ropri=C3=A9t=C3=A9s=20int=C3=A9ressantes=20des=20collections.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/Resources/views/common.ts.twig | 32 +++++++++++++++++++++++++++---
 1 file changed, 29 insertions(+), 3 deletions(-)

diff --git a/src/Resources/views/common.ts.twig b/src/Resources/views/common.ts.twig
index 9ba8bef..cdec1d0 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];
 }
 
 /**
-- 
GitLab