ghostguild-org/scripts/seed-series-events.js

187 lines
No EOL
7.9 KiB
JavaScript

import { connectDB } from '../server/utils/mongoose.js'
import Event from '../server/models/event.js'
async function seedSeriesEvents() {
try {
await connectDB()
console.log('Connected to database')
// Workshop Series: "Cooperative Game Development Fundamentals"
const workshopSeries = [
{
title: 'Cooperative Business Models in Game Development',
slug: 'coop-business-models-workshop',
tagline: 'Learn the foundations of cooperative business structures',
description: 'An introductory workshop covering the basic principles and structures of worker cooperatives in the game development industry.',
content: 'This workshop will cover the legal structures, governance models, and financial frameworks that make cooperative game studios successful.',
startDate: new Date('2024-10-15T19:00:00.000Z'),
endDate: new Date('2024-10-15T21:00:00.000Z'),
eventType: 'workshop',
location: '#workshop-fundamentals',
isOnline: true,
membersOnly: false,
registrationRequired: true,
maxAttendees: 50,
series: {
id: 'coop-dev-fundamentals',
title: 'Cooperative Game Development Fundamentals',
description: 'A comprehensive workshop series covering the essentials of building and running cooperative game studios',
type: 'workshop_series',
position: 1,
totalEvents: 4,
isSeriesEvent: true
},
createdBy: 'admin'
},
{
title: 'Democratic Decision Making in Creative Projects',
slug: 'democratic-decision-making-workshop',
tagline: 'Practical tools for collaborative project management',
description: 'Learn how to implement democratic decision-making processes that work for creative teams and game development projects.',
content: 'This workshop focuses on consensus building, conflict resolution, and collaborative project management techniques.',
startDate: new Date('2024-10-22T19:00:00.000Z'),
endDate: new Date('2024-10-22T21:00:00.000Z'),
eventType: 'workshop',
location: '#workshop-fundamentals',
isOnline: true,
membersOnly: false,
registrationRequired: true,
maxAttendees: 50,
series: {
id: 'coop-dev-fundamentals',
title: 'Cooperative Game Development Fundamentals',
description: 'A comprehensive workshop series covering the essentials of building and running cooperative game studios',
type: 'workshop_series',
position: 2,
totalEvents: 4,
isSeriesEvent: true
},
createdBy: 'admin'
},
{
title: 'Funding and Financial Models for Co-ops',
slug: 'coop-funding-workshop',
tagline: 'Sustainable financing for cooperative studios',
description: 'Explore funding options, revenue sharing models, and financial management strategies specific to cooperative game studios.',
content: 'This workshop covers grant opportunities, crowdfunding strategies, and internal financial management for worker cooperatives.',
startDate: new Date('2024-10-29T19:00:00.000Z'),
endDate: new Date('2024-10-29T21:00:00.000Z'),
eventType: 'workshop',
location: '#workshop-fundamentals',
isOnline: true,
membersOnly: false,
registrationRequired: true,
maxAttendees: 50,
series: {
id: 'coop-dev-fundamentals',
title: 'Cooperative Game Development Fundamentals',
description: 'A comprehensive workshop series covering the essentials of building and running cooperative game studios',
type: 'workshop_series',
position: 3,
totalEvents: 4,
isSeriesEvent: true
},
createdBy: 'admin'
},
{
title: 'Building Your Cooperative Studio',
slug: 'building-coop-studio-workshop',
tagline: 'From concept to reality: launching your co-op',
description: 'A practical guide to forming a cooperative game studio, covering legal formation, member recruitment, and launch strategies.',
content: 'This final workshop in the series provides a step-by-step guide to actually forming and launching a cooperative game studio.',
startDate: new Date('2024-11-05T19:00:00.000Z'),
endDate: new Date('2024-11-05T21:00:00.000Z'),
eventType: 'workshop',
location: '#workshop-fundamentals',
isOnline: true,
membersOnly: false,
registrationRequired: true,
maxAttendees: 50,
series: {
id: 'coop-dev-fundamentals',
title: 'Cooperative Game Development Fundamentals',
description: 'A comprehensive workshop series covering the essentials of building and running cooperative game studios',
type: 'workshop_series',
position: 4,
totalEvents: 4,
isSeriesEvent: true
},
createdBy: 'admin'
}
]
// Monthly Community Meetup Series
const meetupSeries = [
{
title: 'October Community Meetup',
slug: 'october-community-meetup',
tagline: 'Monthly gathering for cooperative game developers',
description: 'Join fellow cooperative game developers for informal networking, project sharing, and community building.',
content: 'Our monthly community meetup provides a relaxed environment to share your projects, get feedback, and connect with other developers interested in cooperative models.',
startDate: new Date('2024-10-12T18:00:00.000Z'),
endDate: new Date('2024-10-12T20:00:00.000Z'),
eventType: 'community',
location: '#community-meetup',
isOnline: true,
membersOnly: false,
registrationRequired: false,
series: {
id: 'monthly-meetups',
title: 'Monthly Community Meetups',
description: 'Regular monthly gatherings for the cooperative game development community',
type: 'recurring_meetup',
position: 1,
totalEvents: 12,
isSeriesEvent: true
},
createdBy: 'admin'
},
{
title: 'November Community Meetup',
slug: 'november-community-meetup',
tagline: 'Monthly gathering for cooperative game developers',
description: 'Join fellow cooperative game developers for informal networking, project sharing, and community building.',
content: 'Our monthly community meetup provides a relaxed environment to share your projects, get feedback, and connect with other developers interested in cooperative models.',
startDate: new Date('2024-11-09T18:00:00.000Z'),
endDate: new Date('2024-11-09T20:00:00.000Z'),
eventType: 'community',
location: '#community-meetup',
isOnline: true,
membersOnly: false,
registrationRequired: false,
series: {
id: 'monthly-meetups',
title: 'Monthly Community Meetups',
description: 'Regular monthly gatherings for the cooperative game development community',
type: 'recurring_meetup',
position: 2,
totalEvents: 12,
isSeriesEvent: true
},
createdBy: 'admin'
}
]
// Insert all series events
const allSeriesEvents = [...workshopSeries, ...meetupSeries]
for (const eventData of allSeriesEvents) {
const existingEvent = await Event.findOne({ slug: eventData.slug })
if (!existingEvent) {
const event = new Event(eventData)
await event.save()
console.log(`Created series event: ${event.title}`)
} else {
console.log(`Series event already exists: ${eventData.title}`)
}
}
console.log('Series events seeding completed!')
process.exit(0)
} catch (error) {
console.error('Error seeding series events:', error)
process.exit(1)
}
}
seedSeriesEvents()