Broks Randolfs Gailītis 6b6569aa05
Some checks failed
CI / main (push) Failing after 3m26s
Use place ratings (temp affinity)
2025-03-15 19:42:20 +02:00

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