You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
102 lines
8.8 KiB
JavaScript
102 lines
8.8 KiB
JavaScript
const { run } = require('../src/database')
|
|
|
|
async function loadSeedData() {
|
|
try {
|
|
console.log('🌱 Insertion des données de test...')
|
|
|
|
// Entrepôts
|
|
const entrepots = [
|
|
['BricoLoc Paris Nord', 'Paris', '75018', '15 Rue de la Chapelle', '01 42 52 10 20', 'paris.nord@bricoloc.fr'],
|
|
['BricoLoc Lyon Centre', 'Lyon', '69002', '45 Cours Charlemagne', '04 78 37 28 90', 'lyon.centre@bricoloc.fr'],
|
|
['BricoLoc Marseille', 'Marseille', '13001', '88 La Canebière', '04 91 90 12 34', 'marseille@bricoloc.fr'],
|
|
['BricoLoc Toulouse', 'Toulouse', '31000', '23 Allées Jean Jaurès', '05 61 21 45 67', 'toulouse@bricoloc.fr'],
|
|
['BricoLoc Bordeaux', 'Bordeaux', '33000', '12 Cours de l\'Intendance', '05 56 48 32 10', 'bordeaux@bricoloc.fr'],
|
|
['BricoLoc Lille', 'Lille', '59000', '67 Rue Nationale', '03 20 06 78 90', 'lille@bricoloc.fr'],
|
|
['BricoLoc Nantes', 'Nantes', '44000', '8 Place du Commerce', '02 40 47 89 12', 'nantes@bricoloc.fr'],
|
|
['BricoLoc Strasbourg', 'Strasbourg', '67000', '34 Rue du Vieux Marché', '03 88 32 54 76', 'strasbourg@bricoloc.fr'],
|
|
['BricoLoc Nice', 'Nice', '06000', '19 Avenue Jean Médecin', '04 93 87 65 43', 'nice@bricoloc.fr'],
|
|
['BricoLoc Rennes', 'Rennes', '35000', '5 Place de la Mairie', '02 99 30 21 45', 'rennes@bricoloc.fr']
|
|
]
|
|
|
|
for (const e of entrepots) {
|
|
await run('INSERT INTO entrepots (nom, ville, code_postal, adresse, telephone, email) VALUES (?, ?, ?, ?, ?, ?)', e)
|
|
}
|
|
console.log('✓ 10 entrepôts insérés')
|
|
|
|
// Catégories
|
|
const categories = [
|
|
['Perceuse & Visseuse', 'Perceuses électriques, visseuses, perceuses à percussion', 'perceuse-visseuse'],
|
|
['Ponceuse', 'Ponceuses orbitales, bande, excentriques', 'ponceuse'],
|
|
['Scie', 'Scies circulaires, sauteuses, à onglet, sabres', 'scie'],
|
|
['Meuleuse', 'Meuleuses d\'angle, tronçonneuses', 'meuleuse'],
|
|
['Marteau & Perforateur', 'Marteaux perforateurs, burineurs, piqueurs', 'marteau-perforateur'],
|
|
['Jardinage', 'Tondeuses, taille-haies, débroussailleuses', 'jardinage'],
|
|
['Nettoyage', 'Nettoyeurs haute pression, aspirateurs de chantier', 'nettoyage'],
|
|
['Échafaudage & Échelle', 'Échafaudages, échelles, plateformes', 'echafaudage'],
|
|
['Peinture', 'Pistolets à peinture, compresseurs, rouleaux', 'peinture'],
|
|
['Chauffage & Ventilation', 'Chauffages de chantier, ventilateurs, déshumidificateurs', 'chauffage'],
|
|
['Manutention', 'Diables, transpalettes, chariots', 'manutention'],
|
|
['Béton & Maçonnerie', 'Bétonnières, malaxeurs, talocheuses', 'beton-maconnerie']
|
|
]
|
|
|
|
for (const c of categories) {
|
|
await run('INSERT INTO categories (nom, description, slug) VALUES (?, ?, ?)', c)
|
|
}
|
|
console.log('✓ 12 catégories insérées')
|
|
|
|
// Outils (version simplifiée, 20 outils)
|
|
const outils = [
|
|
['Perceuse à percussion Bosch', 'Perceuse à percussion professionnelle, mandrin automatique 13mm, variateur électronique.', 1, 8.50, 80.00, 'Bosch', 'PSB 850-2 RE', 2019, 2.1, '30x25x10cm', '850W', '/images/outils/perceuse-bosch.jpg', 0, 1],
|
|
['Visseuse sans fil Makita', 'Visseuse à batteries Li-Ion 18V, couple de serrage 42Nm, mandrin auto-serrant 10mm.', 1, 12.00, 150.00, 'Makita', 'DHP453', 2020, 1.7, '28x24x9cm', '18V', '/images/outils/visseuse-makita.jpg', 0, 1],
|
|
['Perceuse-visseuse DeWalt', 'Perceuse-visseuse sans fil professionnelle, 2 vitesses, éclairage LED.', 1, 15.00, 180.00, 'DeWalt', 'DCD796P2', 2021, 1.9, '30x26x10cm', '18V', '/images/outils/perceuse-dewalt.jpg', 0, 1],
|
|
['Ponceuse excentrique Festool', 'Ponceuse excentrique haut de gamme, aspiration intégrée, plateau 150mm.', 2, 18.00, 200.00, 'Festool', 'ETS 150/3 EQ', 2020, 1.3, '25x15x15cm', '310W', '/images/outils/ponceuse-festool.jpg', 0, 1],
|
|
['Ponceuse à bande Makita', 'Ponceuse à bande 76x457mm, grande surface de ponçage, collecteur de poussière.', 2, 14.00, 120.00, 'Makita', '9403', 2018, 4.0, '40x20x18cm', '1010W', '/images/outils/ponceuse-bande-makita.jpg', 0, 1],
|
|
['Ponceuse orbitale Bosch', 'Ponceuse orbitale compacte, microfiltre, plateau rectangulaire 93x185mm.', 2, 9.00, 70.00, 'Bosch', 'PSS 250 AE', 2019, 1.4, '20x12x15cm', '250W', '/images/outils/ponceuse-bosch.jpg', 0, 1],
|
|
['Scie circulaire Makita', 'Scie circulaire 190mm, profondeur de coupe 68mm, rail de guidage.', 3, 16.00, 140.00, 'Makita', '5008MG', 2020, 5.1, '35x30x25cm', '1800W', '/images/outils/scie-circulaire-makita.jpg', 0, 1],
|
|
['Scie sauteuse Bosch Pro', 'Scie sauteuse professionnelle, course 26mm, 4 positions pendulaire.', 3, 11.00, 90.00, 'Bosch', 'GST 150 CE', 2019, 2.3, '25x20x10cm', '780W', '/images/outils/scie-sauteuse-bosch.jpg', 0, 1],
|
|
['Scie à onglet DeWalt', 'Scie à onglet radiale 250mm, laser de coupe, table rallonge.', 3, 22.00, 250.00, 'DeWalt', 'DWS780', 2021, 24.5, '60x55x45cm', '1675W', '/images/outils/scie-onglet-dewalt.jpg', 1, 0],
|
|
['Meuleuse d\'angle Bosch 125mm', 'Meuleuse compacte 125mm, poignée anti-vibration, démarrage progressif.', 4, 10.00, 85.00, 'Bosch', 'GWS 13-125', 2019, 2.0, '30x12x12cm', '1300W', '/images/outils/meuleuse-bosch-125.jpg', 0, 1],
|
|
['Meuleuse d\'angle Makita 230mm', 'Grosse meuleuse 230mm, carter de protection, poignée latérale.', 4, 17.00, 150.00, 'Makita', 'GA9020', 2020, 5.5, '45x18x18cm', '2200W', '/images/outils/meuleuse-makita-230.jpg', 1, 0],
|
|
['Perforateur Makita SDS-Plus', 'Perforateur burineur 3 fonctions : perçage, percussion, burinage.', 5, 20.00, 200.00, 'Makita', 'HR2470', 2020, 2.7, '35x10x22cm', '780W', '/images/outils/perforateur-makita.jpg', 0, 1],
|
|
['Marteau piqueur Bosch', 'Marteau piqueur électrique 1500W, SDS-Max, énergie de frappe 43J.', 5, 35.00, 350.00, 'Bosch', 'GSH 16-30', 2019, 16.5, '65x25x30cm', '1750W', '/images/outils/marteau-piqueur-bosch.jpg', 1, 0],
|
|
['Tondeuse thermique Honda', 'Tondeuse autotractée, bac 55L, largeur coupe 46cm, moteur Honda 4 temps.', 6, 25.00, 250.00, 'Honda', 'HRG 466', 2020, 32.0, '150x60x100cm', '140cc', '/images/outils/tondeuse-honda.jpg', 0, 0],
|
|
['Taille-haie thermique Stihl', 'Taille-haie professionnel, lame double 60cm, moteur 2 temps.', 6, 18.00, 180.00, 'Stihl', 'HS 45', 2019, 5.0, '100x30x25cm', '27.2cc', '/images/outils/taille-haie-stihl.jpg', 0, 1],
|
|
['Nettoyeur haute pression Kärcher', 'Nettoyeur HP 150 bar, débit 500L/h, enrouleur automatique.', 7, 20.00, 180.00, 'Kärcher', 'K5 Premium', 2021, 12.3, '40x35x80cm', '2100W', '/images/outils/karcher-k5.jpg', 0, 0],
|
|
['Aspirateur de chantier Festool', 'Aspirateur professionnel 36L, classe L, auto-nettoyant, prise outil.', 7, 15.00, 150.00, 'Festool', 'CTL 36 E', 2020, 14.8, '45x40x65cm', '1200W', '/images/outils/aspirateur-festool.jpg', 0, 1],
|
|
['Échafaudage roulant 4m', 'Échafaudage aluminium sur roulettes, hauteur travail 4m, plateforme 2m².', 8, 35.00, 400.00, 'Altrad', 'Modulö 400', 2020, 68.0, '200x150x400cm', null, '/images/outils/echafaudage-4m.jpg', 1, 0],
|
|
['Station de peinture Wagner', 'Station HVLP 630W, 3 buses, débit réglable, pour murs, plafonds, boiseries.', 9, 22.00, 200.00, 'Wagner', 'Control Pro 250M', 2021, 7.8, '35x30x40cm', '630W', '/images/outils/station-wagner.jpg', 0, 1],
|
|
['Bétonnière thermique 160L', 'Bétonnière essence 4 temps, cuve 160L, roues gonflables, couronne fonte.', 12, 32.00, 320.00, 'Altrad', 'B160 Honda', 2020, 68.0, '150x80x140cm', '160cc', '/images/outils/betonniere-160l.jpg', 1, 0]
|
|
]
|
|
|
|
for (const o of outils) {
|
|
await run('INSERT INTO outils (nom, description, categorie_id, prix_jour, caution, marque, modele, annee, poids, dimensions, puissance, image_url, restrictions_pro, livraison_possible) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', o)
|
|
}
|
|
console.log('✓ 20 outils insérés')
|
|
|
|
// Stocks (pour chaque outil, 3-5 entrepôts avec stock)
|
|
for (let outilId = 1; outilId <= 20; outilId++) {
|
|
const entrepotIds = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
|
|
// Sélectionner aléatoirement 3-7 entrepôts
|
|
const nbEntrepots = Math.floor(Math.random() * 5) + 3
|
|
const selectedEntrepots = entrepotIds.sort(() => 0.5 - Math.random()).slice(0, nbEntrepots)
|
|
|
|
for (const entrepotId of selectedEntrepots) {
|
|
const quantiteTotale = Math.floor(Math.random() * 4) + 2 // 2-5
|
|
const quantiteDisponible = Math.floor(Math.random() * quantiteTotale) + 1 // Au moins 1 dispo
|
|
await run(
|
|
'INSERT INTO stocks (outil_id, entrepot_id, quantite_totale, quantite_disponible) VALUES (?, ?, ?, ?)',
|
|
[outilId, entrepotId, quantiteTotale, quantiteDisponible]
|
|
)
|
|
}
|
|
}
|
|
console.log('✓ Stocks insérés pour tous les outils')
|
|
|
|
console.log('\n✅ Toutes les données de test ont été insérées')
|
|
} catch (error) {
|
|
console.error('❌ Erreur:', error.message)
|
|
process.exit(1)
|
|
}
|
|
}
|
|
|
|
loadSeedData()
|