agmission/Development/server/scripts/seedDealers.js
Devin Major 9303274349
Some checks are pending
Server Tests / Mocha – Unit & Utility Tests (push) Waiting to run
all Data Export API changes from April 28 2026
2026-04-28 15:44:46 -04:00

304 lines
9.3 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

'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);
}
}
});