@@ -533,6 +533,71 @@ const analyzeStackCompatibility = (stack: StackState): CompatibilityResult => {
533
533
"Database set to 'PostgreSQL' (required by Supabase setup)" ,
534
534
} ) ;
535
535
}
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
+ }
536
601
}
537
602
538
603
if ( nextStack . runtime === "workers" ) {
0 commit comments