@gouvfr-anct/mednum
Version:
✨ Permet de transformer une source de données vers le schéma des lieux de mediation numerique
54 lines (53 loc) • 3.9 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.generatePublishMetadata = void 0;
const data_inclusion_1 = require("../../data-inclusion");
const mediation_numerique_1 = require("../../mediation-numerique");
const DATASET_TAGS = [
'inclusion',
'inclusion-numerique',
'lieux-d-inclusion-numerique',
'mediation',
'mediation-numerique',
'lieux-de-mediation-numerique'
];
const mendumJsonRessource = (output, date, suffix) => ({
source: `${output.path}/${(0, mediation_numerique_1.mediationNumeriqueFileName)(date, output.name.toLowerCase().replace(/\s/g, '-'), output.territoire.toLowerCase().replace(/\s/g, '-'), 'csv', suffix)}`,
schema: 'LaMednum/standard-mediation-num',
description: `Lieux de médiation numérique sur le territoire ${output.territoire} fournis par ${output.name} au format CSV.`
});
const mendumCsvRessource = (output, date, suffix) => ({
source: `${output.path}/${(0, mediation_numerique_1.mediationNumeriqueFileName)(date, output.name.toLowerCase().replace(/\s/g, '-'), output.territoire.toLowerCase().replace(/\s/g, '-'), 'json', suffix)}`,
schema: 'LaMednum/standard-mediation-num',
description: `Lieux de médiation numérique sur le territoire ${output.territoire} fournis par ${output.name} au format JSON.\nVous pouvez utiliser l’url stable associé à cette ressource pour alimenter une version locale de la cartographie des lieux de médiation numérique.`
});
const dataInclusionServicesRessource = (output, date, suffix) => ({
source: `${output.path}/${(0, data_inclusion_1.dataInclusionFileName)(date, output.name.toLowerCase().replace(/\s/g, '-'), 'services', 'json', suffix)}`,
schema: 'gip-inclusion/data-inclusion-schema',
description: `Services de médiation numérique rattachés à une structure de l'inclusion fournis par ${output.name} sur le territoire ${output.territoire}`
});
const dataInclusionStructuresRessource = (output, date, suffix) => ({
source: `${output.path}/${(0, data_inclusion_1.dataInclusionFileName)(date, output.name.toLowerCase().replace(/\s/g, '-'), 'structures', 'json', suffix)}`,
schema: 'gip-inclusion/data-inclusion-schema',
description: `Structures de l'inclusion qui proposent des services de médiation numérique fournis par ${output.name} sur le territoire ${output.territoire}`
});
const byDateMajAsc = (lieuMediationNumeriqueA, lieuMediationNumeriqueB) => lieuMediationNumeriqueA.date_maj.getTime() - lieuMediationNumeriqueB.date_maj.getTime();
const byDateMajDesc = (lieuMediationNumeriqueA, lieuMediationNumeriqueB) => lieuMediationNumeriqueB.date_maj.getTime() - lieuMediationNumeriqueA.date_maj.getTime();
const formatDate = (date) => date?.toISOString().split('T').at(0) ?? '';
const generatePublishMetadata = (output, lieuxDeMediationNumerique, date, suffix) => ({
title: `Lieux de médiation numérique sur le territoire ${output.territoire} fournis par ${output.name}`,
description: `Lieux de médiation numérique proposant un accompagnement au public fournis par ${output.name} sur le territoire ${output.territoire}.\nCe jeu de données répond aux spécifications du schéma "Lieux de médiation numérique" disponible sur le site [schema.data.gouv.fr](https://schema.data.gouv.fr/LaMednum/standard-mediation-num)`,
tags: DATASET_TAGS,
frequency: 'daily',
license: 'lov2',
granularity: 'poi',
start: formatDate(lieuxDeMediationNumerique.sort(byDateMajAsc).at(0)?.date_maj),
end: formatDate(lieuxDeMediationNumerique.sort(byDateMajDesc).at(0)?.date_maj),
ressources: [
mendumJsonRessource(output, date, suffix),
mendumCsvRessource(output, date, suffix),
dataInclusionServicesRessource(output, date, suffix),
dataInclusionStructuresRessource(output, date, suffix)
]
});
exports.generatePublishMetadata = generatePublishMetadata;