Skip to content

Commit 68b44e5

Browse files
add d1 in builder
1 parent 4b36d5f commit 68b44e5

File tree

2 files changed

+72
-0
lines changed

2 files changed

+72
-0
lines changed

apps/web/src/app/(home)/_components/stack-builder.tsx

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -533,6 +533,71 @@ const analyzeStackCompatibility = (stack: StackState): CompatibilityResult => {
533533
"Database set to 'PostgreSQL' (required by Supabase setup)",
534534
});
535535
}
536+
} else if (nextStack.dbSetup === "d1") {
537+
if (nextStack.database !== "sqlite") {
538+
notes.dbSetup.notes.push(
539+
"Cloudflare D1 requires SQLite. It will be selected.",
540+
);
541+
notes.database.notes.push(
542+
"Cloudflare D1 DB setup requires SQLite. It will be selected.",
543+
);
544+
notes.dbSetup.hasIssue = true;
545+
notes.database.hasIssue = true;
546+
nextStack.database = "sqlite";
547+
changed = true;
548+
changes.push({
549+
category: "dbSetup",
550+
message: "Database set to 'SQLite' (required by Cloudflare D1)",
551+
});
552+
}
553+
if (nextStack.runtime !== "workers") {
554+
notes.dbSetup.notes.push(
555+
"Cloudflare D1 requires Cloudflare Workers runtime. It will be selected.",
556+
);
557+
notes.runtime.notes.push(
558+
"Cloudflare D1 DB setup requires Cloudflare Workers runtime. It will be selected.",
559+
);
560+
notes.dbSetup.hasIssue = true;
561+
notes.runtime.hasIssue = true;
562+
nextStack.runtime = "workers";
563+
changed = true;
564+
changes.push({
565+
category: "dbSetup",
566+
message: "Runtime set to 'Cloudflare Workers' (required by D1)",
567+
});
568+
}
569+
if (nextStack.orm !== "drizzle") {
570+
notes.dbSetup.notes.push(
571+
"Cloudflare D1 requires Drizzle ORM. It will be selected.",
572+
);
573+
notes.orm.notes.push(
574+
"Cloudflare D1 DB setup requires Drizzle ORM. It will be selected.",
575+
);
576+
notes.dbSetup.hasIssue = true;
577+
notes.orm.hasIssue = true;
578+
nextStack.orm = "drizzle";
579+
changed = true;
580+
changes.push({
581+
category: "dbSetup",
582+
message: "ORM set to 'Drizzle' (required by Cloudflare D1)",
583+
});
584+
}
585+
if (nextStack.backend !== "hono") {
586+
notes.dbSetup.notes.push(
587+
"Cloudflare D1 requires Hono backend. It will be selected.",
588+
);
589+
notes.backend.notes.push(
590+
"Cloudflare D1 DB setup requires Hono backend. It will be selected.",
591+
);
592+
notes.dbSetup.hasIssue = true;
593+
notes.backend.hasIssue = true;
594+
nextStack.backend = "hono";
595+
changed = true;
596+
changes.push({
597+
category: "dbSetup",
598+
message: "Backend set to 'Hono' (required by Cloudflare D1)",
599+
});
600+
}
536601
}
537602

538603
if (nextStack.runtime === "workers") {

apps/web/src/lib/constant.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,13 @@ export const TECH_OPTIONS = {
276276
icon: "/icon/turso.svg",
277277
color: "from-pink-400 to-pink-600",
278278
},
279+
{
280+
id: "d1",
281+
name: "Cloudflare D1",
282+
description: "Serverless SQLite database on Cloudflare Workers",
283+
icon: "/icon/workers.svg",
284+
color: "from-orange-400 to-orange-600",
285+
},
279286
{
280287
id: "neon",
281288
name: "Neon Postgres",

0 commit comments

Comments
 (0)