Adds visibility and order fields to the 3 value pluralism documents
so they display correctly in the docs.html sidebar.
🤖 Generated with Claude Code
94 lines
2.4 KiB
JavaScript
Executable file
94 lines
2.4 KiB
JavaScript
Executable file
#!/usr/bin/env node
|
||
|
||
/**
|
||
* Migration: Add visibility and order to value pluralism documents
|
||
*
|
||
* This migration ensures the 3 value pluralism documents are properly
|
||
* configured to display in the docs.html sidebar.
|
||
*/
|
||
|
||
const { MongoClient } = require('mongodb');
|
||
|
||
const MONGO_URI = process.env.MONGO_URI || 'mongodb://localhost:27017';
|
||
const DB_NAME = process.env.MONGO_DB || 'tractatus_prod';
|
||
|
||
const UPDATES = [
|
||
{
|
||
slug: 'value-pluralism-faq',
|
||
category: 'getting-started',
|
||
visibility: 'public',
|
||
order: 3
|
||
},
|
||
{
|
||
slug: 'pluralistic-values-research-foundations',
|
||
category: 'research-theory',
|
||
visibility: 'public',
|
||
order: 1
|
||
},
|
||
{
|
||
slug: 'pluralistic-values-deliberation-plan-v2',
|
||
category: 'technical-reference',
|
||
visibility: 'public',
|
||
order: 12
|
||
}
|
||
];
|
||
|
||
async function migrate() {
|
||
console.log('🔧 Starting value pluralism documents migration...');
|
||
console.log(` Database: ${DB_NAME}`);
|
||
console.log('');
|
||
|
||
const client = new MongoClient(MONGO_URI);
|
||
|
||
try {
|
||
await client.connect();
|
||
const db = client.db(DB_NAME);
|
||
const collection = db.collection('documents');
|
||
|
||
for (const update of UPDATES) {
|
||
const { slug, ...fields } = update;
|
||
|
||
const result = await collection.updateOne(
|
||
{ slug },
|
||
{ $set: fields }
|
||
);
|
||
|
||
if (result.matchedCount === 0) {
|
||
console.log(` ⚠️ Document not found: ${slug}`);
|
||
} else if (result.modifiedCount === 0) {
|
||
console.log(` ℹ️ Already up to date: ${slug}`);
|
||
} else {
|
||
console.log(` ✅ Updated: ${slug}`);
|
||
console.log(` - category: ${fields.category}`);
|
||
console.log(` - visibility: ${fields.visibility}`);
|
||
console.log(` - order: ${fields.order}`);
|
||
}
|
||
console.log('');
|
||
}
|
||
|
||
// Verify
|
||
console.log('🔍 Verification:');
|
||
const docs = await collection.find(
|
||
{ slug: { $in: UPDATES.map(u => u.slug) } },
|
||
{ projection: { slug: 1, category: 1, visibility: 1, order: 1, _id: 0 } }
|
||
).toArray();
|
||
|
||
docs.forEach(doc => {
|
||
console.log(` ${doc.slug}:`);
|
||
console.log(` category: ${doc.category}`);
|
||
console.log(` visibility: ${doc.visibility}`);
|
||
console.log(` order: ${doc.order}`);
|
||
});
|
||
|
||
console.log('');
|
||
console.log('✨ Migration complete!');
|
||
|
||
} catch (error) {
|
||
console.error('❌ Migration failed:', error);
|
||
process.exit(1);
|
||
} finally {
|
||
await client.close();
|
||
}
|
||
}
|
||
|
||
migrate();
|