Skip to content

Commit f1d7677

Browse files
bbruneautypicode
authored andcommitted
Allows for alternate foreign key attribute names, eg snake case (post_id). Defaults to 'Id' (typicode#556)
1 parent 02c3ea9 commit f1d7677

File tree

5 files changed

+17
-9
lines changed

5 files changed

+17
-9
lines changed

src/cli/index.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,11 @@ module.exports = function () {
6363
description: 'Set database id property (e.g. _id)',
6464
default: 'id'
6565
},
66+
foreignKeySuffix: {
67+
alias: 'f',
68+
description: 'Set foreign key suffix, (e.g. _id as in post_id)',
69+
default: 'Id'
70+
},
6671
quiet: {
6772
alias: 'q',
6873
description: 'Suppress log messages from output'

src/cli/run.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,8 @@ function createApp (source, object, routes, middlewares, argv) {
4242

4343
try {
4444
router = jsonServer.router(
45-
is.JSON(source)
46-
? source
47-
: object
45+
is.JSON(source) ? source : object,
46+
argv
4847
)
4948
} catch (e) {
5049
console.log()

src/server/router/index.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ const nested = require('./nested')
1111
const singular = require('./singular')
1212
const mixins = require('../mixins')
1313

14-
module.exports = (source) => {
14+
module.exports = (source, argv) => {
1515
// Create router
1616
const router = express.Router()
1717

@@ -60,7 +60,7 @@ module.exports = (source) => {
6060
}
6161

6262
if (_.isArray(value)) {
63-
router.use(`/${key}`, plural(db, key))
63+
router.use(`/${key}`, plural(db, key, argv))
6464
return
6565
}
6666

src/server/router/plural.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ const write = require('./write')
55
const getFullURL = require('./get-full-url')
66
const utils = require('../utils')
77

8-
module.exports = (db, name) => {
8+
module.exports = (db, name, argv) => {
99
// Create router
1010
const router = express.Router()
1111

@@ -16,7 +16,7 @@ module.exports = (db, name) => {
1616
if (db.get(externalResource).value) {
1717
const query = {}
1818
const singularResource = pluralize.singular(name)
19-
query[`${singularResource}Id`] = resource.id
19+
query[`${singularResource}${argv.foreignKeySuffix}`] = resource.id
2020
resource[externalResource] = db.get(externalResource).filter(query).value()
2121
}
2222
})
@@ -28,7 +28,7 @@ module.exports = (db, name) => {
2828
.forEach((innerResource) => {
2929
const plural = pluralize(innerResource)
3030
if (db.get(plural).value()) {
31-
const prop = `${innerResource}Id`
31+
const prop = `${innerResource}${argv.foreignKeySuffix}`
3232
resource[innerResource] = db.get(plural).getById(resource[prop]).value()
3333
}
3434
})

test/server/plural.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,10 @@ describe('Server', () => {
1515
'/articles?_id=:id': '/posts/:id'
1616
}
1717

18+
const defaultArgv = {
19+
foreignKeySuffix: 'Id'
20+
}
21+
1822
beforeEach(() => {
1923
db = {}
2024

@@ -92,7 +96,7 @@ describe('Server', () => {
9296
]
9397

9498
server = jsonServer.create()
95-
router = jsonServer.router(db)
99+
router = jsonServer.router(db, defaultArgv)
96100
server.use(jsonServer.defaults())
97101
server.use(jsonServer.rewriter(rewriterRules))
98102
server.use(router)

0 commit comments

Comments
 (0)