From 1387af92a7842f318d6ec81411e5e51294adcf5d Mon Sep 17 00:00:00 2001 From: incognitotgt Date: Sat, 18 May 2024 20:29:04 -0400 Subject: [PATCH] better seeding --- src/lib/drizzle/seed.ts | 61 ++++++++++++++++++++++++++--------------- 1 file changed, 39 insertions(+), 22 deletions(-) diff --git a/src/lib/drizzle/seed.ts b/src/lib/drizzle/seed.ts index 12a7b40..d939a98 100644 --- a/src/lib/drizzle/seed.ts +++ b/src/lib/drizzle/seed.ts @@ -1,26 +1,43 @@ import "dotenv/config"; -import { db, image } from "@/lib/drizzle/db"; +import { execSync } from "child_process"; +import { db, image as imageSchema } from "@/lib/drizzle/db"; + (async () => { - const insertion = await db - .insert(image) - .values([ - { - dockerImage: "ghcr.io/spaceness/debian", - friendlyName: "Debian", - category: ["Desktop"], - icon: "/images/workspaces/debian.svg", - }, - { - dockerImage: "ghcr.io/spaceness/chromium", - friendlyName: "Chromium", - category: ["Browser"], - icon: "/images/workspaces/chromium.svg", - }, - ]) - .onConflictDoNothing() - .returning(); - console.log(insertion); - console.log("✨ Stardust: Seeded image"); - process.exit(); + const images = [ + { + dockerImage: "ghcr.io/spaceness/debian", + friendlyName: "Debian", + category: ["Desktop"], + icon: "/images/workspaces/debian.svg", + }, + { + dockerImage: "ghcr.io/spaceness/chromium", + friendlyName: "Chromium", + category: ["Browser"], + icon: "/images/workspaces/chromium.svg", + }, + { + dockerImage: "ghcr.io/spaceness/firefox", + friendlyName: "Firefox", + category: ["Browser"], + icon: "/images/workspaces/firefox.svg", + }, + { + dockerImage: "ghcr.io/spaceness/gimp", + friendlyName: "GIMP", + category: ["Photo Editing"], + icon: "https://www.gimp.org/images/frontpage/wilber-big.png", + }, + ] + const insertion = await db.insert(imageSchema).values(images).onConflictDoNothing().returning() + console.log(`✨Stardust: Seeded ${insertion.length} images.`) + console.log(`✨Stardust: Seeded ${insertion.map((i) => i.dockerImage).join(", ")}`) + if (process.argv.includes("--pull") { + console.log("Pulling images...") + for (const image of images) { + execSync(`docker pull ${image.dockerImage}`) + } + } + process.exit(); })();