nestjs-prisma-cli 1.0.6 → 1.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +45 -23
  2. package/bin/index.js +65 -60
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -21,49 +21,71 @@ Compatible with **Node.js >=18** and **NestJS v10+**.
21
21
 
22
22
  ## 📥 Installation
23
23
 
24
- ## ⚡ Quick Start Guide
24
+ ### ⚡ Quick Start Guide
25
25
 
26
26
  Once the CLI is installed, you can use the following commands:
27
27
 
28
28
  ### 1️⃣ Install CLI globally
29
29
 
30
30
  ```bash
31
-
32
31
  npm install -g nestjs-prisma-cli
33
-
34
32
  ```
35
33
 
34
+
36
35
  ### 2️⃣ Check CLI version
37
36
 
38
37
  ```bash
39
-
40
38
  nestgen -v
39
+ ```
41
40
  # or
41
+ ```bash
42
42
  nestgen --version
43
-
44
43
  ```
45
44
 
46
- ### 3️⃣ Generate a new project
47
45
 
46
+ ### 3️⃣ Generate a new project
48
47
  ```bash
49
-
50
48
  nestgen
49
+ ```
51
50
 
52
- Step 1 : ? Enter your project name: my-app
53
-
54
- Step 2 : ? Select your database: (Use arrow keys)
55
- MySQL
56
- PostgreSQL
57
- SQLite
58
- MongoDB
59
- CockroachDB
60
- SQLServer
61
- Step 3 : 🎉 Project ready! Next steps:
62
- cd my-app
63
- Check .env
64
- npx prisma generate
65
- npx prisma migrate dev --name init
66
- npx ts-node prisma/seed.ts
67
- npm run start:dev
51
+ ```text
52
+ ? Enter your project name: my-app
53
+ Step 2: ? Select your database: (Use arrow keys)
54
+ MySQL
55
+ PostgreSQL
56
+ SQLite
57
+ MongoDB
58
+ CockroachDB
59
+ SQLServer
60
+ Step 3: 🎉 Project ready! Next steps:
61
+ ```
68
62
 
63
+ ### Navigate into your project
64
+ ```bash
65
+ cd my-app
69
66
  ```
67
+ ### Update .env
68
+ ```bash
69
+ DATABASE_URL="your_database_connection_string"
70
+ ```
71
+ ```bash
72
+ npx prisma generate
73
+ ```
74
+ ### SQL Databases
75
+ ### (PostgreSQL, MySQL, SQLite, CockroachDB, SQLServer)
76
+ ```bash
77
+ npx prisma migrate dev --name init
78
+ ```
79
+ ### NoSQL Database
80
+ ### (MongoDB)
81
+ ```bash
82
+ npx prisma db push
83
+ ```
84
+ ### Then, follow this
85
+ ```bash
86
+ npx ts-node prisma/seed.ts
87
+ ```
88
+ ```bash
89
+ npm run start:dev
90
+ ```
91
+
package/bin/index.js CHANGED
@@ -39,6 +39,62 @@ const detectPackageManager = () => {
39
39
  }
40
40
  };
41
41
 
42
+ export async function generatePrismaSchema(selectedProvider, templatePrismaPath) {
43
+ if (selectedProvider === "mongodb") {
44
+ return `generator client {
45
+ provider = "prisma-client-js"
46
+ }
47
+
48
+ datasource db {
49
+ provider = "mongodb"
50
+ url = env("DATABASE_URL")
51
+ }
52
+
53
+ model User {
54
+ id String @id @default(auto()) @map("_id") @db.ObjectId
55
+ userId String @unique
56
+ name String?
57
+ email String
58
+ password String
59
+ isActive Boolean @default(true)
60
+ createdAt DateTime @default(now())
61
+ updatedAt DateTime @updatedAt
62
+ @@map("tbl_user")
63
+ }
64
+ `;
65
+ }
66
+
67
+ try {
68
+ let prismaContent = await fs.readFile(templatePrismaPath, "utf-8");
69
+ return prismaContent.replace(
70
+ /datasource\s+db\s*{[^}]*provider\s*=\s*".*"/,
71
+ `datasource db {\n provider = "${selectedProvider}"`
72
+ );
73
+ } catch {
74
+ return `generator client {
75
+ provider = "prisma-client-js"
76
+ }
77
+
78
+ datasource db {
79
+ provider = "${selectedProvider}"
80
+ url = env("DATABASE_URL")
81
+ }
82
+
83
+ model User {
84
+ id Int @id @default(autoincrement())
85
+ userId String @unique
86
+ name String?
87
+ email String
88
+ password String
89
+ isActive Boolean @default(true)
90
+ createdAt DateTime @default(now())
91
+ updatedAt DateTime @updatedAt
92
+ @@map("tbl_user")
93
+ }
94
+ `;
95
+ }
96
+ }
97
+
42
98
  async function main() {
43
99
  console.log(chalk.blue("🚀 Welcome to NestJS + Prisma Project Generator!"));
44
100
 
@@ -94,36 +150,11 @@ async function main() {
94
150
 
95
151
  const templatePath = path.resolve(__dirname, "../template");
96
152
  const projectPrismaPath = path.join(projectPath, "prisma/schema.prisma");
97
-
98
- const extraItems = [
99
- { src: path.resolve(__dirname, "../.github"), dest: path.join(projectPath, ".github") },
100
- { src: path.resolve(__dirname, "../Dockerfile"), dest: path.join(projectPath, "Dockerfile") },
101
- ];
102
-
103
- async function safeCopy(src, dest, label) {
104
- try {
105
- if (await fs.pathExists(src)) {
106
- await fs.copy(src, dest, { overwrite: true });
107
- console.log(chalk.green(`✅ ${label} copied!`));
108
- } else {
109
- console.log(chalk.yellow(`⚠️ ${label} not found, skipped.`));
110
- }
111
- } catch (err) {
112
- console.log(chalk.red(`❌ Failed to copy ${label}:`), err.message);
113
- }
114
- }
115
-
116
- for (const item of extraItems) {
117
- const label = path.basename(item.dest);
118
- await safeCopy(item.src, item.dest, label);
119
- }
153
+ const templatePrismaPath = path.join(templatePath, "prisma/schema.prisma");
120
154
 
121
155
  if (await fs.pathExists(templatePath)) {
122
- console.log(chalk.blue("📄 Copying template files..."));
123
156
  await fs.copy(templatePath, projectPath, { overwrite: true });
124
157
  console.log(chalk.green("✅ Template files copied!"));
125
- } else {
126
- console.log(chalk.yellow("⚠️ Template folder not found. Skipping copy."));
127
158
  }
128
159
 
129
160
  const providerMap = {
@@ -136,38 +167,7 @@ async function main() {
136
167
  };
137
168
  const selectedProvider = providerMap[database.toLowerCase()] || "mysql";
138
169
 
139
- let prismaContent = "";
140
- const templatePrismaPath = path.join(templatePath, "prisma/schema.prisma");
141
- if (fs.existsSync(templatePrismaPath)) {
142
- prismaContent = await fs.readFile(templatePrismaPath, "utf-8");
143
- prismaContent = prismaContent.replace(
144
- /datasource\s+db\s*{[^}]*provider\s*=\s*".*"/,
145
- `datasource db {\n provider = "${selectedProvider}"`
146
- );
147
- } else {
148
- prismaContent = `generator client {
149
- provider = "prisma-client-js"
150
- }
151
-
152
- datasource db {
153
- provider = "${selectedProvider}"
154
- url = env("DATABASE_URL")
155
- }
156
-
157
- model User {
158
- id Int @id @default(autoincrement())
159
- userId String @unique
160
- name String?
161
- email String
162
- password String
163
- isActive Boolean @default(true)
164
- createdAt DateTime @default(now())
165
- updatedAt DateTime @updatedAt
166
- @@map("tbl_user")
167
- }
168
- `;
169
- }
170
-
170
+ const prismaContent = await generatePrismaSchema(selectedProvider, templatePrismaPath);
171
171
  await fs.outputFile(projectPrismaPath, prismaContent);
172
172
 
173
173
  const defaultUrlMap = {
@@ -205,8 +205,13 @@ PORT=3000
205
205
  console.log(chalk.yellow("🔧 Next steps (run manually):"));
206
206
  console.log(chalk.cyan(`1. Generate Prisma Client:`));
207
207
  console.log(chalk.cyan(` npx prisma generate`));
208
- console.log(chalk.cyan(`2. Apply Prisma Migrations:`));
209
- console.log(chalk.cyan(` npx prisma migrate dev --name init`));
208
+ if (selectedProvider === "mongodb") {
209
+ console.log(chalk.cyan(`2. Push schema to MongoDB:`));
210
+ console.log(chalk.cyan(` npx prisma db push`));
211
+ } else {
212
+ console.log(chalk.cyan(`2. Apply Prisma Migrations:`));
213
+ console.log(chalk.cyan(` npx prisma migrate dev --name init`));
214
+ }
210
215
  console.log(chalk.cyan(`3. Run Seed Script:`));
211
216
  console.log(chalk.cyan(` npx ts-node prisma/seed.ts`));
212
217
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nestjs-prisma-cli",
3
- "version": "1.0.6",
3
+ "version": "1.0.7",
4
4
  "description": "A CLI to generate NestJS + Prisma project boilerplate with Swagger, Auth, and AWS S3 setup",
5
5
  "type": "module",
6
6
  "main": "bin/index.js",