tractatus/scripts/migrate-value-pluralism-docs.js
TheFlow ac2db33732 fix(submissions): restructure Economist package and fix article display
- Create Economist SubmissionTracking package correctly:
  * mainArticle = full blog post content
  * coverLetter = 216-word SIR— letter
  * Links to blog post via blogPostId
- Archive 'Letter to The Economist' from blog posts (it's the cover letter)
- Fix date display on article cards (use published_at)
- Target publication already displaying via blue badge

Database changes:
- Make blogPostId optional in SubmissionTracking model
- Economist package ID: 68fa85ae49d4900e7f2ecd83
- Le Monde package ID: 68fa2abd2e6acd5691932150

Next: Enhanced modal with tabs, validation, export

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-24 08:47:42 +13:00

95 lines
2.5 KiB
JavaScript
Executable file
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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.
*/
require('dotenv').config();
const { MongoClient } = require('mongodb');
const MONGO_URI = process.env.MONGODB_URI || process.env.MONGO_URI || 'mongodb://localhost:27017';
const DB_NAME = process.env.MONGODB_DB || 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();