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