Some checks are pending
Server Tests / Mocha – Unit & Utility Tests (push) Waiting to run
304 lines
9.3 KiB
JavaScript
304 lines
9.3 KiB
JavaScript
'use strict';
|
||
|
||
/**
|
||
* Dealer Seed Script
|
||
*
|
||
* Inserts the initial AG-NAV world-wide dealer network into the database.
|
||
* Safe to re-run: upserts on (companyName + country) so no duplicates are created.
|
||
*
|
||
* Usage (from repo root):
|
||
* set -a && source server/environment.env && set +a && DEBUG=agm:seed-dealers node server/scripts/seedDealers.js
|
||
*
|
||
* Dry-run (no writes):
|
||
* set -a && source server/environment.env && set +a && DEBUG=agm:seed-dealers node server/scripts/seedDealers.js --dry-run
|
||
*/
|
||
|
||
const debug = require('debug')('agm:seed-dealers');
|
||
const { DBConnection } = require('../helpers/db/connect.js');
|
||
const Dealer = require('../model/dealer.js');
|
||
|
||
const args = process.argv.slice(2);
|
||
const isDryRun = args.includes('--dry-run');
|
||
|
||
if (isDryRun) {
|
||
debug('Running in DRY-RUN mode — no changes will be made');
|
||
}
|
||
|
||
const DEALERS = [
|
||
{
|
||
companyName: 'Aerotec',
|
||
country: 'Argentina',
|
||
contactName: 'Diego M. Cardama Mendoza',
|
||
address: 'Aerodromo Mario Cardama (5577) Comandante Torres 100 – Rivadavia Buenos Aires; Aerodromo Aeroclub Lujan – Beschtedt S/N Hangar 1',
|
||
phone: '+54 (263) 444 3212',
|
||
cell: '+54 (9) 261 569 2744',
|
||
email: 'diego@aerotec-argentina.com.ar',
|
||
website: 'http://aerotec.com.ar/',
|
||
isCertifiedRepair: false,
|
||
},
|
||
{
|
||
companyName: 'APAC Heli Solutions',
|
||
country: 'Australia',
|
||
contactName: 'Scott Simpson',
|
||
address: 'Kurrajong NSW 2758, Australia',
|
||
phone: '+61 (0) 418 484 515',
|
||
email: 'ssimpson@apachelisolutions.com',
|
||
website: 'https://www.apachelisolutions.com/',
|
||
isCertifiedRepair: false,
|
||
},
|
||
{
|
||
companyName: 'Trabajo Aereo Agricola T.A.A',
|
||
country: 'Bolivia',
|
||
contactName: 'Verly Valdez Ruiz',
|
||
address: 'Lagunillas # 301 esq. Villamontes, Braniff Santa Cruz, Bolivia',
|
||
phone: '591 3 352 6578',
|
||
cell: '591 716 48864',
|
||
email: 'verlyvaldez@hotmail.com',
|
||
isCertifiedRepair: false,
|
||
},
|
||
{
|
||
companyName: 'DGPS & CIA',
|
||
country: 'Brazil',
|
||
contactName: 'Miguel Paim',
|
||
address: 'Rua dos Hangares No. 453 Bairro: Parque Industrial – Aeroporto, Primavera do Leste – MT, CEP: 78850-000',
|
||
phone: '+55 (66) 3497-3400',
|
||
cell: '+55 (66) 9986-1198',
|
||
email: 'miguelpaim@dgpsecia.com.br',
|
||
website: 'http://www.dgpsecia.com.br',
|
||
isCertifiedRepair: true,
|
||
},
|
||
{
|
||
companyName: 'Dinnarc Tecnologia Agricola',
|
||
country: 'Brazil',
|
||
contactName: 'Augusto e Ramon',
|
||
address: 'Avenida Adolino Bedin Nº 875, CEP: 78.894-132 Jardim das Américas, Sorriso, MT, Brazil',
|
||
phone: '+55 (66) 99981-8300',
|
||
cell: '+55 (66) 99200-7447',
|
||
email: 'contato@dinnarc.com.br',
|
||
isCertifiedRepair: false,
|
||
},
|
||
{
|
||
companyName: 'ABA Manutencao de Aeronaves',
|
||
country: 'Brazil',
|
||
contactName: 'Ruddiger Alves Da Silva',
|
||
address: 'Rua da Prainha, 3320 Cond. Sitio de Voo ABA Lotes 05 e 06, Barreirinhas, Barreiras',
|
||
phone: '+55 (66) 99987-0727',
|
||
email: 'ruddigger@abamanutencao.com.br',
|
||
isCertifiedRepair: false,
|
||
},
|
||
{
|
||
companyName: 'Galindo e Galindo Comercio e Servicos Eletronicos Ltda',
|
||
country: 'Brazil',
|
||
contactName: 'Francisco Galindo',
|
||
address: 'Rua D, 20 - Balneario Recreativa de Campo, CEP: 14.073-808, Ribeirao Preto - SP',
|
||
phone: '+55 (16) 3629-3317',
|
||
cell: '+55 (16) 99137-1517',
|
||
email: 'fgalindo@galindodgps.com.br',
|
||
website: 'http://www.galindodgps.com.br',
|
||
isCertifiedRepair: false,
|
||
},
|
||
{
|
||
companyName: 'Aeroglobo Aeronaves',
|
||
country: 'Brazil',
|
||
address: 'Rua José Dal Farra, 654, Jardim Dona Carolina, Botucatu – São Paulo, 18.602.020',
|
||
phone: '+55 14 3814-3450',
|
||
email: 'contato@aeroglobo.com.br',
|
||
website: 'https://www.aeroglobo.com.br',
|
||
isCertifiedRepair: false,
|
||
},
|
||
{
|
||
companyName: 'Provincial Airways',
|
||
country: 'Canada',
|
||
contactName: 'James',
|
||
address: 'Box 2170, Hwy 301N, Moose Jaw, SK, S6H 7T2',
|
||
phone: '306 692 7335',
|
||
fax: '306 693 5288',
|
||
cell: '306 693 0877',
|
||
email: 'james@provincialairways.net',
|
||
website: 'http://www.provincialairways.net',
|
||
isCertifiedRepair: false,
|
||
},
|
||
{
|
||
companyName: 'Carlos Ilabaca Vacarezza',
|
||
country: 'Chile',
|
||
contactName: 'Carlos Ilabaca Vacarezza',
|
||
address: 'La Serena, Chile',
|
||
phone: '56 097 849 0244',
|
||
email: 'cpilabaca@gmail.com',
|
||
isCertifiedRepair: true,
|
||
},
|
||
{
|
||
companyName: 'Jarly Camacho Torres',
|
||
country: 'Colombia',
|
||
contactName: 'Jarly Camacho Torres',
|
||
address: 'Calle 6, casa # 12-52 Barrio Pescadito, Santa Marta, Colombia',
|
||
phone: '(57) 431-6187',
|
||
cell: '(57) 321-525-6367',
|
||
fax: '(57) 317-525-4385',
|
||
email: 'jcamachot87@yahoo.es',
|
||
isCertifiedRepair: true,
|
||
},
|
||
{
|
||
companyName: 'Mario Berrones Corp',
|
||
country: 'Ecuador',
|
||
contactName: 'Mario Berrones',
|
||
address: 'Eloy Alfaro 126 y Tarqui, Canton Yaguachi, Guayas, Ecuador',
|
||
phone: '011-593-93910438',
|
||
email: 'mabescorp@hotmail.com',
|
||
isCertifiedRepair: true,
|
||
},
|
||
{
|
||
companyName: 'Aero Agricola Paraguaya SA',
|
||
country: 'Paraguay',
|
||
address: 'Ruta 1 KM 286, Aeropuerto Aero Agricola Paraguaya, General Delgado, Itapua 6860, Paraguay',
|
||
phone: '+595 985-220286',
|
||
email: 'administracion@aeroagricolaparaguaya.com.py',
|
||
isCertifiedRepair: false,
|
||
},
|
||
{
|
||
companyName: 'Davao Aerowurkz Corporation',
|
||
country: 'Philippines',
|
||
address: 'BTC Hangar, Old Airport, Sasa, Davao City, 8000, Philippines',
|
||
phone: '+63 (082) 234-8843',
|
||
email: 'aerowurks_aviation@yahoo.com.ph',
|
||
isCertifiedRepair: false,
|
||
},
|
||
{
|
||
companyName: 'Business Development Services',
|
||
country: 'Poland',
|
||
contactName: 'Lukasz Kempys',
|
||
address: 'UL. USTRONIE 31, NOWY TARG, 34-400, Poland',
|
||
phone: '+48-694-473-616',
|
||
email: 'lukaszkempys@gmail.com',
|
||
website: 'http://www.SkyFun.pl',
|
||
isCertifiedRepair: true,
|
||
},
|
||
{
|
||
companyName: 'Steve Viviers Aviation',
|
||
country: 'South Africa',
|
||
contactName: 'Steve Viviers',
|
||
address: 'P.O. Box 1952, Kroonstad, 9500, South Africa',
|
||
phone: '+27-836378504',
|
||
fax: '+27-56-212-3436',
|
||
cell: '+27-82-800-1508',
|
||
email: 'viviersaviation@act.co.za',
|
||
isCertifiedRepair: true,
|
||
},
|
||
{
|
||
companyName: 'Lane Aviation',
|
||
country: 'United States',
|
||
contactName: 'Dona Jorden',
|
||
address: '3205 FM 2218 Rd, Rosenberg, TX 77471, USA',
|
||
phone: '(281) 342-5451',
|
||
fax: '(281) 232-5401',
|
||
email: 'dona@laneav.com',
|
||
isCertifiedRepair: false,
|
||
},
|
||
{
|
||
companyName: 'Frost Flying Inc.',
|
||
country: 'United States',
|
||
contactName: 'Garret Frost',
|
||
address: '3393 Hwy. 121 West, Marianna, AR 72360, USA',
|
||
phone: '(870) 295-6218',
|
||
fax: '(870) 295-6237',
|
||
email: 'frostparts@hotmail.com',
|
||
isCertifiedRepair: false,
|
||
},
|
||
{
|
||
companyName: 'Crosslands International, LLC',
|
||
country: 'United States',
|
||
contactName: 'John M. Mishler',
|
||
address: '17921 S US Hwy 377, Cresson, TX 76035, USA',
|
||
phone: '(817) 478-9933',
|
||
email: 'john@crosslandsinternational.com',
|
||
isCertifiedRepair: false,
|
||
},
|
||
{
|
||
companyName: 'Summit Helicopters, Inc.',
|
||
country: 'United States',
|
||
contactName: 'Jeff Partain',
|
||
address: 'Box 909, 525 McCelland Street, Salem, VA 24153, USA',
|
||
phone: '(540) 375-8909',
|
||
email: 'jeff.partain@summithelicopters.com',
|
||
isCertifiedRepair: false,
|
||
},
|
||
{
|
||
companyName: 'Thomas Helicopters',
|
||
country: 'United States',
|
||
contactName: 'Rod Thomas',
|
||
address: '1553 South 1800 East, Gooding, ID 83330, USA',
|
||
phone: '(208) 934-8298',
|
||
fax: '(208) 934-5934',
|
||
email: 'rodheli@aol.com',
|
||
isCertifiedRepair: false,
|
||
},
|
||
{
|
||
companyName: 'Collective Aviation',
|
||
country: 'United States',
|
||
contactName: 'Kristopher Petter',
|
||
address: '2874 Henry Wallace Rd., Orient, Iowa 50858, USA',
|
||
phone: '(206) 484-8749',
|
||
email: 'kris@collectiveaviationservices.com',
|
||
isCertifiedRepair: false,
|
||
},
|
||
{
|
||
companyName: 'Servicio Aeroagricola De Flores S.R.L.',
|
||
country: 'Uruguay',
|
||
contactName: 'Julio Placeres / Juan Perez',
|
||
address: 'Manuel Irazabal 530, Trinidad, Flores, Uruguay',
|
||
phone: '+598 4364-4686',
|
||
fax: '+598 4364-4686',
|
||
email: 'juliopla@adinet.com.uy',
|
||
isCertifiedRepair: true,
|
||
},
|
||
];
|
||
|
||
async function seedDealers() {
|
||
debug(`Seeding ${DEALERS.length} dealers (dry-run: ${isDryRun})`);
|
||
|
||
let inserted = 0, skipped = 0;
|
||
|
||
for (const dealer of DEALERS) {
|
||
const filter = { companyName: dealer.companyName, country: dealer.country };
|
||
|
||
if (isDryRun) {
|
||
const existing = await Dealer.findOne(filter).lean();
|
||
if (existing) {
|
||
debug(`[DRY-RUN] Would skip — ${dealer.companyName} (${dealer.country}) already exists`);
|
||
skipped++;
|
||
} else {
|
||
debug(`[DRY-RUN] Would insert — ${dealer.companyName} (${dealer.country})`);
|
||
inserted++;
|
||
}
|
||
continue;
|
||
}
|
||
|
||
const existing = await Dealer.findOne(filter).lean();
|
||
if (existing) {
|
||
debug(`[skipped] ${dealer.companyName} (${dealer.country})`);
|
||
skipped++;
|
||
} else {
|
||
await Dealer.create(dealer);
|
||
debug(`[inserted] ${dealer.companyName} (${dealer.country})`);
|
||
inserted++;
|
||
}
|
||
}
|
||
|
||
debug(`Done. Inserted: ${inserted}, Skipped: ${skipped}`);
|
||
}
|
||
|
||
const workerDB = new DBConnection('Dealer Seed Script');
|
||
|
||
workerDB.initialize({
|
||
setupExitHandlers: false,
|
||
onReady: async () => {
|
||
try {
|
||
await seedDealers();
|
||
process.exit(0);
|
||
} catch (err) {
|
||
debug('Seed failed:', err);
|
||
process.exit(1);
|
||
}
|
||
}
|
||
});
|