@diagramers/cli 1.0.64 → 1.0.66
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.
- package/README.md +216 -227
- package/dist/commands/api.d.ts.map +1 -1
- package/dist/commands/api.js +16 -4
- package/dist/commands/api.js.map +1 -1
- package/dist/commands/extend.d.ts.map +1 -1
- package/dist/commands/extend.js +46 -11
- package/dist/commands/extend.js.map +1 -1
- package/dist/index.js +41 -10
- package/dist/index.js.map +1 -1
- package/dist/services/relation-generator.d.ts +1 -1
- package/dist/services/relation-generator.d.ts.map +1 -1
- package/dist/services/relation-generator.js +26 -13
- package/dist/services/relation-generator.js.map +1 -1
- package/dist/services/table-generator.d.ts +1 -1
- package/dist/services/table-generator.d.ts.map +1 -1
- package/dist/services/table-generator.js +64 -41
- package/dist/services/table-generator.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
@@ -7,8 +7,9 @@ A powerful command-line interface for managing Diagramers projects, generating m
|
|
7
7
|
### Core Capabilities
|
8
8
|
- **Project Initialization** - Create new projects from templates
|
9
9
|
- **Module Generation** - Generate complete modules with CRUD operations
|
10
|
-
- **
|
11
|
-
- **
|
10
|
+
- **Table Generation** - Add database tables to existing modules
|
11
|
+
- **Endpoint Generation** - Add custom endpoints to existing modules
|
12
|
+
- **Relation Management** - Generate database relations within modules
|
12
13
|
- **Feature Extension** - Add features to existing projects
|
13
14
|
- **Template Management** - Download and update project templates
|
14
15
|
|
@@ -48,333 +49,321 @@ diagramers init api my-new-api
|
|
48
49
|
cd my-new-api
|
49
50
|
|
50
51
|
# Set up environment variables
|
51
|
-
cp .env.example .env
|
52
|
-
echo "NODE_ENV=development" >> .env.development
|
52
|
+
cp .env.example .env
|
53
53
|
|
54
|
-
#
|
54
|
+
# Install dependencies
|
55
|
+
npm install
|
56
|
+
|
57
|
+
# Start development
|
55
58
|
npm start
|
56
59
|
```
|
57
60
|
|
58
|
-
##
|
61
|
+
## 📋 Commands
|
59
62
|
|
60
|
-
###
|
63
|
+
### Project Management
|
64
|
+
|
65
|
+
#### Initialize New Project
|
61
66
|
```bash
|
62
|
-
|
63
|
-
|
67
|
+
diagramers init <template-type> <project-name>
|
68
|
+
```
|
64
69
|
|
65
|
-
|
66
|
-
|
70
|
+
**Examples:**
|
71
|
+
```bash
|
72
|
+
# Create API project
|
73
|
+
diagramers init api my-api-project
|
67
74
|
|
68
|
-
#
|
69
|
-
diagramers init
|
75
|
+
# Create admin project
|
76
|
+
diagramers init admin my-admin-dashboard
|
77
|
+
```
|
70
78
|
|
71
|
-
|
72
|
-
|
79
|
+
#### Update Project
|
80
|
+
```bash
|
81
|
+
diagramers update [options]
|
73
82
|
```
|
74
83
|
|
75
|
-
**
|
76
|
-
|
77
|
-
|
78
|
-
|
84
|
+
**Options:**
|
85
|
+
- `--force` - Force update even if conflicts detected
|
86
|
+
- `--backup` - Create backup before updating
|
87
|
+
|
88
|
+
### Module Management
|
89
|
+
|
90
|
+
#### Generate Module
|
91
|
+
```bash
|
92
|
+
diagramers extend --module <module-name> [options]
|
93
|
+
```
|
79
94
|
|
80
|
-
|
95
|
+
**Examples:**
|
81
96
|
```bash
|
82
97
|
# Generate basic module
|
83
98
|
diagramers extend --module products
|
84
99
|
|
85
100
|
# Generate module with CRUD operations
|
86
|
-
diagramers extend --module
|
101
|
+
diagramers extend --module products --crud
|
87
102
|
|
88
103
|
# Generate module with custom fields
|
89
|
-
diagramers extend --module
|
90
|
-
|
91
|
-
# Generate module with specific database type
|
92
|
-
diagramers extend --module users --type mongodb --fields email,username,role
|
104
|
+
diagramers extend --module products --fields name,price,description --crud
|
93
105
|
```
|
94
106
|
|
95
|
-
###
|
96
|
-
```bash
|
97
|
-
# Generate endpoint for existing module
|
98
|
-
diagramers extend --endpoint users:search-user --method POST
|
99
|
-
|
100
|
-
# Generate endpoint with custom path
|
101
|
-
diagramers extend --endpoint products:find-by-category --method GET --path find-category
|
107
|
+
### Table Management
|
102
108
|
|
103
|
-
|
104
|
-
|
109
|
+
#### Add Table to Module
|
110
|
+
```bash
|
111
|
+
diagramers extend --table <module:table> --fields <field1,field2,...>
|
105
112
|
```
|
106
113
|
|
107
|
-
|
114
|
+
**Examples:**
|
108
115
|
```bash
|
109
|
-
#
|
110
|
-
diagramers extend --table categories
|
111
|
-
|
112
|
-
# Generate table with custom fields
|
113
|
-
diagramers extend --table products --fields name,price,description,category_id
|
116
|
+
# Add categories table to products module
|
117
|
+
diagramers extend --table products:categories --fields name,description,slug
|
114
118
|
|
115
|
-
#
|
116
|
-
diagramers extend --table
|
119
|
+
# Add products table to products module
|
120
|
+
diagramers extend --table products:products --fields name,price,category_id
|
117
121
|
|
118
|
-
#
|
119
|
-
|
120
|
-
# - Adds to database seeder with sample data
|
121
|
-
# - Uses proper naming conventions (plural table, singular files)
|
122
|
+
# Add user profiles table to users module
|
123
|
+
diagramers extend --table users:profiles --fields bio,avatar,social_links
|
122
124
|
```
|
123
125
|
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
126
|
+
**Field Types (Auto-detected):**
|
127
|
+
- `name`, `title`, `description` → String
|
128
|
+
- `email`, `phone` → String
|
129
|
+
- `price`, `count`, `age` → Number
|
130
|
+
- `created_at`, `updated_at` → Date
|
131
|
+
- `is_active`, `verified` → Boolean
|
132
|
+
- `*_id` → ObjectId
|
133
|
+
- `status` → Number
|
134
|
+
|
135
|
+
### Endpoint Management
|
128
136
|
|
129
|
-
|
130
|
-
|
137
|
+
#### Add Endpoint to Module
|
138
|
+
```bash
|
139
|
+
diagramers extend --endpoint <module:endpoint> [options]
|
131
140
|
```
|
132
141
|
|
133
|
-
|
142
|
+
**Examples:**
|
134
143
|
```bash
|
135
|
-
# Add
|
136
|
-
diagramers extend --
|
144
|
+
# Add GET endpoint
|
145
|
+
diagramers extend --endpoint products:search --method GET
|
137
146
|
|
138
|
-
# Add
|
139
|
-
diagramers extend --
|
147
|
+
# Add POST endpoint
|
148
|
+
diagramers extend --endpoint users:reset-password --method POST
|
140
149
|
|
141
|
-
# Add
|
142
|
-
diagramers extend --
|
150
|
+
# Add endpoint with custom path
|
151
|
+
diagramers extend --endpoint products:featured --method GET --path /featured --description "Get featured products"
|
152
|
+
```
|
143
153
|
|
144
|
-
|
145
|
-
|
154
|
+
**Supported Methods:**
|
155
|
+
- `GET` - Retrieve data
|
156
|
+
- `POST` - Create data
|
157
|
+
- `PUT` - Update data
|
158
|
+
- `DELETE` - Delete data
|
146
159
|
|
147
|
-
|
148
|
-
diagramers extend --feature audit
|
149
|
-
```
|
160
|
+
### Relation Management
|
150
161
|
|
151
|
-
|
162
|
+
#### Create Relations Within Module
|
152
163
|
```bash
|
153
|
-
|
154
|
-
diagramers extend --list
|
164
|
+
diagramers extend --relation <module:table1-table2[:type]>
|
155
165
|
```
|
156
166
|
|
157
|
-
|
167
|
+
**Examples:**
|
158
168
|
```bash
|
159
|
-
#
|
160
|
-
diagramers
|
169
|
+
# One-to-many relation (default)
|
170
|
+
diagramers extend --relation products:category-product
|
171
|
+
|
172
|
+
# One-to-one relation
|
173
|
+
diagramers extend --relation users:user-profile:one-to-one
|
161
174
|
|
162
|
-
#
|
163
|
-
diagramers
|
175
|
+
# Many-to-many relation
|
176
|
+
diagramers extend --relation products:product-tag:many-to-many
|
164
177
|
```
|
165
178
|
|
166
|
-
|
179
|
+
**Relation Types:**
|
180
|
+
- `one-to-one` - Single record relations
|
181
|
+
- `one-to-many` - Parent-child relations (default)
|
182
|
+
- `many-to-many` - Junction table relations
|
167
183
|
|
168
|
-
|
184
|
+
### Feature Management
|
169
185
|
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
│ └── your-module.entity.ts # TypeScript interfaces
|
174
|
-
├── schemas/
|
175
|
-
│ └── your-module.schema.ts # Database schemas
|
176
|
-
├── services/
|
177
|
-
│ └── your-module.service.ts # Business logic
|
178
|
-
├── controllers/
|
179
|
-
│ └── your-module.controller.ts # HTTP handlers
|
180
|
-
└── routes/
|
181
|
-
└── your-module.routes.ts # API routes
|
186
|
+
#### List Available Features
|
187
|
+
```bash
|
188
|
+
diagramers extend --list
|
182
189
|
```
|
183
190
|
|
184
|
-
|
185
|
-
- **Entities** - TypeScript interfaces with CRUD operations
|
186
|
-
- **Schemas** - Database schemas with validation and indexes
|
187
|
-
- **Services** - Business logic with Result model integration
|
188
|
-
- **Controllers** - HTTP handlers with Swagger documentation
|
189
|
-
- **Routes** - Express routes with proper binding
|
190
|
-
|
191
|
-
## 🔧 Configuration
|
192
|
-
|
193
|
-
### Template Configuration
|
194
|
-
The CLI uses npm packages for templates:
|
195
|
-
- `@diagramers/api` - API project template
|
196
|
-
- `@diagramers/admin` - Admin project template
|
197
|
-
|
198
|
-
### Custom Templates
|
199
|
-
You can create custom templates by:
|
200
|
-
1. Creating a package with the template structure
|
201
|
-
2. Publishing to npm with `@diagramers/` prefix
|
202
|
-
3. Using the template with `--template` flag
|
203
|
-
|
204
|
-
## 📋 Available Features
|
205
|
-
|
206
|
-
### Authentication Features
|
207
|
-
- **Internal Auth** - Username/password with JWT
|
208
|
-
- **Firebase Auth** - Google Firebase integration
|
209
|
-
- **OAuth Providers** - Google, GitHub, Facebook
|
210
|
-
- **SMS OTP** - Twilio, AWS SNS integration
|
211
|
-
- **Email OTP** - Email-based verification
|
212
|
-
|
213
|
-
### Communication Features
|
214
|
-
- **Email System** - Nodemailer with templates
|
215
|
-
- **SMS System** - Twilio integration
|
216
|
-
- **WebSocket** - Real-time communication
|
217
|
-
- **Push Notifications** - Firebase messaging
|
218
|
-
|
219
|
-
### System Features
|
220
|
-
- **Cron Jobs** - Scheduled task system
|
221
|
-
- **Audit Logging** - Activity tracking
|
222
|
-
- **File Upload** - File management system
|
223
|
-
- **Caching** - Redis integration
|
224
|
-
|
225
|
-
## 🗄️ Database Support
|
226
|
-
|
227
|
-
### MongoDB (Default)
|
191
|
+
#### Add Feature
|
228
192
|
```bash
|
229
|
-
|
230
|
-
diagramers extend --table products --type mongodb --fields name,price,category
|
193
|
+
diagramers extend --feature <feature-name>
|
231
194
|
```
|
232
195
|
|
233
|
-
|
196
|
+
## 🔧 Workflow Examples
|
197
|
+
|
198
|
+
### Complete Product Management System
|
199
|
+
|
234
200
|
```bash
|
235
|
-
#
|
236
|
-
diagramers
|
201
|
+
# 1. Create new API project
|
202
|
+
diagramers init api ecommerce-api
|
203
|
+
cd ecommerce-api
|
204
|
+
|
205
|
+
# 2. Generate products module
|
206
|
+
diagramers extend --module products --crud
|
237
207
|
|
238
|
-
#
|
239
|
-
diagramers extend --table
|
208
|
+
# 3. Add categories table
|
209
|
+
diagramers extend --table products:categories --fields name,description,slug
|
240
210
|
|
241
|
-
#
|
242
|
-
diagramers extend --table
|
211
|
+
# 4. Add products table
|
212
|
+
diagramers extend --table products:products --fields name,price,description,category_id
|
213
|
+
|
214
|
+
# 5. Create category-product relation
|
215
|
+
diagramers extend --relation products:category-product:one-to-many
|
216
|
+
|
217
|
+
# 6. Add custom search endpoint
|
218
|
+
diagramers extend --endpoint products:search --method GET --description "Search products"
|
219
|
+
|
220
|
+
# 7. Install dependencies and start
|
221
|
+
npm install
|
222
|
+
npm start
|
243
223
|
```
|
244
224
|
|
245
|
-
###
|
225
|
+
### User Management with Profiles
|
226
|
+
|
246
227
|
```bash
|
247
|
-
# Generate
|
248
|
-
diagramers extend --
|
228
|
+
# 1. Generate users module (if not exists)
|
229
|
+
diagramers extend --module users --crud
|
249
230
|
|
250
|
-
#
|
251
|
-
diagramers extend --
|
231
|
+
# 2. Add user profiles table
|
232
|
+
diagramers extend --table users:profiles --fields bio,avatar,social_links,birth_date
|
252
233
|
|
253
|
-
#
|
254
|
-
diagramers extend --relation user-profile:one-to-one
|
234
|
+
# 3. Create user-profile relation
|
235
|
+
diagramers extend --relation users:user-profile:one-to-one
|
255
236
|
|
256
|
-
#
|
257
|
-
|
258
|
-
|
259
|
-
# - one-to-one
|
237
|
+
# 4. Add profile endpoints
|
238
|
+
diagramers extend --endpoint users:update-profile --method PUT
|
239
|
+
diagramers extend --endpoint users:get-profile --method GET
|
260
240
|
```
|
261
241
|
|
262
|
-
##
|
242
|
+
## 🛠️ Advanced Usage
|
263
243
|
|
264
|
-
|
244
|
+
### Database Seeding
|
245
|
+
|
246
|
+
All generated tables automatically include:
|
247
|
+
- **Sample data** - 3 sample records per table
|
248
|
+
- **Seeder integration** - Automatic database seeding
|
249
|
+
- **Development data** - Realistic test data
|
265
250
|
|
266
|
-
### Generate Plugin
|
267
251
|
```bash
|
268
|
-
#
|
269
|
-
|
252
|
+
# Run database seeding
|
253
|
+
npm run seed
|
270
254
|
|
271
|
-
#
|
272
|
-
|
255
|
+
# Reset and reseed database
|
256
|
+
npm run seed --reset
|
273
257
|
```
|
274
258
|
|
275
|
-
|
259
|
+
### Template Updates
|
276
260
|
|
277
|
-
### Complete E-commerce Module
|
278
261
|
```bash
|
279
|
-
#
|
280
|
-
diagramers
|
262
|
+
# Update project with latest template
|
263
|
+
diagramers update
|
281
264
|
|
282
|
-
#
|
283
|
-
diagramers
|
265
|
+
# Force update with backup
|
266
|
+
diagramers update --force --backup
|
267
|
+
```
|
284
268
|
|
285
|
-
|
286
|
-
diagramers extend --module categories --crud --fields name,description,parent_id
|
269
|
+
### Custom Field Types
|
287
270
|
|
288
|
-
|
289
|
-
diagramers extend --relation product-category --type mongodb
|
290
|
-
diagramers extend --relation order-product --type mongodb
|
291
|
-
```
|
271
|
+
The CLI automatically detects field types based on naming conventions:
|
292
272
|
|
293
|
-
### User Management System
|
294
273
|
```bash
|
295
|
-
#
|
296
|
-
diagramers extend --
|
274
|
+
# These fields will be auto-typed:
|
275
|
+
diagramers extend --table products:products --fields \
|
276
|
+
name,description,price,stock_count,created_at,is_active,category_id
|
277
|
+
```
|
297
278
|
|
298
|
-
|
299
|
-
|
279
|
+
**Auto-detection:**
|
280
|
+
- `name`, `title`, `description` → String
|
281
|
+
- `price`, `count`, `stock_count` → Number
|
282
|
+
- `created_at`, `updated_at` → Date
|
283
|
+
- `is_active`, `verified` → Boolean
|
284
|
+
- `category_id`, `user_id` → ObjectId
|
300
285
|
|
301
|
-
|
302
|
-
diagramers extend --module permissions --crud --fields name,description,resource
|
286
|
+
## 📚 Project Structure
|
303
287
|
|
304
|
-
|
305
|
-
|
306
|
-
|
288
|
+
Generated projects follow this structure:
|
289
|
+
|
290
|
+
```
|
291
|
+
my-project/
|
292
|
+
├── src/
|
293
|
+
│ ├── modules/
|
294
|
+
│ │ ├── products/
|
295
|
+
│ │ │ ├── controllers/
|
296
|
+
│ │ │ ├── entities/
|
297
|
+
│ │ │ ├── schemas/
|
298
|
+
│ │ │ ├── services/
|
299
|
+
│ │ │ └── routes/
|
300
|
+
│ │ └── users/
|
301
|
+
│ ├── core/
|
302
|
+
│ │ ├── database/
|
303
|
+
│ │ ├── config/
|
304
|
+
│ │ └── server/
|
305
|
+
│ └── shared/
|
306
|
+
├── scripts/
|
307
|
+
└── package.json
|
307
308
|
```
|
308
309
|
|
309
|
-
##
|
310
|
+
## 🔍 Troubleshooting
|
310
311
|
|
311
|
-
###
|
312
|
+
### Common Issues
|
313
|
+
|
314
|
+
#### Module Not Found
|
312
315
|
```bash
|
313
|
-
|
314
|
-
diagramers extend --module products --fields name:string,price:number,active:boolean,created:date
|
316
|
+
❌ Module 'inventory' does not exist
|
315
317
|
```
|
316
|
-
|
317
|
-
### Nested Modules
|
318
|
+
**Solution:** Create the module first:
|
318
319
|
```bash
|
319
|
-
|
320
|
-
diagramers extend --module admin/users --crud --fields email,role,permissions
|
320
|
+
diagramers extend --module inventory
|
321
321
|
```
|
322
322
|
|
323
|
-
|
323
|
+
#### Table Already Exists
|
324
324
|
```bash
|
325
|
-
|
326
|
-
diagramers extend --module api/products --crud --swagger --fields name,price,description
|
325
|
+
❌ Table 'products' already exists in module 'products'
|
327
326
|
```
|
327
|
+
**Solution:** Use a different table name or check existing tables
|
328
328
|
|
329
|
-
|
330
|
-
|
331
|
-
|
329
|
+
#### Invalid Relation
|
330
|
+
```bash
|
331
|
+
❌ Table 'categories' does not exist in module 'products'
|
332
|
+
```
|
333
|
+
**Solution:** Create both tables before creating relations:
|
332
334
|
```bash
|
333
|
-
|
334
|
-
|
335
|
-
|
335
|
+
diagramers extend --table products:categories --fields name,description
|
336
|
+
diagramers extend --table products:products --fields name,price
|
337
|
+
diagramers extend --relation products:category-product
|
338
|
+
```
|
336
339
|
|
337
|
-
|
338
|
-
npm install
|
340
|
+
### Getting Help
|
339
341
|
|
340
|
-
|
341
|
-
|
342
|
+
```bash
|
343
|
+
# General help
|
344
|
+
diagramers --help
|
342
345
|
|
343
|
-
#
|
344
|
-
|
346
|
+
# Command-specific help
|
347
|
+
diagramers init --help
|
348
|
+
diagramers extend --help
|
349
|
+
diagramers update --help
|
345
350
|
```
|
346
351
|
|
347
|
-
|
348
|
-
```bash
|
349
|
-
# Run tests
|
350
|
-
npm test
|
352
|
+
## 🤝 Contributing
|
351
353
|
|
352
|
-
|
353
|
-
npm run test:coverage
|
354
|
-
```
|
354
|
+
We welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details.
|
355
355
|
|
356
356
|
## 📄 License
|
357
357
|
|
358
|
-
|
358
|
+
MIT License - see [LICENSE](LICENSE) file for details.
|
359
359
|
|
360
|
-
##
|
360
|
+
## 🔗 Related Packages
|
361
361
|
|
362
|
-
|
363
|
-
|
364
|
-
3. Commit your changes (`git commit -m 'Add some amazing feature'`)
|
365
|
-
4. Push to the branch (`git push origin feature/amazing-feature`)
|
366
|
-
5. Open a Pull Request
|
362
|
+
- [@diagramers/api](https://npmjs.com/package/@diagramers/api) - API template package
|
363
|
+
- [@diagramers/admin](https://npmjs.com/package/@diagramers/admin) - Admin template package
|
367
364
|
|
368
365
|
## 📞 Support
|
369
366
|
|
370
|
-
|
371
|
-
-
|
372
|
-
-
|
373
|
-
- 💬 Join our community discussions
|
374
|
-
- 📧 Contact: support@diagramers.com
|
375
|
-
|
376
|
-
## 🔗 Related Packages
|
377
|
-
|
378
|
-
- **@diagramers/api** - API framework and template
|
379
|
-
- **@diagramers/admin** - Admin dashboard template
|
380
|
-
- **@diagramers/shared** - Shared utilities and types
|
367
|
+
- **Issues**: [GitHub Issues](https://github.com/diagramers/diagramers-cli/issues)
|
368
|
+
- **Documentation**: [Official Docs](https://docs.diagramers.com)
|
369
|
+
- **Community**: [Discord Server](https://discord.gg/diagramers)
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/commands/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/commands/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,WAoG1C"}
|
package/dist/commands/api.js
CHANGED
@@ -63,13 +63,25 @@ function apiCommand(program) {
|
|
63
63
|
});
|
64
64
|
// Generate table command
|
65
65
|
api
|
66
|
-
.command('generate:table <
|
67
|
-
.description('Generate a new database table with entity and schema only')
|
66
|
+
.command('generate:table <module:table>')
|
67
|
+
.description('Generate a new database table with entity and schema only (format: module:table)')
|
68
68
|
.action(async (name) => {
|
69
69
|
try {
|
70
70
|
console.log(chalk_1.default.blue(`🚀 Generating table: ${name}`));
|
71
|
-
|
72
|
-
|
71
|
+
// Parse module:table format
|
72
|
+
const parts = name.split(':');
|
73
|
+
let moduleName;
|
74
|
+
let tableName;
|
75
|
+
if (parts.length === 2) {
|
76
|
+
moduleName = parts[0];
|
77
|
+
tableName = parts[1];
|
78
|
+
}
|
79
|
+
else {
|
80
|
+
moduleName = name;
|
81
|
+
tableName = name;
|
82
|
+
}
|
83
|
+
await (0, table_generator_1.generateTable)(moduleName, tableName);
|
84
|
+
console.log(chalk_1.default.green(`✅ Table '${tableName}' generated successfully!`));
|
73
85
|
}
|
74
86
|
catch (error) {
|
75
87
|
console.error(chalk_1.default.red(`❌ Error generating table: ${error.message}`));
|
package/dist/commands/api.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/commands/api.ts"],"names":[],"mappings":";;;;;AAOA,
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/commands/api.ts"],"names":[],"mappings":"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"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"extend.d.ts","sourceRoot":"","sources":["../../src/commands/extend.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,
|
1
|
+
{"version":3,"file":"extend.d.ts","sourceRoot":"","sources":["../../src/commands/extend.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,QA+I7C"}
|
package/dist/commands/extend.js
CHANGED
@@ -60,30 +60,65 @@ function extendCommand(program) {
|
|
60
60
|
}
|
61
61
|
// Generate database table
|
62
62
|
if (options.table) {
|
63
|
-
|
64
|
-
|
63
|
+
// Parse table format: module:table or just table (assume same name for module)
|
64
|
+
const tableParts = options.table.split(':');
|
65
|
+
let moduleName;
|
66
|
+
let tableName;
|
67
|
+
if (tableParts.length === 2) {
|
68
|
+
moduleName = tableParts[0];
|
69
|
+
tableName = tableParts[1];
|
70
|
+
}
|
71
|
+
else {
|
72
|
+
// If no module specified, use table name as module name
|
73
|
+
moduleName = options.table;
|
74
|
+
tableName = options.table;
|
75
|
+
}
|
76
|
+
console.log(chalk_1.default.blue(`🗄️ Generating table: ${tableName} in module: ${moduleName}`));
|
77
|
+
await (0, table_generator_1.generateTable)(moduleName, tableName, {
|
65
78
|
fields: options.fields?.split(','),
|
66
79
|
type: options.type || 'mongodb'
|
67
80
|
});
|
68
|
-
console.log(chalk_1.default.green(`✅ Table ${
|
81
|
+
console.log(chalk_1.default.green(`✅ Table ${tableName} generated successfully!`));
|
69
82
|
return;
|
70
83
|
}
|
71
84
|
// Generate database relations
|
72
85
|
if (options.relation) {
|
73
86
|
console.log(chalk_1.default.blue(`🔗 Generating relations for: ${options.relation}`));
|
74
|
-
// Parse relation parameters (format: table1-table2 or table1-table2:type)
|
87
|
+
// Parse relation parameters (format: module:table1-table2 or module:table1-table2:type)
|
75
88
|
const relationParts = options.relation.split(':');
|
76
|
-
|
77
|
-
|
78
|
-
if (
|
79
|
-
|
80
|
-
|
89
|
+
let moduleName;
|
90
|
+
let tablesAndType;
|
91
|
+
if (relationParts.length >= 2) {
|
92
|
+
moduleName = relationParts[0];
|
93
|
+
tablesAndType = relationParts.slice(1).join(':');
|
94
|
+
}
|
95
|
+
else {
|
96
|
+
console.error(chalk_1.default.red('❌ Relation format should be module:table1-table2 or module:table1-table2:type'));
|
97
|
+
console.error(chalk_1.default.red(' Examples: products:product-category, users:user-profile:one-to-one'));
|
98
|
+
process.exit(1);
|
99
|
+
}
|
100
|
+
// Parse tables and relation type
|
101
|
+
const typeIndex = tablesAndType.lastIndexOf(':');
|
102
|
+
let tables;
|
103
|
+
let relationType;
|
104
|
+
if (typeIndex > 0 && ['one-to-one', 'one-to-many', 'many-to-many'].includes(tablesAndType.substring(typeIndex + 1))) {
|
105
|
+
tables = tablesAndType.substring(0, typeIndex);
|
106
|
+
relationType = tablesAndType.substring(typeIndex + 1);
|
107
|
+
}
|
108
|
+
else {
|
109
|
+
tables = tablesAndType;
|
110
|
+
relationType = 'one-to-many'; // Default to one-to-many
|
111
|
+
}
|
112
|
+
const tableNames = tables.split('-');
|
113
|
+
if (tableNames.length !== 2) {
|
114
|
+
console.error(chalk_1.default.red('❌ Tables should be separated by a dash (-)'));
|
115
|
+
console.error(chalk_1.default.red(' Examples: product-category, user-profile'));
|
81
116
|
process.exit(1);
|
82
117
|
}
|
83
|
-
const [table1, table2] =
|
118
|
+
const [table1, table2] = tableNames;
|
84
119
|
// Import and call the relation generator
|
85
120
|
const { generateRelation } = require('../services/relation-generator');
|
86
|
-
await generateRelation(table1, table2, relationType);
|
121
|
+
await generateRelation(moduleName, table1, table2, relationType);
|
87
122
|
console.log(chalk_1.default.green(`✅ Relations ${options.relation} generated successfully!`));
|
88
123
|
return;
|
89
124
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"extend.js","sourceRoot":"","sources":["../../src/commands/extend.ts"],"names":[],"mappings":";;;;;AAKA,
|
1
|
+
{"version":3,"file":"extend.js","sourceRoot":"","sources":["../../src/commands/extend.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
@@ -1,10 +1,14 @@
|
|
1
1
|
#!/usr/bin/env node
|
2
2
|
"use strict";
|
3
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
4
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
5
|
+
};
|
3
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
4
7
|
const commander_1 = require("commander");
|
5
8
|
const init_1 = require("./commands/init");
|
6
9
|
const update_1 = require("./commands/update");
|
7
10
|
const extend_1 = require("./commands/extend");
|
11
|
+
const chalk_1 = __importDefault(require("chalk"));
|
8
12
|
const fs_1 = require("fs");
|
9
13
|
const path_1 = require("path");
|
10
14
|
const program = new commander_1.Command();
|
@@ -37,7 +41,7 @@ function getApiVersion() {
|
|
37
41
|
}
|
38
42
|
program
|
39
43
|
.name('diagramers')
|
40
|
-
.description('CLI tool for managing diagramers projects')
|
44
|
+
.description('CLI tool for managing diagramers projects, modules, tables, and endpoints')
|
41
45
|
.version(cliPkg.version, '-V, --version', 'output the current version');
|
42
46
|
// Custom version command for full version info
|
43
47
|
program
|
@@ -61,15 +65,42 @@ program
|
|
61
65
|
(0, update_1.updateCommand)(program);
|
62
66
|
(0, extend_1.extendCommand)(program);
|
63
67
|
program.addHelpText('after', `
|
64
|
-
Examples:
|
65
|
-
|
66
|
-
|
67
|
-
$ diagramers
|
68
|
-
$ diagramers
|
69
|
-
$ diagramers
|
70
|
-
|
71
|
-
|
72
|
-
$ diagramers extend --
|
68
|
+
${chalk_1.default.bold('Examples:')}
|
69
|
+
|
70
|
+
${chalk_1.default.cyan('Project Management:')}
|
71
|
+
$ diagramers init api my-new-project # Create new API project
|
72
|
+
$ diagramers init admin my-admin-dashboard # Create new admin project
|
73
|
+
$ diagramers update # Update project templates
|
74
|
+
|
75
|
+
${chalk_1.default.cyan('Module Management:')}
|
76
|
+
$ diagramers extend --module products --crud # Generate module with CRUD
|
77
|
+
$ diagramers extend --module users --fields email,username,role
|
78
|
+
|
79
|
+
${chalk_1.default.cyan('Table Management:')}
|
80
|
+
$ diagramers extend --table products:categories --fields name,description,slug
|
81
|
+
$ diagramers extend --table users:profiles --fields bio,avatar,birth_date
|
82
|
+
|
83
|
+
${chalk_1.default.cyan('Endpoint Management:')}
|
84
|
+
$ diagramers extend --endpoint products:search --method GET
|
85
|
+
$ diagramers extend --endpoint users:reset-password --method POST
|
86
|
+
|
87
|
+
${chalk_1.default.cyan('Relation Management:')}
|
88
|
+
$ diagramers extend --relation products:category-product
|
89
|
+
$ diagramers extend --relation users:user-profile:one-to-one
|
90
|
+
$ diagramers extend --relation products:product-tag:many-to-many
|
91
|
+
|
92
|
+
${chalk_1.default.cyan('Other Commands:')}
|
93
|
+
$ diagramers extend --list # List available features
|
94
|
+
$ diagramers extend --feature auth # Add authentication feature
|
95
|
+
|
96
|
+
${chalk_1.default.bold('Workflow Example:')}
|
97
|
+
$ diagramers init api ecommerce-api # 1. Create project
|
98
|
+
$ cd ecommerce-api # 2. Navigate to project
|
99
|
+
$ diagramers extend --module products --crud # 3. Generate module
|
100
|
+
$ diagramers extend --table products:categories --fields name,description
|
101
|
+
$ diagramers extend --table products:products --fields name,price,category_id
|
102
|
+
$ diagramers extend --relation products:category-product
|
103
|
+
$ npm install && npm start # 4. Install & start
|
73
104
|
`);
|
74
105
|
// If no command is provided, show help
|
75
106
|
if (!process.argv.slice(2).length) {
|
package/dist/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
@@ -1,3 +1,3 @@
|
|
1
1
|
export type RelationType = 'one-to-one' | 'one-to-many' | 'many-to-many';
|
2
|
-
export declare function generateRelation(table1: string, table2: string, relationType?: RelationType): Promise<void>;
|
2
|
+
export declare function generateRelation(moduleName: string, table1: string, table2: string, relationType?: RelationType): Promise<void>;
|
3
3
|
//# sourceMappingURL=relation-generator.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"relation-generator.d.ts","sourceRoot":"","sources":["../../src/services/relation-generator.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,YAAY,GAAG,YAAY,GAAG,aAAa,GAAG,cAAc,CAAC;AAEzE,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAE,YAA2B,GAAG,OAAO,CAAC,IAAI,CAAC,
|
1
|
+
{"version":3,"file":"relation-generator.d.ts","sourceRoot":"","sources":["../../src/services/relation-generator.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,YAAY,GAAG,YAAY,GAAG,aAAa,GAAG,cAAc,CAAC;AAEzE,wBAAsB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAE,YAA2B,GAAG,OAAO,CAAC,IAAI,CAAC,CAuDnJ"}
|
@@ -36,8 +36,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.generateRelation = generateRelation;
|
37
37
|
const fs = __importStar(require("fs"));
|
38
38
|
const path = __importStar(require("path"));
|
39
|
-
async function generateRelation(table1, table2, relationType = 'one-to-one') {
|
40
|
-
// Validate table names
|
39
|
+
async function generateRelation(moduleName, table1, table2, relationType = 'one-to-one') {
|
40
|
+
// Validate module and table names
|
41
|
+
if (!moduleName || !/^[a-zA-Z][a-zA-Z0-9_-]*$/.test(moduleName)) {
|
42
|
+
throw new Error('Invalid module name. Use only letters, numbers, hyphens, and underscores. Must start with a letter.');
|
43
|
+
}
|
41
44
|
if (!table1 || !table2 || !/^[a-zA-Z][a-zA-Z0-9_-]*$/.test(table1) || !/^[a-zA-Z][a-zA-Z0-9_-]*$/.test(table2)) {
|
42
45
|
throw new Error('Invalid table names. Use only letters, numbers, hyphens, and underscores. Must start with a letter.');
|
43
46
|
}
|
@@ -50,23 +53,33 @@ async function generateRelation(table1, table2, relationType = 'one-to-one') {
|
|
50
53
|
if (missingDirs.length > 0) {
|
51
54
|
throw new Error(`This command should be run from a diagramers API project. Missing directories: ${missingDirs.join(', ')}`);
|
52
55
|
}
|
53
|
-
// Check if
|
54
|
-
const
|
55
|
-
|
56
|
-
|
57
|
-
|
56
|
+
// Check if the module exists
|
57
|
+
const modulePath = path.join(currentDir, 'src/modules', moduleName);
|
58
|
+
if (!fs.existsSync(modulePath)) {
|
59
|
+
throw new Error(`Module '${moduleName}' does not exist. Please create the module first using: diagramers extend --module ${moduleName}`);
|
60
|
+
}
|
61
|
+
// Check if both tables exist in the same module
|
62
|
+
const table1EntityPath = path.join(modulePath, 'entities', `${table1}.entity.ts`);
|
63
|
+
const table2EntityPath = path.join(modulePath, 'entities', `${table2}.entity.ts`);
|
64
|
+
const table1SchemaPath = path.join(modulePath, 'schemas', `${table1}.schema.ts`);
|
65
|
+
const table2SchemaPath = path.join(modulePath, 'schemas', `${table2}.schema.ts`);
|
66
|
+
if (!fs.existsSync(table1EntityPath) || !fs.existsSync(table1SchemaPath)) {
|
67
|
+
throw new Error(`Table '${table1}' does not exist in module '${moduleName}'. Please create the table first using: diagramers extend --table ${moduleName}:${table1}`);
|
68
|
+
}
|
69
|
+
if (!fs.existsSync(table2EntityPath) || !fs.existsSync(table2SchemaPath)) {
|
70
|
+
throw new Error(`Table '${table2}' does not exist in module '${moduleName}'. Please create the table first using: diagramers extend --table ${moduleName}:${table2}`);
|
58
71
|
}
|
59
|
-
console.log(`🔗 Creating ${relationType} relationship between ${table1} and ${table2}...`);
|
72
|
+
console.log(`🔗 Creating ${relationType} relationship between ${table1} and ${table2} in module ${moduleName}...`);
|
60
73
|
// Update entities
|
61
74
|
console.log('📝 Updating entities...');
|
62
|
-
await updateEntity(path.join(
|
63
|
-
await updateEntity(path.join(
|
75
|
+
await updateEntity(path.join(modulePath, 'entities'), table1Capitalized, table2Capitalized, relationType, 'forward');
|
76
|
+
await updateEntity(path.join(modulePath, 'entities'), table2Capitalized, table1Capitalized, relationType, 'reverse');
|
64
77
|
// Update schemas
|
65
78
|
console.log('📋 Updating schemas...');
|
66
|
-
await updateSchema(path.join(
|
67
|
-
await updateSchema(path.join(
|
79
|
+
await updateSchema(path.join(modulePath, 'schemas'), table1Capitalized, table2Capitalized, relationType, 'forward');
|
80
|
+
await updateSchema(path.join(modulePath, 'schemas'), table2Capitalized, table1Capitalized, relationType, 'reverse');
|
68
81
|
console.log('✅ Relationship created successfully!');
|
69
|
-
console.log(`🔗 ${table1} ↔ ${table2} (${relationType})`);
|
82
|
+
console.log(`🔗 ${table1} ↔ ${table2} (${relationType}) in module ${moduleName}`);
|
70
83
|
}
|
71
84
|
async function updateEntity(entityPath, tableCapitalized, relatedTableCapitalized, relationType, direction) {
|
72
85
|
const entityFile = path.join(entityPath, `${tableCapitalized.toLowerCase()}.entity.ts`);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"relation-generator.js","sourceRoot":"","sources":["../../src/services/relation-generator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,
|
1
|
+
{"version":3,"file":"relation-generator.js","sourceRoot":"","sources":["../../src/services/relation-generator.ts"],"names":[],"mappings":"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"}
|
@@ -1,2 +1,2 @@
|
|
1
|
-
export declare function generateTable(tableName: string, options?: any): Promise<void>;
|
1
|
+
export declare function generateTable(moduleName: string, tableName: string, options?: any): Promise<void>;
|
2
2
|
//# sourceMappingURL=table-generator.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"table-generator.d.ts","sourceRoot":"","sources":["../../src/services/table-generator.ts"],"names":[],"mappings":"AAeA,wBAAsB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,GAAE,GAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,
|
1
|
+
{"version":3,"file":"table-generator.d.ts","sourceRoot":"","sources":["../../src/services/table-generator.ts"],"names":[],"mappings":"AAeA,wBAAsB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,GAAE,GAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CA+D3G"}
|
@@ -49,8 +49,11 @@ function pluralToSingular(word) {
|
|
49
49
|
}
|
50
50
|
return word; // already singular
|
51
51
|
}
|
52
|
-
async function generateTable(tableName, options = {}) {
|
53
|
-
// Validate table
|
52
|
+
async function generateTable(moduleName, tableName, options = {}) {
|
53
|
+
// Validate module and table names
|
54
|
+
if (!moduleName || !/^[a-zA-Z][a-zA-Z0-9_-]*$/.test(moduleName)) {
|
55
|
+
throw new Error('Invalid module name. Use only letters, numbers, hyphens, and underscores. Must start with a letter.');
|
56
|
+
}
|
54
57
|
if (!tableName || !/^[a-zA-Z][a-zA-Z0-9_-]*$/.test(tableName)) {
|
55
58
|
throw new Error('Invalid table name. Use only letters, numbers, hyphens, and underscores. Must start with a letter.');
|
56
59
|
}
|
@@ -63,25 +66,38 @@ async function generateTable(tableName, options = {}) {
|
|
63
66
|
if (missingDirs.length > 0) {
|
64
67
|
throw new Error(`This command should be run from a diagramers API project. Missing directories: ${missingDirs.join(', ')}`);
|
65
68
|
}
|
66
|
-
//
|
67
|
-
const modulePath = path.join(currentDir, 'src/modules',
|
69
|
+
// Check if the module exists
|
70
|
+
const modulePath = path.join(currentDir, 'src/modules', moduleName);
|
68
71
|
if (!fs.existsSync(modulePath)) {
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
+
throw new Error(`Module '${moduleName}' does not exist. Please create the module first using: diagramers extend --module ${moduleName}`);
|
73
|
+
}
|
74
|
+
// Check if entities and schemas directories exist, create if not
|
75
|
+
const entitiesPath = path.join(modulePath, 'entities');
|
76
|
+
const schemasPath = path.join(modulePath, 'schemas');
|
77
|
+
if (!fs.existsSync(entitiesPath)) {
|
78
|
+
fs.mkdirSync(entitiesPath, { recursive: true });
|
79
|
+
}
|
80
|
+
if (!fs.existsSync(schemasPath)) {
|
81
|
+
fs.mkdirSync(schemasPath, { recursive: true });
|
72
82
|
}
|
73
|
-
|
83
|
+
// Check if table already exists
|
84
|
+
const entityFile = path.join(entitiesPath, `${singularName}.entity.ts`);
|
85
|
+
const schemaFile = path.join(schemasPath, `${singularName}.schema.ts`);
|
86
|
+
if (fs.existsSync(entityFile) || fs.existsSync(schemaFile)) {
|
87
|
+
throw new Error(`Table '${tableName}' already exists in module '${moduleName}'. Entity or schema files already present.`);
|
88
|
+
}
|
89
|
+
console.log(`📝 Creating entity for table '${tableName}' in module '${moduleName}'...`);
|
74
90
|
const entityContent = generateEntityContent(singularName, tableNameCapitalized, options);
|
75
|
-
fs.writeFileSync(
|
76
|
-
console.log(`📋 Creating schema for table '${tableName}'...`);
|
91
|
+
fs.writeFileSync(entityFile, entityContent);
|
92
|
+
console.log(`📋 Creating schema for table '${tableName}' in module '${moduleName}'...`);
|
77
93
|
const schemaContent = generateSchemaContent(singularName, tableNameCapitalized, tableName, options);
|
78
|
-
fs.writeFileSync(
|
94
|
+
fs.writeFileSync(schemaFile, schemaContent);
|
79
95
|
// Add to seeder
|
80
96
|
console.log(`🌱 Adding '${tableName}' to database seeder...`);
|
81
97
|
await addToSeeder(currentDir, tableName, singularName, tableNameCapitalized, options);
|
82
98
|
console.log('✅ Table generation completed!');
|
83
|
-
console.log(`📊 Entity: src/modules/${
|
84
|
-
console.log(`📋 Schema: src/modules/${
|
99
|
+
console.log(`📊 Entity: src/modules/${moduleName}/entities/${singularName}.entity.ts`);
|
100
|
+
console.log(`📋 Schema: src/modules/${moduleName}/schemas/${singularName}.schema.ts`);
|
85
101
|
console.log('🌱 Added to database seeder');
|
86
102
|
}
|
87
103
|
function generateEntityContent(singularName, tableNameCapitalized, options) {
|
@@ -194,8 +210,32 @@ async function addToSeeder(currentDir, tableName, singularName, tableNameCapital
|
|
194
210
|
seederContent = seederContent.replace(interfaceMatch[0], newInterface);
|
195
211
|
}
|
196
212
|
}
|
213
|
+
// Add seeder method call in seed method
|
214
|
+
const seederCall = ` await this.seed${tableNameCapitalized}s(seedData.${tableName} || []);`;
|
215
|
+
// Find the seed method and add the call after existing seeders
|
216
|
+
if (!seederContent.includes(seederCall)) {
|
217
|
+
const templateComment = '// TEMPLATE: Call new seeders here (the CLI will add new calls automatically)';
|
218
|
+
if (seederContent.includes(templateComment)) {
|
219
|
+
seederContent = seederContent.replace(templateComment, templateComment + '\n' + seederCall);
|
220
|
+
}
|
221
|
+
}
|
222
|
+
// Add default seed data
|
223
|
+
const defaultData = generateDefaultSeedData(tableName, options);
|
224
|
+
const defaultDataLine = ` ${tableName}: ${JSON.stringify(defaultData, null, 8)},`;
|
225
|
+
// Find defaultData object and add the line
|
226
|
+
if (!seederContent.includes(`${tableName}:`)) {
|
227
|
+
const defaultDataMatch = seederContent.match(/const defaultData: SeedData = \{([^}]*(?:\{[^}]*\}[^}]*)*)\}/s);
|
228
|
+
if (defaultDataMatch) {
|
229
|
+
const beforeClosing = defaultDataMatch[0].lastIndexOf('}');
|
230
|
+
const beforeText = defaultDataMatch[0].slice(0, beforeClosing);
|
231
|
+
const afterText = defaultDataMatch[0].slice(beforeClosing);
|
232
|
+
const newDefaultData = beforeText + '\n' + defaultDataLine + '\n ' + afterText;
|
233
|
+
seederContent = seederContent.replace(defaultDataMatch[0], newDefaultData);
|
234
|
+
}
|
235
|
+
}
|
197
236
|
// Add seeder method
|
198
|
-
const seederMethod = `
|
237
|
+
const seederMethod = `
|
238
|
+
private async seed${tableNameCapitalized}s(data: any[]): Promise<void> {
|
199
239
|
if (data.length === 0) return;
|
200
240
|
|
201
241
|
logger.info(\`[DatabaseSeeder] Seeding \${data.length} ${tableName}...\`);
|
@@ -218,33 +258,16 @@ async function addToSeeder(currentDir, tableName, singularName, tableNameCapital
|
|
218
258
|
}
|
219
259
|
}
|
220
260
|
}`;
|
221
|
-
// Add method before closing class brace
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
const beforeClosing = seedMethodMatch[0].lastIndexOf('}');
|
232
|
-
const beforeText = seedMethodMatch[0].slice(0, beforeClosing);
|
233
|
-
const afterText = seedMethodMatch[0].slice(beforeClosing);
|
234
|
-
const newSeedMethod = beforeText + '\n' + seederCall + '\n ' + afterText;
|
235
|
-
seederContent = seederContent.replace(seedMethodMatch[0], newSeedMethod);
|
236
|
-
}
|
237
|
-
// Add default seed data
|
238
|
-
const defaultData = generateDefaultSeedData(tableName, options);
|
239
|
-
const defaultDataLine = ` ${tableName}: ${JSON.stringify(defaultData, null, 6)},`;
|
240
|
-
// Find defaultData object and add the line
|
241
|
-
const defaultDataMatch = seederContent.match(/const defaultData: SeedData = \{([^}]*(?:\{[^}]*\}[^}]*)*)\}/s);
|
242
|
-
if (defaultDataMatch) {
|
243
|
-
const beforeClosing = defaultDataMatch[0].lastIndexOf('}');
|
244
|
-
const beforeText = defaultDataMatch[0].slice(0, beforeClosing);
|
245
|
-
const afterText = defaultDataMatch[0].slice(beforeClosing);
|
246
|
-
const newDefaultData = beforeText + '\n' + defaultDataLine + '\n ' + afterText;
|
247
|
-
seederContent = seederContent.replace(defaultDataMatch[0], newDefaultData);
|
261
|
+
// Add method before closing class brace if it doesn't exist
|
262
|
+
if (!seederContent.includes(`seed${tableNameCapitalized}s`)) {
|
263
|
+
const templateComment = '// TEMPLATE: Add new seeder functions here (the CLI will add new functions automatically)';
|
264
|
+
if (seederContent.includes(templateComment)) {
|
265
|
+
seederContent = seederContent.replace(templateComment, seederMethod + '\n' + templateComment);
|
266
|
+
}
|
267
|
+
else {
|
268
|
+
const classEndIndex = seederContent.lastIndexOf('}');
|
269
|
+
seederContent = seederContent.slice(0, classEndIndex) + seederMethod + '\n' + seederContent.slice(classEndIndex);
|
270
|
+
}
|
248
271
|
}
|
249
272
|
fs.writeFileSync(seederPath, seederContent);
|
250
273
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"table-generator.js","sourceRoot":"","sources":["../../src/services/table-generator.ts"],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"table-generator.js","sourceRoot":"","sources":["../../src/services/table-generator.ts"],"names":[],"mappings":"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"}
|