From b45d06bbe08963bc58349b54e6ab6e0c9695965f Mon Sep 17 00:00:00 2001 From: Sonny Date: Mon, 4 Aug 2025 19:56:37 +0200 Subject: [PATCH] chore: fix seeders --- Makefile | 3 +++ database/seeders/collection_seeder.ts | 10 +++++----- database/seeders/link_seeder.ts | 15 ++++++++++----- database/seeders/user_seeder.ts | 17 +++++++++++------ 4 files changed, 29 insertions(+), 16 deletions(-) diff --git a/Makefile b/Makefile index c971cb9..81f5df1 100644 --- a/Makefile +++ b/Makefile @@ -13,6 +13,9 @@ prod: seed: @node ace db:seed +fresh: + @node ace migration:fresh + down: @-docker compose down @-docker compose -f dev.compose.yml down diff --git a/database/seeders/collection_seeder.ts b/database/seeders/collection_seeder.ts index 3359e58..c05bbb2 100644 --- a/database/seeders/collection_seeder.ts +++ b/database/seeders/collection_seeder.ts @@ -4,6 +4,8 @@ import User from '#user/models/user'; import { BaseSeeder } from '@adonisjs/lucid/seeders'; import { faker } from '@faker-js/faker'; +const ID_OFFSET = 100; + export default class extends BaseSeeder { static environment = ['development', 'testing']; @@ -11,7 +13,7 @@ export default class extends BaseSeeder { const users = await getUserIds(); const collections = faker.helpers.multiple( - () => createRandomCollection(users), + (_, index) => createRandomCollection(users, ID_OFFSET + index), { count: 50, } @@ -25,12 +27,10 @@ export async function getUserIds() { return users.map(({ id }) => id); } -let collectionId = 0; -function createRandomCollection(userIds: User['id'][]) { +function createRandomCollection(userIds: User['id'][], id: number) { const authorId = faker.helpers.arrayElements(userIds, 1).at(0); - collectionId++; return { - id: collectionId, + id, name: faker.string.alphanumeric({ length: { min: 5, max: 25 } }), description: faker.string.alphanumeric({ length: { min: 0, max: 254 } }), visibility: Visibility.PRIVATE, diff --git a/database/seeders/link_seeder.ts b/database/seeders/link_seeder.ts index 79d5806..3034b64 100644 --- a/database/seeders/link_seeder.ts +++ b/database/seeders/link_seeder.ts @@ -5,6 +5,8 @@ import User from '#user/models/user'; import { BaseSeeder } from '@adonisjs/lucid/seeders'; import { faker } from '@faker-js/faker'; +const ID_OFFSET = 100; + export default class extends BaseSeeder { static environment = ['development', 'testing']; @@ -12,9 +14,12 @@ export default class extends BaseSeeder { const users = await getUserIds(); const links = await Promise.all( - faker.helpers.multiple(async () => createRandomLink(users), { - count: 500, - }) + faker.helpers.multiple( + async (_, index) => createRandomLink(users, ID_OFFSET + index), + { + count: 500, + } + ) ); await Link.createMany(links.filter((a) => typeof a !== 'undefined') as any); } @@ -25,7 +30,7 @@ async function getCollectionIds(authorId: User['id']) { return collection.map(({ id }) => id); } -async function createRandomLink(userIds: User['id'][]) { +async function createRandomLink(userIds: User['id'][], id: number) { const authorId = faker.helpers.arrayElements(userIds, 1).at(0)!; const collections = await getCollectionIds(authorId); @@ -35,7 +40,7 @@ async function createRandomLink(userIds: User['id'][]) { } return { - id: faker.string.uuid(), + id, name: faker.string.alphanumeric({ length: { min: 5, max: 25 } }), description: faker.string.alphanumeric({ length: { min: 0, max: 254 } }), url: faker.internet.url(), diff --git a/database/seeders/user_seeder.ts b/database/seeders/user_seeder.ts index 5b42311..6f15037 100644 --- a/database/seeders/user_seeder.ts +++ b/database/seeders/user_seeder.ts @@ -3,22 +3,27 @@ import { GoogleToken } from '@adonisjs/ally/types'; import { BaseSeeder } from '@adonisjs/lucid/seeders'; import { faker } from '@faker-js/faker'; +const ID_OFFSET = 100; + export default class extends BaseSeeder { static environment = ['development', 'testing']; async run() { - const users = faker.helpers.multiple(createRandomUser, { - count: 25, - }); + const users = faker.helpers.multiple( + (_, index) => createRandomUser(ID_OFFSET + index), + { + count: 25, + } + ); await User.createMany(users); } } -export function createRandomUser() { +export function createRandomUser(index: number) { return { - id: faker.number.int(), + id: index, email: faker.internet.email(), - name: faker.internet.userName(), + name: faker.internet.username(), nickName: faker.internet.displayName(), avatarUrl: faker.image.avatar(), isAdmin: false,