diff --git a/db/seed/campaign/seed.ts b/db/seed/campaign/seed.ts index 6c0ca77f0..9c4204366 100644 --- a/db/seed/campaign/seed.ts +++ b/db/seed/campaign/seed.ts @@ -15,7 +15,7 @@ const prisma = new PrismaClient() const SEED_ACTIVE_CAMPAIGNS = 5 const SEED_RANDOM_CAMPAIGNS = 5 const SEED_COMPLETED_CAMPAIGNS = 3 -const SEED_HEAVILY_FUNDED_CAMPAIGNS = 3 +const SEED_HEAVILY_FUNDED_CAMPAIGNS = 1 export async function campaignSeed() { console.log('Campaigns seed') diff --git a/db/seed/donation/seed.ts b/db/seed/donation/seed.ts index e1870d16b..6c0736984 100644 --- a/db/seed/donation/seed.ts +++ b/db/seed/donation/seed.ts @@ -1,4 +1,11 @@ -import { PrismaClient, PaymentProvider, DonationStatus, DonationType, Person } from '@prisma/client' +import { + PrismaClient, + PaymentProvider, + DonationStatus, + DonationType, + Person, + CampaignState, +} from '@prisma/client' import { donationFactory } from './factory' @@ -78,8 +85,8 @@ async function seedRandomDonations({ person }: SeedData) { async function seedDonationsForCompletedCampaign({ person }: SeedData) { const completedCampaignVault = await prisma.vault.findFirst({ where: { - name: { - contains: 'completed', + campaign: { + state: CampaignState.complete, }, }, }) @@ -119,8 +126,10 @@ async function seedDonationsForCompletedCampaign({ person }: SeedData) { async function seedDonationsForHeavilyFundedCampaign({ person }: SeedData) { const heavilyFundedCampaignVault = await prisma.vault.findFirst({ where: { - name: { - contains: 'heavily-funded', + campaign: { + title: { + contains: 'heavily-funded', + }, }, }, }) diff --git a/db/seed/expense/factory.ts b/db/seed/expense/factory.ts index 07b47c9b9..82a74310a 100644 --- a/db/seed/expense/factory.ts +++ b/db/seed/expense/factory.ts @@ -11,9 +11,9 @@ export const expenseFactory = Factory.define(({ associations }) => ({ vaultId: associations.vaultId || faker.datatype.uuid(), documentId: associations.documentId || null, approvedById: associations.approvedById || null, - amount: faker.datatype.number(), + amount: faker.datatype.number({ min: 1, max: 20000 }), currency: faker.helpers.arrayElement(Object.values(Currency)), - status: faker.helpers.arrayElement(Object.values(ExpenseStatus)), + status: ExpenseStatus.pending, deleted: faker.datatype.boolean(), spentAt: faker.date.past(), })) diff --git a/db/seed/expense/seed.ts b/db/seed/expense/seed.ts index f0ed692d4..cb164999f 100644 --- a/db/seed/expense/seed.ts +++ b/db/seed/expense/seed.ts @@ -6,18 +6,33 @@ const prisma = new PrismaClient() export async function expenseSeed() { console.log('Expense seed') - const vault = await prisma.vault.findFirst() + const vault = await prisma.vault.findFirst({ + where: { + campaign: { + title: { + contains: 'heavily-funded', + }, + }, + }, + }) if (!vault) { throw new Error('There are no vaults created yet!') } + const coordinator = await prisma.coordinator.findFirst() + + if (!coordinator) { + throw new Error('There are no coordinators created yet!') + } + const expensesData: Expense[] = expenseFactory.buildList( - 20, + 11, {}, { associations: { vaultId: vault.id, + approvedById: coordinator.personId, }, }, ) diff --git a/db/seed/vault/seed.ts b/db/seed/vault/seed.ts index 0baadf38b..6cfd2dfe9 100644 --- a/db/seed/vault/seed.ts +++ b/db/seed/vault/seed.ts @@ -7,123 +7,37 @@ const prisma = new PrismaClient() export async function vaultSeed() { console.log('Vault seed') - await seedVaultsForRandomCampaign() - await seedVaultForCompletedCampaign() - await seedVaultForHeavilyFundedCampaign() -} - -async function seedVaultsForRandomCampaign() { - const campaign = await prisma.campaign - .findMany() - .then((campaigns) => faker.helpers.arrayElement(campaigns)) - - if (!campaign) { - throw new Error('There are no campaigns created yet!') - } - - const randomCampaignVaultsData: Vault[] = vaultFactory.buildList( - 20, - { - currency: Currency.BGN, - amount: 0, // Initializing with 0 and fill the correct amount after donations have been seeded - }, - { - associations: { - campaignId: campaign.id, - }, - }, - ) - - const insertRandomCampaignVaults = await prisma.vault.createMany({ - data: randomCampaignVaultsData, - skipDuplicates: true, - }) - - console.log({ insertRandomCampaignVaults }) -} - -async function seedVaultForCompletedCampaign() { - const completedCampaign = await prisma.campaign.findFirst({ - where: { - state: CampaignState.complete, - }, - }) - - if (!completedCampaign) { - throw new Error('There is no completed campaign created') - } - - const completedCampaignVault = await prisma.vault.findFirst({ - where: { - campaignId: completedCampaign.id, - }, - }) - - if (completedCampaignVault) { - console.log('{ Completed campaign vault already exists }') - return + await seedVaultsForCampaigns() + + async function seedVaultsForCampaigns() { + const campaigns = await prisma.campaign.findMany() + + if (!campaigns) { + throw new Error('There are no campaigns created yet!') + } + + let vaults: Vault[] = [] + campaigns.map(async (campaign) => { + vaults.push( + vaultFactory.build( + { + currency: Currency.BGN, + amount: 0, // Initializing with 0 and fill the correct amount after donations have been seeded + }, + { + associations: { + campaignId: campaign.id, + }, + }, + ), + ) + }) + + const insertRandomCampaignVaults = await prisma.vault.createMany({ + data: vaults, + skipDuplicates: true, + }) + + console.log({ insertRandomCampaignVaults }) } - - const completedCampaignVaultData: Vault = vaultFactory.build( - { - name: faker.finance.accountName() + ' completed', - currency: Currency.BGN, - amount: 0, // Initializing with 0 and fill the correct amount after donations have been seeded - }, - { - associations: { - campaignId: completedCampaign.id, - }, - }, - ) - - const insertCompletedCampaignVault = await prisma.vault.create({ - data: completedCampaignVaultData, - }) - - console.log(`{ insertCompletedCampaignVault: ${!!insertCompletedCampaignVault} }`) -} - -async function seedVaultForHeavilyFundedCampaign() { - const heavilyFundedCampaign = await prisma.campaign.findFirst({ - where: { - title: { - contains: 'heavily-funded', - }, - }, - }) - - if (!heavilyFundedCampaign) { - throw new Error('There is no heavily funded campaign created') - } - - const heavilyFundedCampaignVault = await prisma.vault.findFirst({ - where: { - campaignId: heavilyFundedCampaign.id, - }, - }) - - if (heavilyFundedCampaignVault) { - console.log('{ Heavily-funded campaign vault already exists }') - return - } - - const heavilyFundedCampaignVaultData: Vault = vaultFactory.build( - { - name: faker.finance.accountName() + ' heavily-funded', - currency: Currency.BGN, - amount: 0, // Initializing with 0 and fill the correct amount after donations have been seeded - }, - { - associations: { - campaignId: heavilyFundedCampaign.id, - }, - }, - ) - - const insertHeavilyFundedCampaignVault = await prisma.vault.create({ - data: heavilyFundedCampaignVaultData, - }) - - console.log(`{ insertHeavilyFundedCampaignVault: ${!!insertHeavilyFundedCampaignVault} }`) }