Last active
June 18, 2019 22:06
-
-
Save 174n/24a0671fca9b49808b30a6f59af96b88 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const mysql = require("mysql"); | |
const faker = require('faker'); | |
faker.locale = "de"; | |
/* Generic stuff | |
==========================================*/ | |
const getArray = number => | |
[...new Array(number)]; | |
const generateMultiple = (number, func) => | |
getArray(number).map(() => func()); | |
const generateMultipleWithId = (number, func) => | |
getArray(number).map((v, i) => { | |
let obj = func(); | |
obj.id = i; | |
return obj; | |
}); | |
/* DB specific stuff | |
==========================================*/ | |
const generateKunde = (Adresse = 0) => ({ | |
Name: faker.name.lastName(), | |
Vorname: faker.name.firstName(), | |
Adresse | |
}); | |
const generateAdresse = () => ({ | |
PLZ: faker.address.zipCode(), | |
Land: faker.address.country(), | |
Stadt: faker.address.city(), | |
Strasse: faker.address.streetName(), | |
Hausnummer: faker.random.number({ | |
min: 1, | |
max: 300 | |
}) | |
}); | |
const generateProdukt = (KategorieID = 0, UnterkategorieID = 0, HerkunftID = 0) => ({ | |
Name: faker.commerce.productName(), | |
Preis: faker.random.number({ | |
min: 5, | |
max: 1000 | |
}), | |
Model: `${generateMultiple(4, faker.random.alphaNumeric).join("")}-${faker.random.number({min: 1000,max: 9999})}-${faker.random.arrayElement(["lite", "pro", "elite", "special", "s", "remastered", "large", "air"])}`, | |
Farbe: Math.random() > 0.3 ? faker.commerce.color() : null, | |
Groesse: Math.random() > 0.6 ? faker.random.number({ | |
min: 20, | |
max: 40 | |
}) : null, | |
Kategorie: KategorieID, | |
Unterkategorie: UnterkategorieID, | |
Herkunft: HerkunftID | |
}); | |
const generateKategorie = () => ({ | |
Name: faker.commerce.department(), | |
Beschreibung: faker.lorem.paragraph() | |
}); | |
const generateUnterkategorie = (KategorieID = 0) => ({ | |
Name: faker.commerce.department(), | |
Beschreibung: faker.lorem.paragraph(), | |
Kategorie: KategorieID | |
}); | |
const generateHerkunft = (AdresseID = 0) => ({ | |
Lieferzeit: faker.random.number({min: 1, max: 14}), | |
Einfuhrkosten: faker.random.number({min: 500, max: 10000}), | |
Marke: faker.company.companyName(), | |
Adresse: AdresseID | |
}); | |
const generateBestellung = (ProduktID = 0, KundeID = 0) => ({ | |
Uhrzeit: faker.date.past(), | |
Anzahl: faker.random.arrayElement([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 4, 4, 5]), | |
Produkt: ProduktID, | |
Kunde: KundeID | |
}); | |
/* Hardcoded stuff | |
==========================================*/ | |
const Adresse = generateMultiple(1030, generateAdresse); | |
const Herkunft = getArray(30).map((_, i) => generateHerkunft(i+1)); | |
const Kunde = getArray(1000).map((_, i) => generateKunde(i+31)); | |
const Kategorie = generateMultiple(10, generateKategorie); | |
const Unterkategorie = getArray(50).map(() => generateUnterkategorie(faker.random.number({min:1, max: 10}))); | |
const Produkt = getArray(3000).map(() => generateProdukt( | |
faker.random.number({min: 1, max: 10}), | |
faker.random.number({min: 1, max: 50}), | |
faker.random.number({min: 1, max: 30}) | |
)); | |
const Bestellung = getArray(5000).map(() => generateBestellung( | |
faker.random.number({min:1, max: 3000}), | |
faker.random.number({min:1, max: 1000}) | |
)); | |
/* DB connection | |
==========================================*/ | |
let connection = mysql.createConnection({ | |
host: "remotemysql.com", | |
user: "username", | |
password: "password", | |
database: "database" | |
}); | |
const addRow = (table, content) => { | |
connection.query('INSERT INTO '+table+' SET ?', content, function (error, results, fields) { | |
if (error) throw error; | |
console.log(`${table} - ${results.insertId}`); | |
}); | |
} | |
connection.connect(); | |
let tables = {Adresse, Herkunft, Kunde, Kategorie, Unterkategorie, Produkt, Bestellung}; | |
let tableNames = Object.keys(tables); | |
let tableValues = Object.values(tables); | |
tableValues | |
.forEach((table, i) => { | |
table.forEach(entry => { | |
addRow(tableNames[i], entry); | |
}) | |
}); | |
connection.end(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment