From d606281232da3f83defb620f380f4a153fe8599a Mon Sep 17 00:00:00 2001 From: FORESTIER Fabien <fabien.forestier@soprasteria.com> Date: Fri, 31 Jan 2020 16:53:52 +0100 Subject: [PATCH] Update media-library, organizations and resources services' documentation --- docs/assets/resources-service.png | Bin 0 -> 30188 bytes .../proxies/web-mapping-services.md | 9 ++++++ docs/components/services/credits.md | 5 ++-- docs/components/services/media-library.md | 6 ++-- docs/components/services/organizations.md | 27 +++++++++++++++++- docs/components/services/resources-helper.md | 21 ++++++++++++-- 6 files changed, 59 insertions(+), 9 deletions(-) create mode 100644 docs/assets/resources-service.png diff --git a/docs/assets/resources-service.png b/docs/assets/resources-service.png new file mode 100644 index 0000000000000000000000000000000000000000..5f308487208091c10899f5687377c3d062d75681 GIT binary patch literal 30188 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 literal 0 HcmV?d00001 diff --git a/docs/components/proxies/web-mapping-services.md b/docs/components/proxies/web-mapping-services.md index e69de29..0e169a6 100644 --- a/docs/components/proxies/web-mapping-services.md +++ b/docs/components/proxies/web-mapping-services.md @@ -0,0 +1,9 @@ +# Reuses + +## Features + +## Dependencies + +## Endpoints + +## Implementation diff --git a/docs/components/services/credits.md b/docs/components/services/credits.md index be9b74c..68e5b42 100644 --- a/docs/components/services/credits.md +++ b/docs/components/services/credits.md @@ -23,11 +23,10 @@ This service has no dependency on other components. The service provides two endpoints, 1. `/credits`; -2. `/links`, -allowing one to perform CRUD operations on credits and links in a RESTful manner. Moreover, an healtcheck endpoint is provided, +allowing one to perform CRUD operations on credits in a RESTful manner. Moreover, an healtcheck endpoint is provided, -3. `/health`, +2. `/health`, returning a `200` HTTP code if the API is healthy, `503` otherwise. For the service to be healthy, the underlying database must be up. diff --git a/docs/components/services/media-library.md b/docs/components/services/media-library.md index a89c0fa..2224d8d 100644 --- a/docs/components/services/media-library.md +++ b/docs/components/services/media-library.md @@ -2,10 +2,12 @@ ## Features -This service allows you to upload a file on the [Minio](https://min.io/) instance (compatible with S3) of your choice. The file will be stored in the bucket defined in the configuration of the service. +This service allows you to upload a file on the [Minio](https://min.io/) instance (compatible with S3) of your choice. The file will be stored in the bucket defined in the configuration of the service. It also stores some metadataabout the file in a mongo database. ## Dependencies +This service needs a running instance of Minio in order to work. + ## Endpoints For this service we implemented a custom health indicator that checks the connection to MinIO giving the total number of buckets when the connection is succesful. @@ -20,4 +22,4 @@ Before uploading the file, it makes sure that the specified bucket is created. I The files are folded in sub-buckets as following `/<specified-bucket-name>/<year-YYYY>/<month-MM>/`. -The uploaded file keep its original name but is prefixed by an md5 computed based on its content witch gives the following pattern for file names: `<md5>-<original-name>`. This means that if we upload twice the exact same file, with the same name there will be only one file stored in MinIO. \ No newline at end of file +The uploaded file keep its original name but is prefixed with the id of the corresponding entry in the mongo database. diff --git a/docs/components/services/organizations.md b/docs/components/services/organizations.md index 23b9676..ef1f5a7 100644 --- a/docs/components/services/organizations.md +++ b/docs/components/services/organizations.md @@ -5,12 +5,37 @@ This service provides a list of organizations with different information about it (such as description, logo..etc). In our application, one organization is usually a provider of data, used in the Portal Open Data. It can be a public actor or a private one. +Each record of the catalog includes the following information: + +* `id`: a technical unique identifier acting as primary key in the underlying database +* `uuid`: a business unique identifier +* `name`: the name of the credited initiative +* `description`: a short description of the credited initiative, in particular of the role the latter plays in this project +* `links`: a collection of URLs related to the organization, modeled as a One-To-Many relationship +* `logo`: the URL of the organization's logo +* `published`: a boolean flag, indicating whether the record is published or not (draft) +* `elasticSearchName`: name of the organization in elasticsearc, it can be found in the metadata of a dataset under `responsibleParty[0].organisationName`. + ## Dependencies +This service has no dependency on other components. + ## Endpoints +The service provides two endpoints, + +1. `/organizations`; + +allowing one to perform CRUD operations on credits and links in a RESTful manner. Moreover, an healtcheck endpoint is provided, + +2. `/health`, + +returning a `200` HTTP code if the API is healthy, `503` otherwise. For the service to be healthy, the underlying database must be up. + ## Implementation  -The entrypoint of the service is a REST API provided by a [NestJS](https://github.com/nestjs/nest) application. This backend application interacts with a PostgresSQL database through an ORM called [TypeORM](https://github.com/typeorm/typeorm). \ No newline at end of file +The service is implemented using the [NestJS](https://nestjs.com/) framework. We refer the reader to the [NestJS-based micro-services](../../miscellaneous/nestjs-micro-services.md) page for further details concerning NestJS and the features it provides. + +Data persistence is achieved by using [PostgreSQL](https://www.postgresql.org/) and [TypeORM](https://github.com/typeorm/typeorm). diff --git a/docs/components/services/resources-helper.md b/docs/components/services/resources-helper.md index c516bd3..14c0a8c 100644 --- a/docs/components/services/resources-helper.md +++ b/docs/components/services/resources-helper.md @@ -11,12 +11,27 @@ the output of a Web Feature Service (WFS), standard service providing an interfa ## Dependencies +This service has no dependency on other components. + ## Endpoints -For this service we declared an health indicator that verifies that it can connect to the database. +The service provides five endpoints, + +1. `/resources`; +2. `/resourceformats`; +3. `/projections`; +4. `/formats`; + +allowing one to perform CRUD operations in a RESTful manner. Moreover, an healtcheck endpoint is provided, + +5. `/health`, + +returning a `200` HTTP code if the API is healthy, `503` otherwise. For the service to be healthy, the underlying database must be up. ## Implementation - + + +The service is implemented using the [NestJS](https://nestjs.com/) framework. We refer the reader to the [NestJS-based micro-services](../../miscellaneous/nestjs-micro-services.md) page for further details concerning NestJS and the features it provides. -The entrypoint of the service is a REST API provided by a [NestJS](https://github.com/nestjs/nest) application. This backend application interacts with a PostgresSQL database through an ORM called [TypeORM](https://github.com/typeorm/typeorm). +Data persistence is achieved by using [PostgreSQL](https://www.postgresql.org/) and [TypeORM](https://github.com/typeorm/typeorm). -- GitLab