@onurege3467/zerohelper
Version:
ZeroHelper is a versatile high-performance utility library and database framework for Node.js, fully written in TypeScript.
38 lines (37 loc) • 1.46 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.DataSeeder = void 0;
const index_1 = require("../functions/index");
class DataSeeder {
constructor(database) {
this.db = database;
}
generateValue(field) {
switch (field.type) {
case 'id': return Date.now().toString(36) + Math.random().toString(36).substr(2);
case 'email': return `${(0, index_1.randomText)(5)}@${(0, index_1.randomArray)(['gmail.com', 'outlook.com', 'zero.io'])}`;
case 'number': return (0, index_1.randomNumber)(field.min ?? 0, field.max ?? 1000);
case 'string': return (0, index_1.randomText)(field.length ?? 8);
case 'boolean': return Math.random() > 0.5;
case 'date': return new Date(Date.now() - Math.random() * 10000000000);
case 'pick': return (0, index_1.randomArray)(field.values ?? []);
default: return null;
}
}
/**
* Seeds a table with mock data based on a schema.
*/
async seed(table, count, schema) {
const dataArray = [];
for (let i = 0; i < count; i++) {
const row = {};
for (const [key, field] of Object.entries(schema)) {
row[key] = this.generateValue(field);
}
dataArray.push(row);
}
await this.db.bulkInsert(table, dataArray);
return count;
}
}
exports.DataSeeder = DataSeeder;