UNPKG

@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
"use strict"; 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;