Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions frameworks/react-cra/add-ons/prisma/assets/prisma.config.ts.ejs
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import { defineConfig, env } from 'prisma/config'

export default defineConfig({
schema: './prisma/schema.prisma',
migrations: {
path: './prisma/migrations',
seed: 'tsx prisma/seed.ts',
},
datasource: {
url: env('DATABASE_URL'),
},
});

Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
generator client {
provider = "prisma-client-js"
provider = "prisma-client"
output = "../src/generated/prisma"
}

datasource db {
provider = "<%= addOnOption.prisma.database === "postgres" ? "postgresql" : addOnOption.prisma.database %>"
url = env("DATABASE_URL")
}

model Todo {
Expand Down
51 changes: 51 additions & 0 deletions frameworks/react-cra/add-ons/prisma/assets/prisma/seed.ts.ejs
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
import { PrismaClient } from "../src/generated/prisma/client.js";

<% if (addOnOption.prisma.database === 'postgres') { %>
import { PrismaPg } from '@prisma/adapter-pg';

const adapter = new PrismaPg({
connectionString: process.env.DATABASE_URL!,
});<% } %>

<% if (addOnOption.prisma.database === 'mysql') { %>
import { PrismaMariaDb } from '@prisma/adapter-mariadb';
const adapter = new PrismaMariaDb({
host: "localhost",
port: 3306,
connectionLimit: 5
});<% } %>

<% if (addOnOption.prisma.database === 'sqlite') { %>
import { PrismaBetterSQLite3 } from '@prisma/adapter-better-sqlite3';
const adapter = new PrismaBetterSQLite3({
url: process.env.DATABASE_URL || 'file:./dev.db'
});<% } %>

const prisma = new PrismaClient({adapter})

async function main() {
console.log('🌱 Seeding database...')

// Clear existing todos
await prisma.todo.deleteMany()

// Create example todos
const todos = await prisma.todo.createMany({
data: [
{ title: 'Buy groceries' },
{ title: 'Read a book' },
{ title: 'Workout' },
],
})

console.log(`✅ Created ${todos.count} todos`)
}

main()
.catch((e) => {
console.error('❌ Error seeding database:', e)
process.exit(1)
})
.finally(async () => {
await prisma.$disconnect()
})
30 changes: 0 additions & 30 deletions frameworks/react-cra/add-ons/prisma/assets/seed.ts

This file was deleted.

11 changes: 0 additions & 11 deletions frameworks/react-cra/add-ons/prisma/assets/src/db.ts

This file was deleted.

32 changes: 32 additions & 0 deletions frameworks/react-cra/add-ons/prisma/assets/src/db.ts.ejs
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import { PrismaClient } from './generated/prisma/client.js'

<% if (addOnOption.prisma.database === 'postgres') { %>
import { PrismaPg } from '@prisma/adapter-pg';
const adapter = new PrismaPg({
connectionString: process.env.DATABASE_URL!,
});<% } %>

<% if (addOnOption.prisma.database === 'mysql') { %>
import { PrismaMariaDb } from '@prisma/adapter-mariadb';
const adapter = new PrismaMariaDb({
host: "localhost",
port: 3306,
connectionLimit: 5
});<% } %>

<% if (addOnOption.prisma.database === 'sqlite') { %>
import { PrismaBetterSQLite3 } from '@prisma/adapter-better-sqlite3';
const adapter = new PrismaBetterSQLite3({
url: process.env.DATABASE_URL || 'file:./dev.db'
});<% } %>

declare global {
var __prisma: PrismaClient | undefined
}

export const prisma = globalThis.__prisma || new PrismaClient({ adapter })

if (process.env.NODE_ENV !== 'production') {
globalThis.__prisma = prisma
}
18 changes: 6 additions & 12 deletions frameworks/react-cra/add-ons/prisma/package.json.ejs
Original file line number Diff line number Diff line change
@@ -1,17 +1,14 @@
{
"dependencies": {
"prisma": "^6.16.3",
"@prisma/client": "^6.16.3"<% if (addOnOption.prisma.database === 'postgres') { %>,
"pg": "^8.11.0"<% } %><% if (addOnOption.prisma.database === 'mysql') { %>,
"mysql2": "^3.6.0"<% } %>
"@prisma/client": "^7.0.0"<% if (addOnOption.prisma.database === 'postgres') { %>,
"@prisma/adapter-pg": "^7.0.0"<% } %><% if (addOnOption.prisma.database === 'mysql') { %>,
"@prisma/adapter-mariadb": "^7.0.0"<% } %><% if (addOnOption.prisma.database === 'sqlite') { %>,
"@prisma/adapter-better-sqlite3": "^7.0.0"<% } %>
},
"devDependencies": {
"dotenv-cli": "^10.0.0",
"ts-node": "^10.9.2",
<% if (addOnOption.prisma.database === 'postgres') { %>
"@types/pg": "^8.10.0"<% } %><% if (addOnOption.prisma.database === 'mysql') { %>
"@types/mysql2": "^3.6.0"<% } %><% if (addOnOption.prisma.database === 'sqlite') { %>
"@types/better-sqlite3": "^7.6.0"<% } %>
"tsx": "^4.20.6"
},
"scripts": {<% if (addOnOption.prisma.database === 'postgres') { %>
"post-cta-init": "npx create-db@latest",<% } %>
Expand All @@ -20,8 +17,5 @@
"db:migrate": "dotenv -e .env.local -- prisma migrate dev",
"db:studio": "dotenv -e .env.local -- prisma studio",
"db:seed": "dotenv -e .env.local -- prisma db seed"
},
"prisma": {
"seed": "ts-node seed.ts"
}
}
}
2 changes: 1 addition & 1 deletion frameworks/react-cra/src/checksum.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
// This file is auto-generated. Do not edit manually.
// Generated from add-ons, examples, hosts, project, and toolchains directories
export const contentChecksum = '22415a1abc64758541fdba06e79f1b24860e8100379e3a08c2cd0084f5ec26f9'
export const contentChecksum = '2124eaa547a2067f472354b25eb9ad5472526504fb8a80226ee6996a412e2b49'