@things-factory/transport-base 8.0.0-beta.9 → 8.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/dist-server/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
- package/server/constants/index.ts +1 -0
- package/server/constants/transport.ts +10 -0
- package/server/controllers/index.ts +0 -0
- package/server/index.ts +3 -0
- package/server/middlewares/index.ts +0 -0
- package/server/migrations/index.ts +9 -0
- package/server/service/index.ts +25 -0
- package/server/service/transport-driver/index.ts +6 -0
- package/server/service/transport-driver/transport-driver-mutation.ts +161 -0
- package/server/service/transport-driver/transport-driver-query.ts +103 -0
- package/server/service/transport-driver/transport-driver-types.ts +75 -0
- package/server/service/transport-driver/transport-driver.ts +118 -0
- package/server/service/transport-vehicle/index.ts +6 -0
- package/server/service/transport-vehicle/transport-vehicle-mutation.ts +213 -0
- package/server/service/transport-vehicle/transport-vehicle-query.ts +96 -0
- package/server/service/transport-vehicle/transport-vehicle-types.ts +53 -0
- package/server/service/transport-vehicle/transport-vehicle.ts +111 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@things-factory/transport-base",
|
|
3
|
-
"version": "8.0.
|
|
3
|
+
"version": "8.0.2",
|
|
4
4
|
"main": "dist-server/index.js",
|
|
5
5
|
"browser": "client/index.js",
|
|
6
6
|
"things-factory": true,
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"migration:create": "node ../../node_modules/typeorm/cli.js migration:create ./server/migrations/migration"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@things-factory/biz-base": "^8.0.
|
|
27
|
+
"@things-factory/biz-base": "^8.0.2"
|
|
28
28
|
},
|
|
29
|
-
"gitHead": "
|
|
29
|
+
"gitHead": "39d60f56e142561233ddf6d47b539c637971357c"
|
|
30
30
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './transport'
|
|
File without changes
|
package/server/index.ts
ADDED
|
File without changes
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
const glob = require('glob')
|
|
2
|
+
const path = require('path')
|
|
3
|
+
|
|
4
|
+
export var migrations = []
|
|
5
|
+
|
|
6
|
+
glob.sync(path.resolve(__dirname, '.', '**', '*.js')).forEach(function(file) {
|
|
7
|
+
if (file.indexOf('index.js') !== -1) return
|
|
8
|
+
migrations = migrations.concat(Object.values(require(path.resolve(file))) || [])
|
|
9
|
+
})
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/* IMPORT ENTITIES AND RESOLVERS */
|
|
2
|
+
import { entities as TransportDriverEntity, resolvers as TransportDriverResolvers } from './transport-driver'
|
|
3
|
+
import { entities as TransportVehicleEntity, resolvers as TransportVehicleResolvers } from './transport-vehicle'
|
|
4
|
+
|
|
5
|
+
/* EXPORT ENTITY TYPES */
|
|
6
|
+
export * from './transport-driver/transport-driver'
|
|
7
|
+
export * from './transport-vehicle/transport-vehicle'
|
|
8
|
+
|
|
9
|
+
/* EXPORT TYPES */
|
|
10
|
+
export * from './transport-driver/transport-driver-types'
|
|
11
|
+
export * from './transport-vehicle/transport-vehicle-types'
|
|
12
|
+
|
|
13
|
+
export const entities = [
|
|
14
|
+
/* ENTITIES */
|
|
15
|
+
...TransportDriverEntity,
|
|
16
|
+
...TransportVehicleEntity
|
|
17
|
+
]
|
|
18
|
+
|
|
19
|
+
export const schema = {
|
|
20
|
+
resolverClasses: [
|
|
21
|
+
/* RESOLVER CLASSES */
|
|
22
|
+
...TransportDriverResolvers,
|
|
23
|
+
...TransportVehicleResolvers
|
|
24
|
+
]
|
|
25
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { TransportDriver } from './transport-driver'
|
|
2
|
+
import { TransportDriverMutation } from './transport-driver-mutation'
|
|
3
|
+
import { TransportDriverQuery } from './transport-driver-query'
|
|
4
|
+
|
|
5
|
+
export const entities = [TransportDriver]
|
|
6
|
+
export const resolvers = [TransportDriverQuery, TransportDriverMutation]
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import { Arg, Ctx, Directive, Mutation, Resolver } from 'type-graphql'
|
|
2
|
+
import { EntityManager, In, Repository } from 'typeorm'
|
|
3
|
+
|
|
4
|
+
import { User } from '@things-factory/auth-base'
|
|
5
|
+
import { Domain, getRepository } from '@things-factory/shell'
|
|
6
|
+
|
|
7
|
+
import { NewTransportDriver, TransportDriverPatch } from '../'
|
|
8
|
+
import { TransportDriver } from './transport-driver'
|
|
9
|
+
|
|
10
|
+
const debug = require('debug')('things-factory:operato-wms:addTransportDriver')
|
|
11
|
+
|
|
12
|
+
@Resolver(TransportDriver)
|
|
13
|
+
export class TransportDriverMutation {
|
|
14
|
+
@Directive('@privilege(category: "transport", privilege: "mutation")')
|
|
15
|
+
@Directive('@transaction')
|
|
16
|
+
@Mutation(returns => TransportDriver)
|
|
17
|
+
async createTransportDriver(
|
|
18
|
+
@Arg('transportDriver', type => NewTransportDriver) transportDriver: NewTransportDriver,
|
|
19
|
+
@Ctx() context: ResolverContext
|
|
20
|
+
): Promise<TransportDriver> {
|
|
21
|
+
const { tx, domain, user } = context.state
|
|
22
|
+
return await createTransportDriver(transportDriver, domain, user, tx)
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
@Directive('@privilege(category: "transport", privilege: "mutation")')
|
|
26
|
+
@Directive('@transaction')
|
|
27
|
+
@Mutation(returns => TransportDriver)
|
|
28
|
+
async updateTransportDriver(
|
|
29
|
+
@Arg('id') id: string,
|
|
30
|
+
@Arg('patch', type => TransportDriverPatch) patch: TransportDriverPatch,
|
|
31
|
+
@Ctx() context: ResolverContext
|
|
32
|
+
): Promise<TransportDriver> {
|
|
33
|
+
const { tx, domain, user } = context.state
|
|
34
|
+
|
|
35
|
+
return await updateTransportDriver(id, patch, domain, user, tx)
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
@Directive('@privilege(category: "transport", privilege: "mutation")')
|
|
39
|
+
@Directive('@transaction')
|
|
40
|
+
@Mutation(returns => Boolean)
|
|
41
|
+
async deleteTransportDriver(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<boolean> {
|
|
42
|
+
const { tx } = context.state
|
|
43
|
+
|
|
44
|
+
return await deleteTransportDriver(id, tx)
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
@Directive('@privilege(category: "transport", privilege: "mutation")')
|
|
48
|
+
@Directive('@transaction')
|
|
49
|
+
@Mutation(returns => Boolean)
|
|
50
|
+
async deleteTransportDrivers(
|
|
51
|
+
@Arg('ids', type => [String]) ids: string[],
|
|
52
|
+
@Ctx() context: ResolverContext
|
|
53
|
+
): Promise<boolean> {
|
|
54
|
+
return await deleteTransportDrivers(ids, context)
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
@Directive('@privilege(category: "transport", privilege: "mutation")')
|
|
58
|
+
@Directive('@transaction')
|
|
59
|
+
@Mutation(returns => [TransportDriver])
|
|
60
|
+
async updateMultipleTransportDriver(
|
|
61
|
+
@Arg('patches', type => [TransportDriverPatch]) patches: TransportDriverPatch[],
|
|
62
|
+
@Ctx() context: ResolverContext
|
|
63
|
+
): Promise<TransportDriver[]> {
|
|
64
|
+
const { tx, domain, user } = context.state
|
|
65
|
+
|
|
66
|
+
let results = []
|
|
67
|
+
const _createRecords = patches.filter((patch: any) => patch.cuFlag === '+')
|
|
68
|
+
const _updateRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === 'M')
|
|
69
|
+
|
|
70
|
+
if (_createRecords.length > 0) {
|
|
71
|
+
for (let i = 0; i < _createRecords.length; i++) {
|
|
72
|
+
const patch: TransportDriverPatch = _createRecords[i]
|
|
73
|
+
const result = await createTransportDriver(patch as NewTransportDriver, domain, user, tx)
|
|
74
|
+
results.push({ ...result, cuFlag: '+' })
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
if (_updateRecords.length > 0) {
|
|
79
|
+
for (let i = 0; i < _updateRecords.length; i++) {
|
|
80
|
+
const patch: TransportDriverPatch = _updateRecords[i]
|
|
81
|
+
const result = await updateTransportDriver(patch.id, patch, domain, user, tx)
|
|
82
|
+
results.push({ ...result, cuFlag: 'M' })
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
return results
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
export async function createTransportDriver(
|
|
91
|
+
transportDriver: NewTransportDriver,
|
|
92
|
+
domain: Domain,
|
|
93
|
+
user: User,
|
|
94
|
+
tx?: EntityManager
|
|
95
|
+
) {
|
|
96
|
+
const repository: Repository<TransportDriver> = tx
|
|
97
|
+
? tx.getRepository(TransportDriver)
|
|
98
|
+
: getRepository(TransportDriver)
|
|
99
|
+
|
|
100
|
+
const existingUsers: string[] = (
|
|
101
|
+
await tx.getRepository(TransportDriver).find({ where: { domain: { id: domain.id } }, relations: ['user'] })
|
|
102
|
+
).map(driver => driver.userId)
|
|
103
|
+
if (existingUsers.includes(transportDriver.userId)) throw new Error('driver user already exists')
|
|
104
|
+
|
|
105
|
+
const driverUser = await tx.getRepository(User).findOne({ where: { id: transportDriver.userId } })
|
|
106
|
+
|
|
107
|
+
return await repository.save({
|
|
108
|
+
...transportDriver,
|
|
109
|
+
user: driverUser,
|
|
110
|
+
domain,
|
|
111
|
+
creator: user,
|
|
112
|
+
updater: user
|
|
113
|
+
})
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
export async function updateTransportDriver(
|
|
117
|
+
id: string,
|
|
118
|
+
patch: TransportDriver | TransportDriverPatch,
|
|
119
|
+
domain: Domain,
|
|
120
|
+
user: User,
|
|
121
|
+
tx?: EntityManager
|
|
122
|
+
): Promise<TransportDriver> {
|
|
123
|
+
const repository: Repository<TransportDriver> = tx
|
|
124
|
+
? tx.getRepository(TransportDriver)
|
|
125
|
+
: getRepository(TransportDriver)
|
|
126
|
+
const transportDriver = await repository.findOne({
|
|
127
|
+
where: { domain: { id: domain.id }, id }
|
|
128
|
+
})
|
|
129
|
+
|
|
130
|
+
return await repository.save({
|
|
131
|
+
...transportDriver,
|
|
132
|
+
...patch,
|
|
133
|
+
updater: user
|
|
134
|
+
})
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
export async function deleteTransportDriver(id: string, tx?: EntityManager) {
|
|
138
|
+
const repository: Repository<TransportDriver> = tx
|
|
139
|
+
? tx.getRepository(TransportDriver)
|
|
140
|
+
: getRepository(TransportDriver)
|
|
141
|
+
await repository.delete(id)
|
|
142
|
+
return true
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
export async function deleteTransportDrivers(ids: string[], context: ResolverContext) {
|
|
146
|
+
const { tx, user } = context.state
|
|
147
|
+
|
|
148
|
+
const transportDrivers = await tx.getRepository(TransportDriver).find({ where: { id: In(ids) } })
|
|
149
|
+
|
|
150
|
+
let deletedTransportDrivers: TransportDriver[] = []
|
|
151
|
+
deletedTransportDrivers = await Promise.all(
|
|
152
|
+
transportDrivers.map((transportDriver: TransportDriver) => {
|
|
153
|
+
transportDriver.deletedAt = new Date()
|
|
154
|
+
transportDriver.updater = user
|
|
155
|
+
|
|
156
|
+
return transportDriver
|
|
157
|
+
})
|
|
158
|
+
)
|
|
159
|
+
await tx.getRepository(TransportDriver).save(deletedTransportDrivers)
|
|
160
|
+
return true
|
|
161
|
+
}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { Arg, Ctx, Directive, FieldResolver, Query, Resolver, Root } from 'type-graphql'
|
|
2
|
+
import { EntityManager, IsNull } from 'typeorm'
|
|
3
|
+
|
|
4
|
+
import { User } from '@things-factory/auth-base'
|
|
5
|
+
import { Bizplace } from '@things-factory/biz-base'
|
|
6
|
+
import { buildQuery, Domain, Filter, getRepository, Pagination, Sorting } from '@things-factory/shell'
|
|
7
|
+
|
|
8
|
+
import { TransportVehicle } from '../transport-vehicle/transport-vehicle'
|
|
9
|
+
import { TransportDriver } from './transport-driver'
|
|
10
|
+
import { TransportDriverList } from './transport-driver-types'
|
|
11
|
+
|
|
12
|
+
@Resolver(TransportDriver)
|
|
13
|
+
export class TransportDriverQuery {
|
|
14
|
+
@Directive('@transaction')
|
|
15
|
+
@Directive('@privilege(category: "transport", privilege: "query", domainOwnerGranted: true)')
|
|
16
|
+
@Query(returns => TransportDriverList)
|
|
17
|
+
async transportDrivers(
|
|
18
|
+
@Ctx() context: ResolverContext,
|
|
19
|
+
@Arg('filters', type => [Filter], { nullable: true }) filters?: Filter[],
|
|
20
|
+
@Arg('pagination', type => Pagination, { nullable: true }) pagination?: Pagination,
|
|
21
|
+
@Arg('sortings', type => [Sorting], { nullable: true }) sortings?: Sorting[]
|
|
22
|
+
): Promise<TransportDriverList> {
|
|
23
|
+
const { domain, tx } = context.state
|
|
24
|
+
|
|
25
|
+
const queryBuilder = tx.getRepository(TransportDriver).createQueryBuilder()
|
|
26
|
+
buildQuery(queryBuilder, { filters, pagination, sortings }, context, {
|
|
27
|
+
searchables: ['name', 'userEmail', 'driverCode', 'driverTelNo']
|
|
28
|
+
})
|
|
29
|
+
|
|
30
|
+
queryBuilder
|
|
31
|
+
.leftJoinAndSelect('TransportDriver.domain', 'Domain')
|
|
32
|
+
.leftJoinAndSelect('TransportDriver.creator', 'Creator')
|
|
33
|
+
.leftJoinAndSelect('TransportDriver.updater', 'Updater')
|
|
34
|
+
|
|
35
|
+
if (filters?.length > 0) {
|
|
36
|
+
queryBuilder.andWhere('Domain.id = :domainId', { domainId: domain.id }).andWhere('TransportDriver.deletedAt IS NULL')
|
|
37
|
+
} else {
|
|
38
|
+
queryBuilder.where('TransportDriver.deletedAt IS NULL').andWhere('Domain.id = :domainId', { domainId: domain.id })
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
const [items, total] = await queryBuilder.getManyAndCount()
|
|
42
|
+
|
|
43
|
+
return { items, total }
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
@Directive('@transaction')
|
|
47
|
+
@Directive('@privilege(category: "transport", privilege: "query", domainOwnerGranted: true)')
|
|
48
|
+
@Query(returns => TransportDriver)
|
|
49
|
+
async transportDriver(@Arg('driverCode') driverCode: string, @Ctx() context: ResolverContext): Promise<TransportDriver> {
|
|
50
|
+
const { domain, tx } = context.state
|
|
51
|
+
|
|
52
|
+
return await tx.getRepository(TransportDriver).findOne({
|
|
53
|
+
where: { domain: { id: domain.id }, driverCode, deletedAt: IsNull() }
|
|
54
|
+
})
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
@Directive('@transaction')
|
|
58
|
+
@Query(returns => TransportDriver)
|
|
59
|
+
async transportDriverByUser(@Ctx() context: ResolverContext): Promise<TransportDriver> {
|
|
60
|
+
const { domain, tx, user }: { domain: Domain; tx?: EntityManager; user: User } = context.state
|
|
61
|
+
|
|
62
|
+
const driver = await tx.getRepository(TransportDriver).findOne({
|
|
63
|
+
where: { domain: { id: domain.id }, user: { id: user.id } }
|
|
64
|
+
})
|
|
65
|
+
|
|
66
|
+
return driver
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
@FieldResolver(type => Domain)
|
|
70
|
+
async domain(@Root() transportDriver: TransportDriver): Promise<Domain> {
|
|
71
|
+
return await getRepository(Domain).findOneBy({ id: transportDriver.domainId })
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
@FieldResolver(type => User)
|
|
75
|
+
async user(@Root() transportDriver: TransportDriver): Promise<User> {
|
|
76
|
+
return await getRepository(User).findOneBy({ id: transportDriver.userId })
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
@FieldResolver(type => Bizplace)
|
|
80
|
+
async bizplace(@Root() transportDriver: TransportDriver): Promise<Bizplace> {
|
|
81
|
+
return await getRepository(Bizplace).findOneBy({ id: transportDriver.bizplaceId })
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
@FieldResolver(type => User)
|
|
85
|
+
async updater(@Root() transportDriver: TransportDriver): Promise<User> {
|
|
86
|
+
return await getRepository(User).findOneBy({ id: transportDriver.updaterId })
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
@FieldResolver(type => User)
|
|
90
|
+
async creator(@Root() transportDriver: TransportDriver): Promise<User> {
|
|
91
|
+
return await getRepository(User).findOneBy({ id: transportDriver.creatorId })
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
@FieldResolver(type => [TransportVehicle])
|
|
95
|
+
async transportVehicles(@Root() transportDriver: TransportDriver): Promise<TransportVehicle[]> {
|
|
96
|
+
return await (
|
|
97
|
+
await getRepository(TransportDriver).findOne({
|
|
98
|
+
where: { id: transportDriver.id },
|
|
99
|
+
relations: ['transportVehicles']
|
|
100
|
+
})
|
|
101
|
+
).transportVehicles
|
|
102
|
+
}
|
|
103
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { Field, InputType, Int, ObjectType } from 'type-graphql'
|
|
2
|
+
|
|
3
|
+
import { TransportDriver } from './transport-driver'
|
|
4
|
+
|
|
5
|
+
@ObjectType()
|
|
6
|
+
export class TransportDriverList {
|
|
7
|
+
@Field(type => [TransportDriver])
|
|
8
|
+
items: TransportDriver[]
|
|
9
|
+
|
|
10
|
+
@Field(type => Int)
|
|
11
|
+
total: number
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
@InputType()
|
|
15
|
+
export class NewTransportDriver {
|
|
16
|
+
@Field()
|
|
17
|
+
name: string
|
|
18
|
+
|
|
19
|
+
@Field({ nullable: true })
|
|
20
|
+
description?: string
|
|
21
|
+
|
|
22
|
+
@Field()
|
|
23
|
+
userId: string
|
|
24
|
+
|
|
25
|
+
@Field()
|
|
26
|
+
driverCode: string
|
|
27
|
+
|
|
28
|
+
@Field({ nullable: true })
|
|
29
|
+
driverTelNo?: string
|
|
30
|
+
|
|
31
|
+
@Field({ nullable: true })
|
|
32
|
+
licenseType?: string
|
|
33
|
+
|
|
34
|
+
@Field({ nullable: true })
|
|
35
|
+
licenseNo?: string
|
|
36
|
+
|
|
37
|
+
@Field({ nullable: true })
|
|
38
|
+
licContDate?: string
|
|
39
|
+
|
|
40
|
+
@Field({ nullable: true })
|
|
41
|
+
licExpiDate?: string
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
@InputType()
|
|
45
|
+
export class TransportDriverPatch {
|
|
46
|
+
@Field({ nullable: true })
|
|
47
|
+
id?: string
|
|
48
|
+
|
|
49
|
+
@Field({ nullable: true })
|
|
50
|
+
name?: string
|
|
51
|
+
|
|
52
|
+
@Field({ nullable: true })
|
|
53
|
+
description?: string
|
|
54
|
+
|
|
55
|
+
@Field({ nullable: true })
|
|
56
|
+
driverCode?: string
|
|
57
|
+
|
|
58
|
+
@Field({ nullable: true })
|
|
59
|
+
driverTelNo?: string
|
|
60
|
+
|
|
61
|
+
@Field({ nullable: true })
|
|
62
|
+
licenseType?: string
|
|
63
|
+
|
|
64
|
+
@Field({ nullable: true })
|
|
65
|
+
licenseNo?: string
|
|
66
|
+
|
|
67
|
+
@Field({ nullable: true })
|
|
68
|
+
licContDate?: string
|
|
69
|
+
|
|
70
|
+
@Field({ nullable: true })
|
|
71
|
+
licExpiDate?: string
|
|
72
|
+
|
|
73
|
+
@Field({ nullable: true })
|
|
74
|
+
cuFlag?: string
|
|
75
|
+
}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { Field, ID, ObjectType } from 'type-graphql'
|
|
2
|
+
import {
|
|
3
|
+
Column,
|
|
4
|
+
CreateDateColumn,
|
|
5
|
+
Entity,
|
|
6
|
+
Index,
|
|
7
|
+
JoinTable,
|
|
8
|
+
ManyToMany,
|
|
9
|
+
ManyToOne,
|
|
10
|
+
PrimaryGeneratedColumn,
|
|
11
|
+
RelationId,
|
|
12
|
+
UpdateDateColumn
|
|
13
|
+
} from 'typeorm'
|
|
14
|
+
|
|
15
|
+
import { User } from '@things-factory/auth-base'
|
|
16
|
+
import { Bizplace } from '@things-factory/biz-base'
|
|
17
|
+
import { Domain } from '@things-factory/shell'
|
|
18
|
+
|
|
19
|
+
import { TransportVehicle } from '../transport-vehicle/transport-vehicle'
|
|
20
|
+
|
|
21
|
+
@Entity()
|
|
22
|
+
@Index(
|
|
23
|
+
'ix_transport-driver_0',
|
|
24
|
+
(transportDriver: TransportDriver) => [transportDriver.domain, transportDriver.driverCode, transportDriver.id],
|
|
25
|
+
{
|
|
26
|
+
unique: true
|
|
27
|
+
}
|
|
28
|
+
)
|
|
29
|
+
@ObjectType()
|
|
30
|
+
export class TransportDriver {
|
|
31
|
+
@PrimaryGeneratedColumn('uuid')
|
|
32
|
+
@Field(type => ID)
|
|
33
|
+
readonly id: string
|
|
34
|
+
|
|
35
|
+
@ManyToOne(type => Domain)
|
|
36
|
+
@Field(type => Domain)
|
|
37
|
+
domain: Domain
|
|
38
|
+
|
|
39
|
+
@RelationId((transportDriver: TransportDriver) => transportDriver.domain)
|
|
40
|
+
domainId: string
|
|
41
|
+
|
|
42
|
+
@ManyToOne(type => Bizplace, { nullable: true })
|
|
43
|
+
@Field(type => Bizplace, { nullable: true })
|
|
44
|
+
bizplace?: Bizplace
|
|
45
|
+
|
|
46
|
+
@RelationId((transportDriver: TransportDriver) => transportDriver.bizplace)
|
|
47
|
+
bizplaceId?: string
|
|
48
|
+
|
|
49
|
+
@ManyToOne(type => User)
|
|
50
|
+
@Field(type => User)
|
|
51
|
+
user: User
|
|
52
|
+
|
|
53
|
+
@RelationId((transportDriver: TransportDriver) => transportDriver.user)
|
|
54
|
+
userId: string
|
|
55
|
+
|
|
56
|
+
@Column()
|
|
57
|
+
@Field()
|
|
58
|
+
name: string
|
|
59
|
+
|
|
60
|
+
@Column()
|
|
61
|
+
@Field()
|
|
62
|
+
driverCode: string
|
|
63
|
+
|
|
64
|
+
@ManyToMany(type => TransportVehicle, transportVehicle => transportVehicle.transportDrivers)
|
|
65
|
+
@JoinTable({ name: 'drivers_vehicles' })
|
|
66
|
+
@Field(type => [TransportVehicle], { nullable: true })
|
|
67
|
+
transportVehicles: TransportVehicle[]
|
|
68
|
+
|
|
69
|
+
@Column({ nullable: true })
|
|
70
|
+
@Field({ nullable: true })
|
|
71
|
+
driverTelNo: string
|
|
72
|
+
|
|
73
|
+
@Column({ nullable: true })
|
|
74
|
+
@Field({ nullable: true })
|
|
75
|
+
liceseType: string
|
|
76
|
+
|
|
77
|
+
@Column({ nullable: true })
|
|
78
|
+
@Field({ nullable: true })
|
|
79
|
+
licenseNo: string
|
|
80
|
+
|
|
81
|
+
@Column({ nullable: true })
|
|
82
|
+
@Field({ nullable: true })
|
|
83
|
+
licContDate: string
|
|
84
|
+
|
|
85
|
+
@Column({ nullable: true })
|
|
86
|
+
@Field({ nullable: true })
|
|
87
|
+
licExpiDate: string
|
|
88
|
+
|
|
89
|
+
@Column({ nullable: true })
|
|
90
|
+
@Field({ nullable: true })
|
|
91
|
+
description: string
|
|
92
|
+
|
|
93
|
+
@ManyToOne(type => User)
|
|
94
|
+
@Field(type => User, { nullable: true })
|
|
95
|
+
creator: User
|
|
96
|
+
|
|
97
|
+
@RelationId((transportDriver: TransportDriver) => transportDriver.creator)
|
|
98
|
+
creatorId: string
|
|
99
|
+
|
|
100
|
+
@ManyToOne(type => User)
|
|
101
|
+
@Field(type => User, { nullable: true })
|
|
102
|
+
updater: User
|
|
103
|
+
|
|
104
|
+
@RelationId((transportDriver: TransportDriver) => transportDriver.updater)
|
|
105
|
+
updaterId: string
|
|
106
|
+
|
|
107
|
+
@CreateDateColumn()
|
|
108
|
+
@Field()
|
|
109
|
+
createdAt: Date
|
|
110
|
+
|
|
111
|
+
@UpdateDateColumn()
|
|
112
|
+
@Field()
|
|
113
|
+
updatedAt: Date
|
|
114
|
+
|
|
115
|
+
@Column({ nullable: true })
|
|
116
|
+
@Field({ nullable: true })
|
|
117
|
+
deletedAt: Date
|
|
118
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { TransportVehicle } from './transport-vehicle'
|
|
2
|
+
import { TransportVehicleMutation } from './transport-vehicle-mutation'
|
|
3
|
+
import { TransportVehicleQuery } from './transport-vehicle-query'
|
|
4
|
+
|
|
5
|
+
export const entities = [TransportVehicle]
|
|
6
|
+
export const resolvers = [TransportVehicleQuery, TransportVehicleMutation]
|