import path from "path"; import { createClient } from "@sanity/client"; import dotenv from "dotenv"; dotenv.config({ path: path.resolve(".env.local") }); const projectId = process.env.SANITY_STUDIO_PROJECT_ID || "gdvj8e5j"; const dataset = process.env.SANITY_STUDIO_DATASET || "production"; const token = process.env.SANITY_AUTH_TOKEN; const client = createClient({ projectId, dataset, token, apiVersion: "2024-10-31", useCdn: false, }); async function main() { console.log("=== Updating Post Statuses in Sanity ==="); // 1. Unpublish to DRAFT: vietnam-wedding-guide-part-2, wedding-framework-project-managment, case-study--siu-tic-ci-n const draftSlugs = [ "vietnam-wedding-guide-part-2", "wedding-framework-project-managment", "case-study--siu-tic-ci-n", ]; for (const slug of draftSlugs) { const doc = await client.fetch( `*[_type == "post" && slug.current == "${slug}" && !(_id in path("drafts.**"))][0]` ); if (doc) { console.log(`Converting ${slug} (${doc._id}) to DRAFT...`); const draftId = `drafts.${doc._id}`; // Clone to draft const draftDoc = { ...doc, _id: draftId }; await client.createOrReplace(draftDoc); // Delete published document await client.delete(doc._id); console.log(`-> SUCCESS: ${slug} is now in DRAFT mode (${draftId})`); } else { console.log(`Document for ${slug} already in draft or not found published.`); } } // 2. DELETE completely: wedding-regrets, len-ke-hoach-cuoi const deleteSlugs = ["wedding-regrets", "len-ke-hoach-cuoi"]; for (const slug of deleteSlugs) { const docs = await client.fetch( `*[_type == "post" && slug.current == "${slug}"]{ _id }` ); for (const d of docs) { console.log(`Deleting ${slug} (${d._id})...`); await client.delete(d._id); console.log(`-> DELETED: ${d._id}`); } } // 3. Make vietnam-wedding-guide-part-1 FEATURED const featSlug = "vietnam-wedding-guide-part-1"; const featDocs = await client.fetch( `*[_type == "post" && slug.current == "${featSlug}"]{ _id }` ); for (const d of featDocs) { console.log(`Setting featured: true on ${featSlug} (${d._id})...`); await client.patch(d._id).set({ featured: true }).commit(); console.log(`-> SUCCESS: ${d._id} is now FEATURED!`); } // Also ensure any other posts have featured: false const otherPosts = await client.fetch( `*[_type == "post" && slug.current != "${featSlug}" && featured == true]{ _id }` ); for (const op of otherPosts) { console.log(`Resetting featured on ${op._id}...`); await client.patch(op._id).set({ featured: false }).commit(); } console.log("=== All Post Status Updates Completed! ==="); } main().catch((err) => { console.error("Error updating posts:", err); process.exit(1); });