db-model-router 1.0.0 → 1.0.2

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 CHANGED
@@ -1,4 +1,4 @@
1
- # rest-router
1
+ # db-model-router
2
2
 
3
3
  A database-agnostic REST API generator for Node.js. Works with Express or ultimate-express (a high-performance drop-in replacement). Define a model, get a full CRUD API with filtering, pagination, and bulk operations — backed by any of 9 supported databases.
4
4
 
@@ -284,13 +284,13 @@ The fastest way to go from database to running API. Scaffolds a complete Express
284
284
 
285
285
  ```bash
286
286
  # Full app from MySQL
287
- rest-router-generate-app --type mysql --env .env
287
+ db-model-router-generate-app --type mysql --env .env
288
288
 
289
289
  # SQLite3 into a specific directory
290
- rest-router-generate-app --type sqlite3 --database ./myapp.db --output ./my-api
290
+ db-model-router-generate-app --type sqlite3 --database ./myapp.db --output ./my-api
291
291
 
292
292
  # Postgres with specific tables and relationships
293
- rest-router-generate-app --type postgres --env .env --tables users,posts,posts.comments
293
+ db-model-router-generate-app --type postgres --env .env --tables users,posts,posts.comments
294
294
  ```
295
295
 
296
296
  Options:
@@ -348,16 +348,16 @@ Connects to your database, introspects all tables, and generates model files wit
348
348
 
349
349
  ```bash
350
350
  # Basic usage
351
- rest-router-generate-model --type mysql --host localhost --database mydb --user root --password secret
351
+ db-model-router-generate-model --type mysql --host localhost --database mydb --user root --password secret
352
352
 
353
353
  # Using an .env file
354
- rest-router-generate-model --type postgres --env .env --output ./src/models
354
+ db-model-router-generate-model --type postgres --env .env --output ./src/models
355
355
 
356
356
  # SQLite3
357
- rest-router-generate-model --type sqlite3 --database ./myapp.db --output ./models
357
+ db-model-router-generate-model --type sqlite3 --database ./myapp.db --output ./models
358
358
 
359
359
  # Only specific tables
360
- rest-router-generate-model --type mysql --env .env --tables users,posts,comments
360
+ db-model-router-generate-model --type mysql --env .env --tables users,posts,comments
361
361
  ```
362
362
 
363
363
  Options:
@@ -397,13 +397,13 @@ Generates Express route files for each model. If models don't exist yet, it auto
397
397
 
398
398
  ```bash
399
399
  # From existing models
400
- rest-router-generate-route --models ./models --output ./routes
400
+ db-model-router-generate-route --models ./models --output ./routes
401
401
 
402
402
  # Auto-generate models + routes in one step
403
- rest-router-generate-route --type mysql --env .env --models ./models --output ./routes
403
+ db-model-router-generate-route --type mysql --env .env --models ./models --output ./routes
404
404
 
405
405
  # SQLite3 one-liner
406
- rest-router-generate-route --type sqlite3 --database ./myapp.db
406
+ db-model-router-generate-route --type sqlite3 --database ./myapp.db
407
407
  ```
408
408
 
409
409
  Options:
@@ -428,10 +428,10 @@ Use dot notation in `--tables` to declare parent-child relationships. This works
428
428
 
429
429
  ```bash
430
430
  # Declare that comments belong to posts
431
- rest-router-generate-route --type mysql --env .env --tables users,posts,posts.comments
431
+ db-model-router-generate-route --type mysql --env .env --tables users,posts,posts.comments
432
432
 
433
433
  # Same via generate-app
434
- rest-router-generate-app --type mysql --env .env --tables users,posts,posts.comments
434
+ db-model-router-generate-app --type mysql --env .env --tables users,posts,posts.comments
435
435
  ```
436
436
 
437
437
  The FK column is derived by convention: `<parent_singular>_id` (e.g., `posts.comments` → `post_id`).
@@ -5,7 +5,7 @@ networks:
5
5
  services:
6
6
  mysql:
7
7
  image: mysql:8.0
8
- container_name: rest-router-mysql
8
+ container_name: db-model-router-mysql
9
9
  restart: unless-stopped
10
10
  ports:
11
11
  - "3306:3306"
@@ -25,7 +25,7 @@ services:
25
25
 
26
26
  postgres:
27
27
  image: postgres:16
28
- container_name: rest-router-postgres
28
+ container_name: db-model-router-postgres
29
29
  restart: unless-stopped
30
30
  ports:
31
31
  - "5432:5432"
@@ -44,7 +44,7 @@ services:
44
44
 
45
45
  mongodb:
46
46
  image: mongo:7
47
- container_name: rest-router-mongodb
47
+ container_name: db-model-router-mongodb
48
48
  restart: unless-stopped
49
49
  ports:
50
50
  - "27017:27017"
@@ -59,7 +59,7 @@ services:
59
59
 
60
60
  redis:
61
61
  image: redis:7
62
- container_name: rest-router-redis
62
+ container_name: db-model-router-redis
63
63
  restart: unless-stopped
64
64
  ports:
65
65
  - "6379:6379"
@@ -74,7 +74,7 @@ services:
74
74
 
75
75
  cockroachdb:
76
76
  image: cockroachdb/cockroach:latest
77
- container_name: rest-router-cockroachdb
77
+ container_name: db-model-router-cockroachdb
78
78
  restart: unless-stopped
79
79
  ports:
80
80
  - "26257:26257"
@@ -91,7 +91,7 @@ services:
91
91
 
92
92
  mssql:
93
93
  image: mcr.microsoft.com/mssql/server
94
- container_name: rest-router-mssql
94
+ container_name: db-model-router-mssql
95
95
  restart: unless-stopped
96
96
  ports:
97
97
  - "1433:1433"
@@ -99,7 +99,11 @@ services:
99
99
  ACCEPT_EULA: "Y"
100
100
  MSSQL_SA_PASSWORD: "Password123!"
101
101
  healthcheck:
102
- test: ["CMD-SHELL", "/opt/mssql-tools*/bin/sqlcmd -S localhost -U sa -P 'Password123!' -Q 'SELECT 1' || exit 1"]
102
+ test:
103
+ [
104
+ "CMD-SHELL",
105
+ "/opt/mssql-tools*/bin/sqlcmd -S localhost -U sa -P 'Password123!' -Q 'SELECT 1' || exit 1",
106
+ ]
103
107
  interval: 10s
104
108
  timeout: 5s
105
109
  retries: 10
@@ -109,7 +113,7 @@ services:
109
113
 
110
114
  dynamodb:
111
115
  image: amazon/dynamodb-local
112
- container_name: rest-router-dynamodb
116
+ container_name: db-model-router-dynamodb
113
117
  restart: unless-stopped
114
118
  ports:
115
119
  - "8000:8000"
@@ -125,7 +129,7 @@ services:
125
129
 
126
130
  oracle:
127
131
  image: gvenzl/oracle-xe:21-slim
128
- container_name: rest-router-oracle
132
+ container_name: db-model-router-oracle
129
133
  restart: unless-stopped
130
134
  ports:
131
135
  - "1521:1521"
package/docs/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # rest-router
1
+ # db-model-router
2
2
 
3
3
  A database-agnostic REST API generator for Node.js. Works with Express or ultimate-express (a high-performance drop-in replacement). Define a model, get a full CRUD API with filtering, pagination, and bulk operations — backed by any of 9 supported databases.
4
4
 
@@ -174,9 +174,9 @@ The model and route APIs remain identical across all adapters.
174
174
  Scaffolds a complete Express REST API from an existing database.
175
175
 
176
176
  ```bash
177
- rest-router-generate-app --type mysql --env .env
178
- rest-router-generate-app --type sqlite3 --database ./myapp.db --output ./my-api
179
- rest-router-generate-app --type postgres --env .env --tables users,posts,posts.comments
177
+ db-model-router-generate-app --type mysql --env .env
178
+ db-model-router-generate-app --type sqlite3 --database ./myapp.db --output ./my-api
179
+ db-model-router-generate-app --type postgres --env .env --tables users,posts,posts.comments
180
180
  ```
181
181
 
182
182
  Creates: `app.js`, `models/`, `routes/`, `middleware/logger.js`, `.env.example`, `openapi.json`
@@ -186,7 +186,7 @@ Creates: `app.js`, `models/`, `routes/`, `middleware/logger.js`, `.env.example`,
186
186
  Introspects DB → generates model files with auto-detected PK, unique indexes, timestamps, soft-delete.
187
187
 
188
188
  ```bash
189
- rest-router-generate-model --type mysql --env .env --output ./models [--tables users,posts]
189
+ db-model-router-generate-model --type mysql --env .env --output ./models [--tables users,posts]
190
190
  ```
191
191
 
192
192
  ### generate-route
@@ -194,7 +194,7 @@ rest-router-generate-model --type mysql --env .env --output ./models [--tables u
194
194
  Generates route files + OpenAPI spec from models. Supports parent-child via dot notation.
195
195
 
196
196
  ```bash
197
- rest-router-generate-route --models ./models --output ./routes [--tables posts,posts.comments]
197
+ db-model-router-generate-route --models ./models --output ./routes [--tables posts,posts.comments]
198
198
  ```
199
199
 
200
200
  `posts.comments` → nested route `posts/:post_id/comments` with FK scoping.
package/docs/SKILL.md CHANGED
@@ -118,7 +118,7 @@ Generates Express Router with 9 endpoints:
118
118
  ### generate-app (full scaffold)
119
119
 
120
120
  ```bash
121
- rest-router-generate-app --type mysql --env .env [--output ./dir] [--tables users,posts,posts.comments]
121
+ db-model-router-generate-app --type mysql --env .env [--output ./dir] [--tables users,posts,posts.comments]
122
122
  ```
123
123
 
124
124
  Creates: `app.js`, `models/`, `routes/`, `middleware/logger.js`, `.env.example`, `.gitignore`, `migrations/`, `sessions/`, `openapi.json`
@@ -126,7 +126,7 @@ Creates: `app.js`, `models/`, `routes/`, `middleware/logger.js`, `.env.example`,
126
126
  ### generate-model (DB introspection → model files)
127
127
 
128
128
  ```bash
129
- rest-router-generate-model --type <db> --env .env [--output ./models] [--tables t1,t2] [--schema public]
129
+ db-model-router-generate-model --type <db> --env .env [--output ./models] [--tables t1,t2] [--schema public]
130
130
  ```
131
131
 
132
132
  Auto-detects: PK, unique indexes, DEFAULT→optional, timestamp cols, soft-delete cols.
@@ -134,7 +134,7 @@ Auto-detects: PK, unique indexes, DEFAULT→optional, timestamp cols, soft-delet
134
134
  ### generate-route (model files → route files + OpenAPI)
135
135
 
136
136
  ```bash
137
- rest-router-generate-route --models ./models --output ./routes [--tables posts,posts.comments]
137
+ db-model-router-generate-route --models ./models --output ./routes [--tables posts,posts.comments]
138
138
  ```
139
139
 
140
140
  Dot notation `parent.child` creates nested routes: `parent/:parent_id/child` with FK scoping via `<parent_singular>_id`.
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "db-model-router",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "description": "Generative API Creation using mysql2 and express libraries in node js",
5
5
  "main": "src/index.js",
6
6
  "bin": {
7
- "generate-model": "src/cli/generate-model.js",
8
- "generate-route": "src/cli/generate-route.js",
9
- "generate-app": "src/cli/generate-app.js"
7
+ "db-model-router-generate-model": "src/cli/generate-model.js",
8
+ "db-model-router-generate-route": "src/cli/generate-route.js",
9
+ "db-model-router-generate-app": "src/cli/generate-app.js"
10
10
  },
11
11
  "scripts": {
12
12
  "dev": "nodemon src/serve.js",
@@ -30,6 +30,7 @@
30
30
  "keywords": [
31
31
  "mysql2",
32
32
  "express",
33
+ "ultimate-express",
33
34
  "generative",
34
35
  "rest",
35
36
  "api"
@@ -46,18 +47,17 @@
46
47
  "node-input-validator": "^4.5.0"
47
48
  },
48
49
  "peerDependencies": {
49
- "express": "^4.17.2 || ^5.0.0",
50
- "ultimate-express": "^2.0.0",
51
- "body-parser": "^1.20.0",
52
50
  "@aws-sdk/client-dynamodb": "^3.1029.0",
53
51
  "@aws-sdk/lib-dynamodb": "^3.1029.0",
54
52
  "better-sqlite3": "^12.9.0",
53
+ "express": "^4.17.2 || ^5.0.0",
55
54
  "ioredis": "^5.10.1",
56
55
  "mongodb": "^7.1.1",
57
56
  "mssql": "^12.2.1",
58
57
  "mysql2": "^3.14.4",
59
58
  "oracledb": "^6.10.0",
60
- "pg": "^8.20.0"
59
+ "pg": "^8.20.0",
60
+ "ultimate-express": "^2.0.0"
61
61
  },
62
62
  "peerDependenciesMeta": {
63
63
  "express": {
@@ -66,9 +66,6 @@
66
66
  "ultimate-express": {
67
67
  "optional": true
68
68
  },
69
- "body-parser": {
70
- "optional": true
71
- },
72
69
  "@aws-sdk/client-dynamodb": {
73
70
  "optional": true
74
71
  },
@@ -98,7 +95,7 @@
98
95
  }
99
96
  },
100
97
  "devDependencies": {
101
- "body-parser": "^1.20.0",
98
+ "better-sqlite3": "^12.9.0",
102
99
  "dotenv-cli": "^11.0.0",
103
100
  "express": "^4.21.0",
104
101
  "faker": "^5.5.3",
@@ -320,7 +320,7 @@ function parseArgs(argv) {
320
320
 
321
321
  function printUsage() {
322
322
  console.log(`
323
- Usage: rest-router-generate-app --type <db_type> [options]
323
+ Usage: db-model-router-generate-app --type <db_type> [options]
324
324
 
325
325
  Scaffolds a complete Express REST API app from an existing database.
326
326
  Creates: app.js, models/, routes/, middleware/logger.js, migrations/, sessions/, .env.example
@@ -339,9 +339,9 @@ Options:
339
339
  --help Show this help message
340
340
 
341
341
  Examples:
342
- rest-router-generate-app --type mysql --env .env
343
- rest-router-generate-app --type sqlite3 --database ./myapp.db --output ./my-api
344
- rest-router-generate-app --type postgres --env .env --tables users,posts,posts.comments
342
+ db-model-router-generate-app --type mysql --env .env
343
+ db-model-router-generate-app --type sqlite3 --database ./myapp.db --output ./my-api
344
+ db-model-router-generate-app --type postgres --env .env --tables users,posts,posts.comments
345
345
  `);
346
346
  }
347
347
 
@@ -711,7 +711,7 @@ function parseArgs(argv) {
711
711
 
712
712
  function printUsage() {
713
713
  console.log(`
714
- Usage: rest-router-generate-model --type <db_type> [options]
714
+ Usage: db-model-router-generate-model --type <db_type> [options]
715
715
 
716
716
  Options:
717
717
  --type Database type (${SUPPORTED_TYPES.join(", ")})
@@ -728,9 +728,9 @@ Options:
728
728
  --help Show this help message
729
729
 
730
730
  Examples:
731
- rest-router-generate-model --type mysql --host localhost --database mydb --user root --password secret
732
- rest-router-generate-model --type sqlite3 --database ./myapp.db --output ./src/models
733
- rest-router-generate-model --type postgres --env .env --output ./models
731
+ db-model-router-generate-model --type mysql --host localhost --database mydb --user root --password secret
732
+ db-model-router-generate-model --type sqlite3 --database ./myapp.db --output ./src/models
733
+ db-model-router-generate-model --type postgres --env .env --output ./models
734
734
  `);
735
735
  }
736
736
 
@@ -8,7 +8,11 @@ function generateOpenAPISpec(models, options = {}) {
8
8
 
9
9
  const spec = {
10
10
  openapi: "3.0.3",
11
- info: { title, version, description: "Auto-generated by rest-router CLI" },
11
+ info: {
12
+ title,
13
+ version,
14
+ description: "Auto-generated by db-model-router CLI",
15
+ },
12
16
  paths: {},
13
17
  components: { schemas: {} },
14
18
  };
@@ -143,7 +143,7 @@ async function main() {
143
143
  if (!dbType) {
144
144
  console.error(
145
145
  `Error: No models found in "${modelsDir}" and no --type provided to generate them.\n` +
146
- `Either generate models first with rest-router-generate-model, or provide --type to auto-generate.`,
146
+ `Either generate models first with db-model-router-generate-model, or provide --type to auto-generate.`,
147
147
  );
148
148
  process.exit(1);
149
149
  }
@@ -302,7 +302,7 @@ function parseArgs(argv) {
302
302
 
303
303
  function printUsage() {
304
304
  console.log(`
305
- Usage: rest-router-generate-route [options]
305
+ Usage: db-model-router-generate-route [options]
306
306
 
307
307
  Options:
308
308
  --models Path to models directory (default: ./models)
@@ -320,13 +320,13 @@ Options:
320
320
 
321
321
  Examples:
322
322
  # Generate routes from existing models
323
- rest-router-generate-route --models ./models --output ./routes
323
+ db-model-router-generate-route --models ./models --output ./routes
324
324
 
325
325
  # Auto-generate models + routes in one step
326
- rest-router-generate-route --type mysql --env .env --models ./models --output ./routes
326
+ db-model-router-generate-route --type mysql --env .env --models ./models --output ./routes
327
327
 
328
328
  # SQLite3 example
329
- rest-router-generate-route --type sqlite3 --database ./myapp.db
329
+ db-model-router-generate-route --type sqlite3 --database ./myapp.db
330
330
  `);
331
331
  }
332
332
 
package/src/serve.js CHANGED
@@ -6,13 +6,8 @@ try {
6
6
  express = require("express");
7
7
  }
8
8
  const app = express();
9
- const bodyParser = require("body-parser");
10
- app.use(bodyParser.json({ limit: "128mb" }));
11
- app.use(
12
- bodyParser.urlencoded({
13
- extended: true,
14
- }),
15
- );
9
+ app.use(express.json({ limit: "128mb" }));
10
+ app.use(express.urlencoded({ extended: true }));
16
11
  app.use((err, req, res, next) => {
17
12
  if (err instanceof SyntaxError && err.status === 400 && "body" in err) {
18
13
  return res.status(400).send(err); // Bad request