57 lines
1.4 KiB
JavaScript
57 lines
1.4 KiB
JavaScript
const { fakerLV : faker } = require('@faker-js/faker');
|
|
const { randomUUID } = require('crypto');
|
|
|
|
const USER_COUNT = 500;
|
|
|
|
/**
|
|
* @param { import("knex").Knex } knex
|
|
* @returns { Promise<void> }
|
|
*/
|
|
exports.seed = async function(knex) {
|
|
|
|
const places = await knex('places').select('id');
|
|
|
|
const createUser = ({
|
|
sex = faker.person.sexType(),
|
|
first_name = `${faker.person.firstName(sex)}`,
|
|
last_name = faker.person.lastName(sex),
|
|
email = faker.internet.email({ lastName: last_name, firstName: first_name }).toLocaleLowerCase(),
|
|
} = {}) => {
|
|
return {
|
|
id: randomUUID(),
|
|
first_name,
|
|
last_name,
|
|
email,
|
|
}
|
|
};
|
|
|
|
const users = [
|
|
createUser({
|
|
first_name: 'Broks Randolfs',
|
|
last_name: 'Gailītis',
|
|
email: 'broks.randolfs@gailitis.dev'
|
|
}),
|
|
createUser({
|
|
first_name: 'Ieva',
|
|
last_name: 'Gailīte'
|
|
}),
|
|
...new Array(USER_COUNT).fill(() => createUser()).map((fn, i) => fn(i)),
|
|
];
|
|
|
|
await knex('users').insert(users);
|
|
|
|
// Generate multiple random place ratings for each user
|
|
for (const user of users) {
|
|
const placeIds = faker.helpers.arrayElements(places, { min: 1, max: 10 });
|
|
for (const placeId of placeIds) {
|
|
await knex('place_ratings').insert({
|
|
id: randomUUID(),
|
|
user_id: user.id,
|
|
place_id: placeId.id,
|
|
rating: faker.number.int({ min: 1, max: 5 }),
|
|
});
|
|
}
|
|
}
|
|
|
|
};
|