import fs from "fs"; import path from "path"; import { createClient } from "@sanity/client"; import dotenv from "dotenv"; // Load studio environment variables dotenv.config({ path: path.resolve("studio/.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 SEED_FILE = path.resolve("studio/data/seed-data.ndjson"); async function main() { console.log(`\n🌿 VWG Blog v2 — Sanity Seeding Tool`); console.log(`Project ID: ${projectId}`); console.log(`Dataset: ${dataset}`); if (!token || token === "sanity-auth-token" || token.length < 10) { console.log(`\nāš ļø No valid SANITY_AUTH_TOKEN found in studio/.env.local.`); console.log(`\nTo import these 12 initial documents into your Sanity Content Lake, you have 2 easy options:`); console.log(`\nšŸ‘‰ OPTION 1 (Automated with API Token - Recommended):`); console.log(` 1. Open: https://www.sanity.io/manage/project/${projectId}/api#tokens`); console.log(` 2. Click "+ Add API token", name it "Studio Seed", select "Editor" (or "Contributor"), and create.`); console.log(` 3. Add the token to studio/.env.local:`); console.log(` SANITY_AUTH_TOKEN=sk...`); console.log(` 4. Re-run: node studio/scripts/import-seed.mjs`); console.log(`\nšŸ‘‰ OPTION 2 (Sanity CLI Login):`); console.log(` 1. In terminal, run: npx sanity login`); console.log(` 2. Run: npx sanity dataset import studio/data/seed-data.ndjson production --replace`); console.log(`\nšŸ‘‰ OPTION 3 (Web Studio):`); console.log(` Open http://localhost:3333 in your browser, log in, and view or create content directly!\n`); process.exit(0); } const client = createClient({ projectId, dataset, token, apiVersion: "2024-10-31", useCdn: false, }); if (!fs.existsSync(SEED_FILE)) { console.error(`āŒ Seed file not found at ${SEED_FILE}. Run 'node studio/scripts/generate-seed.mjs' first.`); process.exit(1); } const lines = fs.readFileSync(SEED_FILE, "utf8").trim().split("\n"); console.log(`\nFound ${lines.length} documents in seed-data.ndjson. Importing into Sanity...`); for (let i = 0; i < lines.length; i++) { const doc = JSON.parse(lines[i]); try { await client.createOrReplace(doc); console.log(` āœ“ [${i + 1}/${lines.length}] ${doc._type}: ${doc._id} (${doc.title || doc.name || doc.siteName || ""})`); } catch (err) { console.error(` āœ— Failed to import ${doc._id}:`, err.message); } } console.log(`\nšŸŽ‰ All documents successfully seeded into Sanity project '${projectId}' (${dataset})!`); console.log(`You can now view them at http://localhost:3333\n`); } main().catch((err) => { console.error("Fatal error during seeding:", err); process.exit(1); });