codecombat/scripts/mongodb/updateCourses.js
2016-08-16 15:27:34 -07:00

120 lines
3.8 KiB
JavaScript

// Update course data
// Usage:
// mongo <address>:<port>/<database> <script file> -u <username> -p <password>
// eg: mongo localhost:27017/coco scripts/mongodb/updateCourses.js
// NOTE: uses name as unique identifier, so changing the name will insert a new course
// NOTE: pricePerSeat in USD cents
var courses =
[
{
name: "Introduction to Computer Science",
slug: "introduction-to-computer-science",
campaignID: ObjectId("55b29efd1cd6abe8ce07db0d"),
description: "Learn basic syntax, while loops, and the CodeCombat environment.",
duration: NumberInt(1),
free: true,
screenshot: "/images/pages/courses/101_info.png",
releasePhase: 'released'
},
{
name: "Computer Science 2",
slug: "computer-science-2",
campaignID: ObjectId("562f88e84df18473073c74e2"),
description: "Introduce Arguments, Variables, If Statements, and Arithmetic.",
duration: NumberInt(5),
free: false,
screenshot: "/images/pages/courses/102_info.png",
releasePhase: 'released'
},
{
name: "Computer Science 3",
slug: "computer-science-3",
campaignID: ObjectId("56462ac4410c528505e1160a"),
description: "Introduces arithmetic, counters, advanced while loops, break, continue, arrays.",
duration: NumberInt(5),
free: false,
screenshot: "/images/pages/courses/103_info.png",
releasePhase: 'released'
},
{
name: "Computer Science 4",
slug: "computer-science-4",
campaignID: ObjectId("56462c1133f1478605ebd018"),
description: "Introduces object literals, for loops, function definitions, drawing, and modulo.",
duration: NumberInt(5),
free: false,
screenshot: "/images/pages/courses/104_info.png",
releasePhase: 'released'
},
{
name: "Computer Science 5",
slug: "computer-science-5",
campaignID: ObjectId("568ad069a6584820004437f2"),
description: "Introduces function parameters, function return values and algorithms.",
duration: NumberInt(5),
free: false,
screenshot: "/images/pages/courses/105_info.png",
releasePhase: 'released'
},
{
name: "CS: Game Development 1",
slug: "game-dev-1",
campaignID: ObjectId("5789236960deed1f00ec2ab8"),
description: "Learn to create your own games which you can share with your friends.",
duration: NumberInt(1),
free: false,
releasePhase: 'released'
},
{
name: "CS: Web Development 1",
slug: "web-dev-1",
campaignID: ObjectId("578913f2c8871ac2326fa3e4"),
description: "Learn the basics of web development in this introductory HTML & CSS course.",
duration: NumberInt(1),
free: false,
releasePhase: 'released'
},
{
name: "CS: Web Development 2",
slug: "web-dev-2",
campaignID: ObjectId("57891570c8871ac2326fa3f8"),
description: "Learn more advanced web development, including scripting to make interactive webpages.",
duration: NumberInt(2),
free: false,
releasePhase: 'beta'
},
{
name: "JS Primer",
slug: "js-primer",
campaignID: ObjectId("579a5f37843ad12000e6d4c7"),
description: "Learn JavaScript after you already know another programming language like Python.",
duration: NumberInt(1),
free: false,
releasePhase: 'beta'
}
];
print("Finding course concepts..");
for (var i = 0; i < courses.length; i++) {
var concepts = {};
var cursor = db.campaigns.find({_id: courses[i].campaignID}, {'levels': 1});
if (cursor.hasNext()) {
var doc = cursor.next();
for (var levelID in doc.levels) {
for (var j = 0; j < (doc.levels[levelID].concepts || []).length; j++) {
concepts[doc.levels[levelID].concepts[j]] = true;
}
}
}
courses[i].concepts = Object.keys(concepts);
}
print("Updating courses..");
for (var i = 0; i < courses.length; i++) {
db.courses.update({name: courses[i].name}, courses[i], {upsert: true});
}
print("Done.");