Skip to content

Commit 969e445

Browse files
authored
Merge pull request #42 from euduardo/master
feat(feat(repository): adds support to identify entity ids automaticallyrepository): adds support to identify entity ids automatically
2 parents 188334c + b8ee545 commit 969e445

31 files changed

+1112
-1085
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
[![CI build](https://github.com/herbsjs/herbs2knex/actions/workflows/on_push.yml/badge.svg?branch=master)](https://github.com/herbsjs/herbs2knex/actions/workflows/on_push.yml)
1+
[![CI build](https://github.com/herbsjs/herbs2knex/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/herbsjs/herbs2knex/actions/workflows/ci.yml)
22
[![codecov](https://codecov.io/gh/herbsjs/herbs2knex/branch/master/graph/badge.svg)](https://codecov.io/gh/herbsjs/herbs2knex)
33

44
# herbs2knex

package-lock.json

Lines changed: 907 additions & 942 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,12 +55,8 @@
5555
"dotenv": "^12.0.3",
5656
"eslint": "^8.6.0",
5757
"eslint-config-prettier": "^8.3.0",
58-
"eslint-config-standard": "^16.0.3",
5958
"eslint-plugin-import": "^2.25.4",
60-
"eslint-plugin-node": "^11.1.0",
6159
"eslint-plugin-prettier": "^4.0.0",
62-
"eslint-plugin-promise": "^6.0.0",
63-
"eslint-plugin-standard": "^4.1.0",
6460
"lodash": "^4.17.21",
6561
"mocha": "^9.1.4",
6662
"mssql": "^7.3.0",

src/repository.js

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
const Convention = require('./convention')
22
const DataMapper = require('./dataMapper')
33
const { checker } = require('@herbsjs/suma')
4+
const { BaseEntity } = require("@herbsjs/gotu/src/baseEntity")
45

56
module.exports = class Repository {
67
constructor(options) {
@@ -11,7 +12,7 @@ module.exports = class Repository {
1112
? `${this.schema}.${this.table}`
1213
: `${this.table}`
1314
this.entity = options.entity
14-
this.entityIDs = options.ids
15+
this.entityIDs = this.#getEntityIds(options)
1516
this.foreignKeys = options.foreignKeys
1617
this.knex = options.knex
1718
this.dataMapper = new DataMapper(
@@ -232,6 +233,17 @@ module.exports = class Repository {
232233
return ret === 1
233234
}
234235

236+
#getEntityIds({ entity, ids }) {
237+
if (ids) return ids
235238

239+
if (entity && entity.prototype instanceof BaseEntity) {
240+
const fields = Object.values(entity.prototype.meta.schema)
241+
const idFields = fields.filter(({ options }) => options.isId)
242+
const idFieldsNames = idFields.map(({ name }) => name)
236243

237-
}
244+
return idFieldsNames
245+
}
246+
247+
return []
248+
}
249+
}

test/integration/mssql/delete.test.js

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
const { entity, field } = require('@herbsjs/gotu')
2-
const Repository = require('../../src/repository')
1+
const { entity, field, id } = require('@herbsjs/gotu')
2+
const Repository = require('../../../src/repository')
33
const db = require('./db')
44
const connection = require('../connection')
55
const assert = require('assert')
@@ -61,7 +61,7 @@ describe('Delete an Entity', () => {
6161

6262
const givenAnEntity = () => {
6363
return entity('A entity', {
64-
id: field(Number),
64+
id: id(Number),
6565
stringTest: field(String),
6666
booleanTest: field(Boolean)
6767
})
@@ -84,7 +84,6 @@ describe('Delete an Entity', () => {
8484
entity: anEntity,
8585
table,
8686
database,
87-
ids: ['id'],
8887
knex: connection
8988
})
9089
const aModifiedInstance = givenAnModifiedEntity()

test/integration/mssql/find.test.js

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
const { entity, field } = require('@herbsjs/gotu')
2-
const Repository = require('../../src/repository')
1+
const { entity, field, id } = require('@herbsjs/gotu')
2+
const Repository = require('../../../src/repository')
33
const db = require('./db')
44
const connection = require('../connection')
55
const assert = require('assert')
@@ -55,7 +55,7 @@ describe('Query Find', () => {
5555

5656
const givenAnEntity = () => {
5757
return entity('A entity', {
58-
id: field(Number),
58+
id: id(Number),
5959
stringTest: field(String),
6060
booleanTest: field(Boolean)
6161
})
@@ -68,7 +68,6 @@ describe('Query Find', () => {
6868
entity: anEntity,
6969
table,
7070
database,
71-
ids: ['id'],
7271
knex: connection
7372
})
7473
const injection = {}

test/integration/mssql/findByID.test.js

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
const { entity, field } = require('@herbsjs/gotu')
2-
const Repository = require('../../src/repository')
1+
const { entity, field, id } = require('@herbsjs/gotu')
2+
const Repository = require('../../../src/repository')
33
const db = require('./db')
44
const connection = require('../connection')
55
const assert = require('assert')
@@ -56,7 +56,7 @@ describe('Query Find by ID', () => {
5656

5757
const givenAnEntity = () => {
5858
return entity('A entity', {
59-
id: field(Number),
59+
id: id(Number),
6060
stringTest: field(String),
6161
booleanTest: field(Boolean)
6262
})
@@ -69,7 +69,6 @@ describe('Query Find by ID', () => {
6969
entity: anEntity,
7070
table,
7171
database,
72-
ids: ['id'],
7372
knex: connection
7473
})
7574
const injection = {}

test/integration/mssql/first.test.js

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
const { entity, field } = require('@herbsjs/gotu')
2-
const Repository = require('../../src/repository')
1+
const { entity, field, id } = require('@herbsjs/gotu')
2+
const Repository = require('../../../src/repository')
33
const db = require('./db')
44
const connection = require('../connection')
55
const assert = require('assert')
@@ -55,7 +55,7 @@ describe('Query First', () => {
5555

5656
const givenAnEntity = () => {
5757
return entity('A entity', {
58-
id: field(Number),
58+
id: id(Number),
5959
stringTest: field(String),
6060
booleanTest: field(Boolean)
6161
})
@@ -68,7 +68,6 @@ describe('Query First', () => {
6868
entity: anEntity,
6969
table,
7070
database,
71-
ids: ['id'],
7271
knex: connection
7372
})
7473
const injection = {}
@@ -91,7 +90,6 @@ describe('Query First', () => {
9190
entity: anEntity,
9291
table,
9392
database,
94-
ids: ['id'],
9593
knex: connection
9694
})
9795
const injection = {}

test/integration/mssql/insert.test.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const { entity, field } = require('@herbsjs/gotu')
1+
const { entity, field, id } = require('@herbsjs/gotu')
22
const Repository = require('../../../src/repository')
33
const db = require('./db')
44
const connection = require('../connection')
@@ -57,7 +57,7 @@ describe('Persist Entity', () => {
5757

5858
const givenAnEntity = () => {
5959
return entity('A entity', {
60-
id: field(Number),
60+
id: id(Number),
6161
stringTest: field(String),
6262
booleanTest: field(Boolean)
6363
})
@@ -80,7 +80,6 @@ describe('Persist Entity', () => {
8080
entity: anEntity,
8181
table,
8282
database,
83-
ids: ['id'],
8483
knex: connection
8584
})
8685
const aModifiedInstance = givenAnModifiedEntity()

test/integration/mssql/update.test.js

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
const { entity, field } = require('@herbsjs/gotu')
2-
const Repository = require('../../src/repository')
1+
const { entity, field, id } = require('@herbsjs/gotu')
2+
const Repository = require('../../../src/repository')
33
const db = require('./db')
44
const connection = require('../connection')
55
const assert = require('assert')
@@ -61,7 +61,7 @@ describe('Persist Entity', () => {
6161

6262
const givenAnEntity = () => {
6363
return entity('A entity', {
64-
id: field(Number),
64+
id: id(Number),
6565
stringTest: field(String),
6666
booleanTest: field(Boolean)
6767
})
@@ -84,7 +84,6 @@ describe('Persist Entity', () => {
8484
entity: anEntity,
8585
table,
8686
database,
87-
ids: ['id'],
8887
knex: connection
8988
})
9089
const aModifiedInstance = givenAnModifiedEntity()

0 commit comments

Comments
 (0)