-
Notifications
You must be signed in to change notification settings - Fork 3
Créer une nouvelle source de données (csv)
Flavien Beninca edited this page Aug 4, 2020
·
2 revisions
La première chose à faire est de créer une nouvelle table dans postgres qui aura la même structure que le csv.
Attention ne pas oublié de créer une colonne siren
Il ne faut pas non plus oublié d'ajouter un index sur les colonnes siren
et siret
Pour créer la table nous utilisons l'outil de migration.
# CreateMyNewSource = nom de la migration
c42 server:migrate create CreateMyNewSource
c42 server:migrate:up
Ajouter le(s) champ qui seront envoyé au front
- Etablissement :
// src/frentreprise/models/Etablissement.js
class DireccteEtablissement extends Etablissement {
export() {
return {
...copyKeys(
this,
[
//...
"maCléPourLeFront"
- Entreprise :
Ci besoin pour la fiche entreprise procéder comme pour l'établissement en ajoutant la clé dans src/frentreprise/models/Entreprise.js
Créer le modèle Sequelize dans src/Models
en s'inspirant des autres modèles
Exemple de modèle
const monModele = (sequelize, DataTypes) => {
const MonModele = sequelize.define(
"monModele",
{
siret: DataTypes.STRING,
siren: DataTypes.STRING,
unChamp: DataTypes.STRING,
},
{
tableName: "ma_table",
}
);
return MonModele;
};
export default monModele;
- Ajouter le liaison avec le modèle
etablissement
// Pour des modèles simple (qui n'ont pas de liaison avec d'autres modèles
const associatedSources = [
// ...
{ type: "hasOne", model: "MonModele" },
];
// Si le modèle à des associations avec d'autres modèles il faut ajouter la liaison directement plus bas
Etablissement.associate = (models) => {
// ...
Etablissement.hasOne(models.MonModele, {
foreignKey: "siret",
sourceKey: "siret",
});
- Ajouter le liaison avec le modèle
entreprise
Entreprise.associate = (models) => {
// ...
Entreprise.hasMany(models.MonModele, {
foreignKey: "siren",
sourceKey: "siren",
});
- Etablissement (uniquement pour les modèles complexe qui ont des associations)
// src/DataSources/PG/Siret/getSettlement.js
const includes = [
// ...
{
model: models.MonModele,
include: [models.AutreModele],
},
- Entreprise (si besoin)
// src/DataSources/PG/Siren/getEntreprise.js
const sources = [
...models.Entreprise.associatedSources,
...[
// ...
{
model: "MonModele",
include: [models.Etablissement],
entity: "monModeles",
}
- Etablissement
Créer le fichier de formatage
// src/DataSources/PG/Format/establishmentSources/monModele.js
export default (data) => {
// Faire mon traitement
return {
maCléPourLeFront: data
}
}
- Entreprise
Si nécessaire se calquer sur le même fonctionnement et créer un fichier dans src/DataSources/PG/Format/enterpriseSources