Files
aperonight/db/seeds.rb
Kevin BATAILLE 30f3ecc6ad refactor(events): replace parties concept with events throughout the application
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>

This commit refactors the entire application to replace the 'parties' concept with 'events'. All controllers, models, views, and related files have been updated to reflect this change. The parties table has been replaced with an events table, and all related functionality has been updated accordingly.
2025-08-28 13:20:51 +02:00

117 lines
3.9 KiB
Ruby
Executable File

# This file should ensure the existence of records required to run the application in every environment (production,
# development, test). The code here should be idempotent so that it can be executed at any point in every environment.
# The data can then be loaded with the bin/rails db:seed command (or created alongside the database with db:setup).
#
# Example:
#
# ["Action", "Comedy", "Drama", "Horror"].each do |genre_name|
# MovieGenre.find_or_create_by!(name: genre_name)
# end
# Create admin user for development
admin_user = User.find_or_create_by!(email: 'admin@example.com') do |u|
u.password = 'password'
u.password_confirmation = 'password'
u.last_name = nil
u.first_name = nil
end
# Create regular users for development
users = User.where.not(email: 'admin@example.com').limit(5)
missing_users_count = 5 - users.count
missing_users_count.times do |i|
User.find_or_create_by!(email: "user#{i + 1}@example.com") do |u|
u.password = 'password'
u.password_confirmation = 'password'
u.last_name = nil
u.first_name = nil
end
end
# Reload all users after creation
users = User.all.to_a
# Create sample parties
parties_data = [
{
name: "Summer Beach Party",
slug: "summer-beach-party",
description: "Join us for an amazing night at the beach with music, dancing, and cocktails.",
venue_name: "Sunset Beach Resort",
venue_address: "123 Ocean Drive, Miami, FL",
latitude: 25.7617,
longitude: -80.1918,
start_time: 1.day.from_now,
end_time: 1.day.from_now + 6.hours,
featured: true,
image: "https://fastly.picsum.photos/id/407/300/200.jpg?hmac=9EhoXMZ1QdwJue90vzxcjBg2YzsZsAWCjJ7oxOhtcU0",
user: users.first
},
{
name: "Rooftop Jazz Night",
slug: "rooftop-jazz-night",
description: "Experience smooth jazz under the stars at our exclusive rooftop venue.",
venue_name: "Skyline Rooftop Bar",
venue_address: "456 Downtown Ave, New York, NY",
latitude: 40.7128,
longitude: -74.0060,
start_time: 3.days.from_now,
end_time: 3.days.from_now + 4.hours,
featured: true,
image: "https://images.unsplash.com/photo-1511671782779-c97d3d27a1d4?ixlib=rb-4.0.3&auto=format&fit=crop&w=800&q=80",
user: users.second
},
{
name: "Warehouse Electronic Festival",
slug: "warehouse-electronic-festival",
description: "A night of electronic music and dancing in an industrial warehouse setting.",
venue_name: "Downtown Warehouse",
venue_address: "789 Industrial Blvd, Los Angeles, CA",
latitude: 34.0522,
longitude: -118.2437,
start_time: 1.week.from_now,
end_time: 1.week.from_now + 8.hours,
featured: false,
image: "https://images.unsplash.com/photo-1470225620780-dba8ba36b745?ixlib=rb-4.0.3&auto=format&fit=crop&w=800&q=80",
user: users.third
}
]
parties = []
parties_data.each do |party_data|
user = party_data.delete(:user)
party = Party.find_or_create_by!(name: party_data[:name]) do |p|
p.assign_attributes(party_data)
p.user = user
p.state = :published
end
parties << party
end
# Create ticket types for each party
parties.each_with_index do |party, index|
# General Admission ticket type
TicketType.find_or_create_by!(party: party, name: "General Admission") do |tt|
tt.description = "General admission ticket for #{party.name}"
tt.price_cents = 2500 # $25.00
tt.quantity = 100
tt.sale_start_at = 1.month.ago
tt.sale_end_at = party.start_time - 1.hour
tt.requires_id = false
tt.minimum_age = 18
end
# VIP ticket type
TicketType.find_or_create_by!(party: party, name: "VIP") do |tt|
tt.description = "VIP access ticket for #{party.name} with premium benefits"
tt.price_cents = 7500 # $75.00
tt.quantity = 20
tt.sale_start_at = 1.month.ago
tt.sale_end_at = party.start_time - 1.hour
tt.requires_id = true
tt.minimum_age = 21
end
end
puts "Created #{User.count} users, #{Party.count} parties, and #{TicketType.count} ticket types"