From b112aefe215a6b60d1d24083202c2206f1c2b5f1 Mon Sep 17 00:00:00 2001 From: Manuel Bustillo Date: Mon, 27 Jan 2025 20:22:21 +0100 Subject: [PATCH] Optimize seeds file --- db/seeds.rb | 50 ++++++++++++++++++++++++++++---------------------- 1 file changed, 28 insertions(+), 22 deletions(-) diff --git a/db/seeds.rb b/db/seeds.rb index e7169ab..a900a1e 100644 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + # Copyright (C) 2024-2025 LibreWeddingPlanner contributors NUMBER_OF_GUESTS = 50 @@ -9,20 +11,22 @@ end wedding = Wedding.create!(slug: :default) ActsAsTenant.with_tenant(wedding) do - Expense.create!(name: 'Photographer', amount: 3000, pricing_type: 'fixed') - Expense.create!(name: 'Country house', amount: 6000, pricing_type: 'fixed') - Expense.create!(name: 'Catering', amount: 200, pricing_type: 'per_person') - Expense.create!(name: 'Flowers', amount: 500, pricing_type: 'fixed') - Expense.create!(name: 'Band', amount: 1000, pricing_type: 'fixed') - Expense.create!(name: 'Wedding planner', amount: 2000, pricing_type: 'fixed') - Expense.create!(name: 'Dress', amount: 1000, pricing_type: 'fixed') - Expense.create!(name: 'Suit', amount: 500, pricing_type: 'fixed') - Expense.create!(name: 'Rings', amount: 1000, pricing_type: 'fixed') - Expense.create!(name: 'Makeup', amount: 200, pricing_type: 'fixed') - Expense.create!(name: 'Hair', amount: 200, pricing_type: 'fixed') - Expense.create!(name: 'Transportation', amount: 3000, pricing_type: 'fixed') - Expense.create!(name: 'Invitations', amount: 200, pricing_type: 'fixed') - Expense.create!(name: 'Cake', amount: 500, pricing_type: 'fixed') + [ + { name: 'Photographer', amount: 3000, pricing_type: 'fixed' }, + { name: 'Country house', amount: 6000, pricing_type: 'fixed' }, + { name: 'Catering', amount: 200, pricing_type: 'per_person' }, + { name: 'Flowers', amount: 500, pricing_type: 'fixed' }, + { name: 'Band', amount: 1000, pricing_type: 'fixed' }, + { name: 'Wedding planner', amount: 2000, pricing_type: 'fixed' }, + { name: 'Dress', amount: 1000, pricing_type: 'fixed' }, + { name: 'Suit', amount: 500, pricing_type: 'fixed' }, + { name: 'Rings', amount: 1000, pricing_type: 'fixed' }, + { name: 'Makeup', amount: 200, pricing_type: 'fixed' }, + { name: 'Hair', amount: 200, pricing_type: 'fixed' }, + { name: 'Transportation', amount: 3000, pricing_type: 'fixed' }, + { name: 'Invitations', amount: 200, pricing_type: 'fixed' }, + { name: 'Cake', amount: 500, pricing_type: 'fixed' } + ].then { Expense.insert_all!(it) } Group.create!(name: "Jim's guests", icon: 'pi pi-heart').tap do |parent| parent.children.create!(name: "Jim's family", icon: 'pi pi-users').tap do |family| @@ -56,19 +60,21 @@ ActsAsTenant.with_tenant(wedding) do groups = Group.all - NUMBER_OF_GUESTS.times do - Guest.create!( + invitations = ([{}] * (NUMBER_OF_GUESTS * 0.8)).then { Invitation.insert_all!(it) }.rows.flatten + + NUMBER_OF_GUESTS.times.map do |i| + { name: Faker::Name.name, phone: Faker::PhoneNumber.cell_phone, - group: groups.sample, + group_id: groups.sample.id, status: Guest.statuses.keys.sample, - invitation: (Invitation.create!(wedding:) if rand > 0.1), - ) - end + invitation_id: invitations[i] + } + end.then { Guest.insert_all!(it) } ActiveJob.perform_all_later(3.times.map { TableSimulatorJob.new(wedding.id) }) - 'red'.paint.palette.triad(as: :hex).zip(Group.roots).each { |(color, group)| group.update!(color: color.paint.desaturate(40)) } + "red".dup.paint.palette.triad(as: :hex).zip(Group.roots).each { |(color, group)| group.update!(color: color.paint.desaturate(40)) } Group.roots.each(&:colorize_children) @@ -76,6 +82,6 @@ ActsAsTenant.with_tenant(wedding) do email: 'development@example.com', confirmed_at: Time.zone.now, password: 'supersecretpassword', - password_confirmation: 'supersecretpassword', + password_confirmation: 'supersecretpassword' ) end