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

220 lines
8.3 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");
// Generate future dates relative to today
const today = new Date();
// 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(
today.getFullYear(),
today.getMonth(),
today.getDate() + 15,
19,
0,
),
endDate: new Date(
today.getFullYear(),
today.getMonth(),
today.getDate() + 15,
21,
0,
),
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();