@@ -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" ) {
0 commit comments