Skip to content

Commit 057da9a

Browse files
committed
simplify sql queries
1 parent fac9171 commit 057da9a

File tree

4 files changed

+121
-87
lines changed

4 files changed

+121
-87
lines changed

src/core/repositories/GraphRepository.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,15 @@ export default class GraphRepository {
1212
const result = await knex
1313
.from(table)
1414
.count(GraphDBModel.fullName('id'))
15-
.where(GraphDBModel.fullName('name'), knex.raw('?', name))
15+
.where(GraphDBModel.fullName('name'), name)
1616
.first<{ count: number }>()
1717

1818
return result.count > 0
1919
}
2020
findFirst({ name }: { name: string }) {
2121
const knex = this.#knex
2222
const table = GraphDBModel.table
23-
return knex
24-
.from(table)
25-
.where(GraphDBModel.fullName('name'), knex.raw('?', name))
26-
.first<GraphDBModel>()
23+
return knex.from(table).where(GraphDBModel.fullName('name'), name).first<GraphDBModel>()
2724
}
2825
async create(entity: Omit<GraphDBModel, 'id' | 'createdAt'>) {
2926
const knex = this.#knex

src/core/repositories/SchemaRepository.ts

Lines changed: 64 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,10 @@ export default class SchemaRepository {
1515
const table = SchemaDBModel.table
1616
return knex
1717
.from(table)
18-
.where(`${SchemaDBModel.fullName('isActive')}`, knex.raw('?', true))
19-
.where(`${SchemaDBModel.fullName('id')}`, knex.raw('?', id))
18+
.where({
19+
[SchemaDBModel.fullName('isActive')]: true,
20+
[SchemaDBModel.fullName('id')]: id,
21+
})
2022
.first<SchemaDBModel>()
2123
}
2224
findFirst({
@@ -32,17 +34,20 @@ export default class SchemaRepository {
3234
const table = SchemaDBModel.table
3335
return knex
3436
.from(table)
35-
.join(`${GraphDBModel.table}`, function () {
36-
this.on(`${SchemaDBModel.fullName('graphId')}`, '=', `${GraphDBModel.fullName('id')}`)
37-
.andOn(`${GraphDBModel.fullName('isActive')}`, '=', knex.raw('?', true))
38-
.andOn(`${GraphDBModel.fullName('name')}`, '=', knex.raw('?', graphName))
39-
})
40-
.join(`${ServiceDBModel.table}`, function () {
41-
this.on(`${SchemaDBModel.fullName('serviceId')}`, '=', `${ServiceDBModel.fullName('id')}`)
42-
.andOn(`${ServiceDBModel.fullName('isActive')}`, '=', knex.raw('?', true))
43-
.andOn(`${ServiceDBModel.fullName('name')}`, '=', knex.raw('?', serviceName))
37+
.join(GraphDBModel.table, SchemaDBModel.fullName('graphId'), '=', GraphDBModel.fullName('id'))
38+
.join(
39+
ServiceDBModel.table,
40+
SchemaDBModel.fullName('serviceId'),
41+
'=',
42+
ServiceDBModel.fullName('id'),
43+
)
44+
.where({
45+
[GraphDBModel.fullName('isActive')]: true,
46+
[GraphDBModel.fullName('name')]: graphName,
47+
[ServiceDBModel.fullName('isActive')]: true,
48+
[ServiceDBModel.fullName('name')]: serviceName,
49+
[SchemaDBModel.fullName('typeDefs')]: typeDefs,
4450
})
45-
.where(`${SchemaDBModel.fullName('typeDefs')}`, knex.raw('?', typeDefs))
4651
.select(`${table}.*`)
4752
.first<SchemaDBModel>()
4853
}
@@ -52,31 +57,34 @@ export default class SchemaRepository {
5257
return knex
5358
.from(table)
5459
.select([
55-
`${SchemaDBModel.fullName('id')}`,
56-
`${SchemaDBModel.fullName('typeDefs')}`,
57-
`${SchemaTagDBModel.fullName('version')}`,
60+
SchemaDBModel.fullName('id'),
61+
SchemaDBModel.fullName('typeDefs'),
62+
SchemaTagDBModel.fullName('version'),
5863
])
59-
.join(`${GraphDBModel.table}`, function () {
60-
this.on(`${SchemaDBModel.fullName('graphId')}`, '=', `${GraphDBModel.fullName('id')}`)
61-
.andOn(`${GraphDBModel.fullName('isActive')}`, '=', knex.raw('?', true))
62-
.andOn(`${GraphDBModel.fullName('name')}`, '=', knex.raw('?', graphName))
63-
})
64-
.join(`${ServiceDBModel.table}`, function () {
65-
this.on(`${SchemaDBModel.fullName('serviceId')}`, '=', `${ServiceDBModel.fullName('id')}`)
66-
.andOn(`${ServiceDBModel.fullName('isActive')}`, '=', knex.raw('?', true))
67-
.andOn(`${ServiceDBModel.fullName('name')}`, '=', knex.raw('?', serviceName))
64+
.join(GraphDBModel.table, SchemaDBModel.fullName('graphId'), '=', GraphDBModel.fullName('id'))
65+
.join(
66+
ServiceDBModel.table,
67+
SchemaDBModel.fullName('serviceId'),
68+
'=',
69+
ServiceDBModel.fullName('id'),
70+
)
71+
.join(
72+
SchemaTagDBModel.table,
73+
SchemaDBModel.fullName('id'),
74+
'=',
75+
SchemaTagDBModel.fullName('schemaId'),
76+
)
77+
.where({
78+
[GraphDBModel.fullName('isActive')]: true,
79+
[GraphDBModel.fullName('name')]: graphName,
80+
[ServiceDBModel.fullName('isActive')]: true,
81+
[ServiceDBModel.fullName('name')]: serviceName,
82+
[SchemaTagDBModel.fullName('isActive')]: true,
83+
[SchemaDBModel.fullName('isActive')]: true,
6884
})
69-
.join(`${SchemaTagDBModel.table}`, function () {
70-
this.on(
71-
`${SchemaDBModel.fullName('id')}`,
72-
'=',
73-
`${SchemaTagDBModel.fullName('schemaId')}`,
74-
).andOn(`${SchemaTagDBModel.fullName('isActive')}`, '=', knex.raw('?', true))
75-
})
76-
.where(`${SchemaDBModel.fullName('isActive')}`, knex.raw('?', true))
7785
.orderBy([
78-
{ column: `${SchemaDBModel.fullName('updatedAt')}`, order: 'desc' },
79-
{ column: `${SchemaTagDBModel.fullName('createdAt')}`, order: 'desc' },
86+
{ column: SchemaDBModel.fullName('updatedAt'), order: 'desc' },
87+
{ column: SchemaTagDBModel.fullName('createdAt'), order: 'desc' },
8088
])
8189
.first<LastUpdatedSchema>()
8290
}
@@ -93,22 +101,28 @@ export default class SchemaRepository {
93101
const table = SchemaDBModel.table
94102
return knex
95103
.from(table)
96-
.join(`${GraphDBModel.table}`, function () {
97-
this.on(`${SchemaDBModel.fullName('graphId')}`, '=', `${GraphDBModel.fullName('id')}`)
98-
.andOn(`${GraphDBModel.fullName('isActive')}`, '=', knex.raw('?', true))
99-
.andOn(`${GraphDBModel.fullName('name')}`, '=', knex.raw('?', graphName))
100-
})
101-
.join(`${ServiceDBModel.table}`, function () {
102-
this.on(`${SchemaDBModel.fullName('serviceId')}`, '=', `${ServiceDBModel.fullName('id')}`)
103-
.andOn(`${ServiceDBModel.fullName('isActive')}`, '=', knex.raw('?', true))
104-
.andOn(`${ServiceDBModel.fullName('name')}`, '=', knex.raw('?', serviceName))
105-
})
106-
.join(`${SchemaTagDBModel.table}`, function () {
107-
this.on(`${SchemaDBModel.fullName('id')}`, '=', `${SchemaTagDBModel.fullName('schemaId')}`)
108-
.andOn(`${SchemaTagDBModel.table}.isActive`, '=', knex.raw('?', true))
109-
.andOn(`${SchemaTagDBModel.table}.version`, '=', knex.raw('?', version))
104+
.join(GraphDBModel.table, SchemaDBModel.fullName('graphId'), '=', GraphDBModel.fullName('id'))
105+
.join(
106+
ServiceDBModel.table,
107+
SchemaDBModel.fullName('serviceId'),
108+
'=',
109+
ServiceDBModel.fullName('id'),
110+
)
111+
.join(
112+
SchemaTagDBModel.table,
113+
SchemaDBModel.fullName('id'),
114+
'=',
115+
SchemaTagDBModel.fullName('schemaId'),
116+
)
117+
.where({
118+
[GraphDBModel.fullName('isActive')]: true,
119+
[GraphDBModel.fullName('name')]: graphName,
120+
[ServiceDBModel.fullName('isActive')]: true,
121+
[ServiceDBModel.fullName('name')]: serviceName,
122+
[SchemaDBModel.fullName('isActive')]: true,
123+
[SchemaTagDBModel.fullName('isActive')]: true,
124+
[SchemaTagDBModel.fullName('version')]: version,
110125
})
111-
.where(`${SchemaDBModel.fullName('isActive')}`, knex.raw('?', true))
112126
.select(`${table}.*`)
113127
.first<SchemaDBModel>()
114128
}
@@ -130,7 +144,7 @@ export default class SchemaRepository {
130144
const table = SchemaDBModel.table
131145
return knex(table)
132146
.update(entity)
133-
.where(`${SchemaDBModel.fullName('id')}`, '=', schemaId)
147+
.where(SchemaDBModel.fullName('id'), '=', schemaId)
134148
.returning<SchemaDBModel[]>('*')
135149
}
136150
async deleteByGraphId(graphId: number) {

src/core/repositories/SchemaTagRepository.ts

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,17 @@ export default class SchemaTagRepository {
1212
const table = SchemaTagDBModel.table
1313
return knex
1414
.from(table)
15-
.join(`${SchemaDBModel.table}`, function () {
16-
this.on(`${SchemaTagDBModel.fullName('schemaId')}`, '=', knex.raw('?', schemaId)).andOn(
17-
`${SchemaDBModel.fullName('isActive')}`,
18-
'=',
19-
knex.raw('?', true),
20-
)
15+
.join(
16+
SchemaDBModel.table,
17+
SchemaTagDBModel.fullName('schemaId'),
18+
'=',
19+
SchemaDBModel.fullName('id'),
20+
)
21+
.where({
22+
[SchemaDBModel.fullName('id')]: schemaId,
23+
[SchemaDBModel.fullName('isActive')]: true,
24+
[SchemaTagDBModel.fullName('version')]: version,
2125
})
22-
.where(`${SchemaTagDBModel.fullName('version')}`, knex.raw('?', version))
2326
.select(`${table}.*`)
2427
.first<SchemaTagDBModel>()
2528
}

src/core/repositories/ServiceRepository.ts

Lines changed: 45 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,17 @@ export default class ServiceRepository {
1212
const table = ServiceDBModel.table
1313
return knex
1414
.from(table)
15-
.join(`${GraphDBModel.table}`, function () {
16-
this.on(`${table}.graphId`, '=', `${GraphDBModel.fullName('id')}`)
17-
.andOn(`${GraphDBModel.fullName('isActive')}`, '=', knex.raw('?', true))
18-
.andOn(`${GraphDBModel.fullName('name')}`, '=', knex.raw('?', graphName))
15+
.join(
16+
GraphDBModel.table,
17+
ServiceDBModel.fullName('graphId'),
18+
'=',
19+
GraphDBModel.fullName('id'),
20+
)
21+
.where({
22+
[GraphDBModel.fullName('isActive')]: true,
23+
[GraphDBModel.fullName('name')]: graphName,
24+
[ServiceDBModel.fullName('name')]: name,
1925
})
20-
.where(`${ServiceDBModel.fullName('name')}`, knex.raw('?', name))
2126
.select(`${table}.*`)
2227
.first<ServiceDBModel>()
2328
}
@@ -30,14 +35,19 @@ export default class ServiceRepository {
3035
return knex
3136
.from(table)
3237
.select([`${table}.*`])
33-
.join(`${GraphDBModel.table}`, function () {
34-
this.on(`${ServiceDBModel.fullName('graphId')}`, '=', `${GraphDBModel.fullName('id')}`)
35-
.andOn(`${GraphDBModel.fullName('isActive')}`, '=', knex.raw('?', true))
36-
.andOn(`${GraphDBModel.fullName('name')}`, '=', knex.raw('?', graphName))
38+
.join(
39+
GraphDBModel.table,
40+
ServiceDBModel.fullName('graphId'),
41+
'=',
42+
GraphDBModel.fullName('id'),
43+
)
44+
.where({
45+
[GraphDBModel.fullName('isActive')]: true,
46+
[GraphDBModel.fullName('name')]: graphName,
47+
[ServiceDBModel.fullName('isActive')]: true,
3748
})
38-
.where(`${ServiceDBModel.fullName('isActive')}`, knex.raw('?', true))
39-
.whereIn(`${ServiceDBModel.fullName('name')}`, serviceNames)
40-
.orderBy(`${ServiceDBModel.fullName('updatedAt')}`, 'desc')
49+
.whereIn(ServiceDBModel.fullName('name'), serviceNames)
50+
.orderBy(ServiceDBModel.fullName('updatedAt'), 'desc')
4151
}
4252
findManyExceptWithName(
4353
{ graphName }: { graphName: string },
@@ -48,28 +58,38 @@ export default class ServiceRepository {
4858
return knex
4959
.from<ServiceDBModel>(table)
5060
.select([`${table}.*`])
51-
.join(`${GraphDBModel.table}`, function () {
52-
this.on(`${ServiceDBModel.fullName('graphId')}`, '=', `${GraphDBModel.table}.id`)
53-
.andOn(`${GraphDBModel.fullName('isActive')}`, '=', knex.raw('?', true))
54-
.andOn(`${GraphDBModel.fullName('name')}`, '=', knex.raw('?', graphName))
61+
.join(
62+
GraphDBModel.table,
63+
ServiceDBModel.fullName('graphId'),
64+
'=',
65+
GraphDBModel.fullName('id'),
66+
)
67+
.where({
68+
[GraphDBModel.fullName('isActive')]: true,
69+
[GraphDBModel.fullName('name')]: graphName,
70+
[ServiceDBModel.fullName('isActive')]: true,
5571
})
56-
.where(`${ServiceDBModel.fullName('isActive')}`, knex.raw('?', true))
57-
.whereNot(`${ServiceDBModel.fullName('name')}`, exceptService)
58-
.orderBy(`${ServiceDBModel.fullName('updatedAt')}`, 'desc')
72+
.whereNot(ServiceDBModel.fullName('name'), exceptService)
73+
.orderBy(ServiceDBModel.fullName('updatedAt'), 'desc')
5974
}
6075
findMany({ graphName }: { graphName: string }): Promise<ServiceDBModel[]> {
6176
const knex = this.#knex
6277
const table = ServiceDBModel.table
6378
return knex
6479
.from(table)
6580
.select([`${table}.*`])
66-
.join(`${GraphDBModel.table}`, function () {
67-
this.on(`${ServiceDBModel.fullName('graphId')}`, '=', `${GraphDBModel.fullName('id')}`)
68-
.andOn(`${GraphDBModel.fullName('isActive')}`, '=', knex.raw('?', true))
69-
.andOn(`${GraphDBModel.fullName('name')}`, '=', knex.raw('?', graphName))
81+
.join(
82+
GraphDBModel.table,
83+
ServiceDBModel.fullName('graphId'),
84+
'=',
85+
GraphDBModel.fullName('id'),
86+
)
87+
.where({
88+
[GraphDBModel.fullName('isActive')]: true,
89+
[GraphDBModel.fullName('name')]: graphName,
90+
[ServiceDBModel.fullName('isActive')]: true,
7091
})
71-
.where(`${ServiceDBModel.fullName('isActive')}`, knex.raw('?', true))
72-
.orderBy(`${ServiceDBModel.fullName('updatedAt')}`, 'desc')
92+
.orderBy(ServiceDBModel.fullName('updatedAt'), 'desc')
7393
}
7494
async create(entity: Omit<ServiceDBModel, 'id' | 'createdAt'>) {
7595
const knex = this.#knex

0 commit comments

Comments
 (0)