From a52caef3f98b56036e54a19f5936c285f9093d1b Mon Sep 17 00:00:00 2001 From: w3cj Date: Tue, 9 Dec 2025 09:44:55 -0700 Subject: [PATCH 1/3] fix: upgrade drizzle dependencies / fix .env load / fix mysql option --- .../add-ons/drizzle/assets/drizzle.config.ts.ejs | 2 +- .../add-ons/drizzle/assets/src/db/schema.ts.ejs | 12 ++++++------ .../react-cra/add-ons/drizzle/package.json.ejs | 16 +++++++--------- 3 files changed, 14 insertions(+), 16 deletions(-) diff --git a/frameworks/react-cra/add-ons/drizzle/assets/drizzle.config.ts.ejs b/frameworks/react-cra/add-ons/drizzle/assets/drizzle.config.ts.ejs index d9b9a7eb..e211be95 100644 --- a/frameworks/react-cra/add-ons/drizzle/assets/drizzle.config.ts.ejs +++ b/frameworks/react-cra/add-ons/drizzle/assets/drizzle.config.ts.ejs @@ -1,7 +1,7 @@ import { config } from "dotenv"; import { defineConfig } from 'drizzle-kit'; -config(); +config({ path: ['.env.local', '.env'] }); export default defineConfig({ out: "./drizzle", diff --git a/frameworks/react-cra/add-ons/drizzle/assets/src/db/schema.ts.ejs b/frameworks/react-cra/add-ons/drizzle/assets/src/db/schema.ts.ejs index 3159477a..25b7da09 100644 --- a/frameworks/react-cra/add-ons/drizzle/assets/src/db/schema.ts.ejs +++ b/frameworks/react-cra/add-ons/drizzle/assets/src/db/schema.ts.ejs @@ -3,8 +3,8 @@ import { pgTable, serial, text, timestamp } from 'drizzle-orm/pg-core'; export const todos = pgTable('todos', { - id: serial('id').primaryKey(), - title: text('title').notNull(), + id: serial().primaryKey(), + title: text().notNull(), createdAt: timestamp('created_at').defaultNow(), }); <% } else if (addOnOption.drizzle.database === 'mysql') { @@ -13,8 +13,8 @@ import { mysqlTable, int, text, timestamp } from 'drizzle-orm/mysql-core'; export const todos = mysqlTable('todos', { - id: int('id').primaryKey().autoincrement(), - title: text('title').notNull(), + id: int().primaryKey().autoincrement(), + title: text().notNull(), createdAt: timestamp('created_at', { mode: 'date' }).defaultNow(), }); <% } else if (addOnOption.drizzle.database === 'sqlite') { @@ -24,9 +24,9 @@ import { sqliteTable, integer, text } from import { sql } from 'drizzle-orm'; export const todos = sqliteTable('todos', { - id: integer('id', { mode: 'number' }).primaryKey({ + id: integer({ mode: 'number' }).primaryKey({ autoIncrement: true }), - title: text('title').notNull(), + title: text().notNull(), createdAt: integer('created_at', { mode: 'timestamp' }).default(sql`(unixepoch())`), }); <% } %> \ No newline at end of file diff --git a/frameworks/react-cra/add-ons/drizzle/package.json.ejs b/frameworks/react-cra/add-ons/drizzle/package.json.ejs index 1caeeabd..abc9ea1e 100644 --- a/frameworks/react-cra/add-ons/drizzle/package.json.ejs +++ b/frameworks/react-cra/add-ons/drizzle/package.json.ejs @@ -1,17 +1,15 @@ { "dependencies": { - "drizzle-orm": "^0.39.0", - "drizzle-kit": "^0.30.0"<% if (addOnOption.drizzle.database === 'postgresql') { %>, - "pg": "^8.11.0"<% } %><% if (addOnOption.drizzle.database === 'mysql') { %>, - "mysql2": "^3.6.0"<% } %><% if (addOnOption.drizzle.database === 'sqlite') { %>, - "better-sqlite3": "^9.4.0"<% } %> + "drizzle-orm": "^0.45.0", + "drizzle-kit": "^0.31.8"<% if (addOnOption.drizzle.database === 'postgresql') { %>, + "pg": "^8.16.3"<% } %><% if (addOnOption.drizzle.database === 'mysql') { %>, + "mysql2": "^3.15.3"<% } %><% if (addOnOption.drizzle.database === 'sqlite') { %>, + "better-sqlite3": "^12.5.0"<% } %> }, "devDependencies": { "dotenv": "^16.0.0", - "tsx": "^4.0.0", - <% if (addOnOption.drizzle.database === 'postgresql') { %> - "@types/pg": "^8.10.0"<% } %><% if (addOnOption.drizzle.database === 'mysql') { %> - "@types/mysql2": "^3.6.0"<% } %><% if (addOnOption.drizzle.database === 'sqlite') { %> + "tsx": "^4.0.0"<% if (addOnOption.drizzle.database === 'postgresql') { %>, + "@types/pg": "^8.15.6"<% } %><% if (addOnOption.drizzle.database === 'sqlite') { %>, "@types/better-sqlite3": "^7.6.0"<% } %> }, "scripts": { From b7c789c03528e04790156c647e2f57ae25ad70a8 Mon Sep 17 00:00:00 2001 From: w3cj Date: Tue, 9 Dec 2025 10:12:47 -0700 Subject: [PATCH 2/3] fix: remove unnecessary dotenv config in db connection --- .../react-cra/add-ons/drizzle/assets/src/db/index.ts.ejs | 3 --- 1 file changed, 3 deletions(-) diff --git a/frameworks/react-cra/add-ons/drizzle/assets/src/db/index.ts.ejs b/frameworks/react-cra/add-ons/drizzle/assets/src/db/index.ts.ejs index d9d52de7..bb018ca3 100644 --- a/frameworks/react-cra/add-ons/drizzle/assets/src/db/index.ts.ejs +++ b/frameworks/react-cra/add-ons/drizzle/assets/src/db/index.ts.ejs @@ -1,4 +1,3 @@ -import { config } from 'dotenv' <% if (addOnOption.drizzle.database === 'postgresql') { %> import { drizzle } from 'drizzle-orm/node-postgres'; import { Pool } from 'pg'; @@ -11,8 +10,6 @@ import Database from 'better-sqlite3'; <% } %> import * as schema from './schema.ts' -config() - <% if (addOnOption.drizzle.database === 'sqlite') { %> const sqlite = new Database(process.env.DATABASE_URL!); export const db = drizzle(sqlite, { schema }); From a7d88b19bebd709d452c141917292aae32af5d2b Mon Sep 17 00:00:00 2001 From: w3cj Date: Tue, 9 Dec 2025 10:41:55 -0700 Subject: [PATCH 3/3] fix: simplify drizzle connection file --- .../drizzle/assets/src/db/index.ts.ejs | 24 ++++--------------- 1 file changed, 5 insertions(+), 19 deletions(-) diff --git a/frameworks/react-cra/add-ons/drizzle/assets/src/db/index.ts.ejs b/frameworks/react-cra/add-ons/drizzle/assets/src/db/index.ts.ejs index bb018ca3..afacf9cd 100644 --- a/frameworks/react-cra/add-ons/drizzle/assets/src/db/index.ts.ejs +++ b/frameworks/react-cra/add-ons/drizzle/assets/src/db/index.ts.ejs @@ -1,24 +1,10 @@ -<% if (addOnOption.drizzle.database === 'postgresql') { %> -import { drizzle } from 'drizzle-orm/node-postgres'; -import { Pool } from 'pg'; +import { drizzle } from <% if (addOnOption.drizzle.database === 'postgresql') { %> +'drizzle-orm/node-postgres'; <% } else if (addOnOption.drizzle.database === 'mysql') {%> -import { drizzle } from 'drizzle-orm/mysql2'; -import mysql from 'mysql2/promise'; +'drizzle-orm/mysql2'; <% } else if (addOnOption.drizzle.database === 'sqlite') {%> -import { drizzle } from 'drizzle-orm/better-sqlite3'; -import Database from 'better-sqlite3'; +'drizzle-orm/better-sqlite3'; <% } %> import * as schema from './schema.ts' -<% if (addOnOption.drizzle.database === 'sqlite') { %> -const sqlite = new Database(process.env.DATABASE_URL!); -export const db = drizzle(sqlite, { schema }); -<% } else if (addOnOption.drizzle.database === 'postgresql') { %> -const pool = new Pool({ - connectionString: process.env.DATABASE_URL!, -}); -export const db = drizzle(pool, { schema }); -<% } else if (addOnOption.drizzle.database === 'mysql') { %> -const connection = await mysql.createConnection(process.env.DATABASE_URL!); -export const db = drizzle(connection, { schema }); -<% } %> +export const db = drizzle(process.env.DATABASE_URL!, { schema<% if (addOnOption.drizzle.database === 'mysql') {%>, mode: 'default'<% } %>});