@things-factory/transport-base 8.0.0-beta.8 → 8.0.0
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
|
@@ -0,0 +1,213 @@
|
|
|
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 { NewTransportVehicle, TransportVehiclePatch } from '../'
|
|
8
|
+
import { TransportDriver } from '../transport-driver/transport-driver'
|
|
9
|
+
import { TransportVehicle } from './transport-vehicle'
|
|
10
|
+
|
|
11
|
+
const debug = require('debug')('things-factory:operato-wms:addTransportVehicle')
|
|
12
|
+
|
|
13
|
+
@Resolver(TransportVehicle)
|
|
14
|
+
export class TransportVehicleMutation {
|
|
15
|
+
@Directive('@transaction')
|
|
16
|
+
@Directive('@privilege(category: "transport", privilege: "mutation")')
|
|
17
|
+
@Mutation(returns => TransportVehicle)
|
|
18
|
+
async createTransportVehicle(
|
|
19
|
+
@Arg('transportVehicle', type => NewTransportVehicle) transportVehicle: NewTransportVehicle,
|
|
20
|
+
@Ctx() context: ResolverContext
|
|
21
|
+
): Promise<TransportVehicle> {
|
|
22
|
+
const { tx, domain, user } = context.state
|
|
23
|
+
|
|
24
|
+
return await createTransportVehicle(transportVehicle, domain, user, tx)
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
@Directive('@transaction')
|
|
28
|
+
@Directive('@privilege(category: "transport", privilege: "mutation")')
|
|
29
|
+
@Mutation(returns => [TransportVehicle])
|
|
30
|
+
async updateTransportVehicle(
|
|
31
|
+
@Arg('patch', type => TransportVehiclePatch) patch: TransportVehiclePatch,
|
|
32
|
+
@Ctx() context: ResolverContext
|
|
33
|
+
): Promise<TransportVehicle> {
|
|
34
|
+
const { tx, domain, user } = context.state
|
|
35
|
+
|
|
36
|
+
return await updateTransportVehicle(patch, domain, user, tx)
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
@Directive('@transaction')
|
|
40
|
+
@Directive('@privilege(category: "transport", privilege: "mutation")')
|
|
41
|
+
@Mutation(returns => [TransportVehicle])
|
|
42
|
+
async updateMultipleTransportVehicle(
|
|
43
|
+
@Arg('patches', type => [TransportVehiclePatch]) patches: TransportVehiclePatch[],
|
|
44
|
+
@Ctx() context: ResolverContext
|
|
45
|
+
): Promise<TransportVehicle[]> {
|
|
46
|
+
const { tx, domain, user } = context.state
|
|
47
|
+
|
|
48
|
+
let results = []
|
|
49
|
+
const _createRecords = patches.filter((patch: any) => patch.cuFlag === '+')
|
|
50
|
+
const _updateRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === 'M')
|
|
51
|
+
|
|
52
|
+
if (_createRecords.length > 0) {
|
|
53
|
+
for (let i = 0; i < _createRecords.length; i++) {
|
|
54
|
+
const patch: TransportVehiclePatch = _createRecords[i]
|
|
55
|
+
const result = await createTransportVehicle(patch, domain, user, tx)
|
|
56
|
+
results.push({ ...result, cuFlag: '+' })
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
if (_updateRecords.length > 0) {
|
|
61
|
+
for (let i = 0; i < _updateRecords.length; i++) {
|
|
62
|
+
const patch: TransportVehiclePatch = _updateRecords[i]
|
|
63
|
+
const result = await updateTransportVehicle(patch, domain, user, tx)
|
|
64
|
+
results.push({ ...result, cuFlag: 'M' })
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
return results
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
@Directive('@transaction')
|
|
72
|
+
@Directive('@privilege(category: "transport", privilege: "mutation")')
|
|
73
|
+
@Mutation(returns => Boolean)
|
|
74
|
+
async deleteTransportVehicle(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<boolean> {
|
|
75
|
+
const { tx } = context.state
|
|
76
|
+
|
|
77
|
+
return await deleteTransportVehicle(id, tx)
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
@Directive('@transaction')
|
|
81
|
+
@Directive('@privilege(category: "transport", privilege: "mutation")')
|
|
82
|
+
@Mutation(returns => Boolean)
|
|
83
|
+
async deleteTransportVehicles(
|
|
84
|
+
@Arg('ids', type => [String]) ids: string[],
|
|
85
|
+
@Ctx() context: ResolverContext
|
|
86
|
+
): Promise<boolean> {
|
|
87
|
+
return await deleteTransportVehicles(ids, context)
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
@Directive('@transaction')
|
|
91
|
+
@Directive('@privilege(category: "transport", privilege: "mutation")')
|
|
92
|
+
@Mutation(returns => TransportVehicle)
|
|
93
|
+
async addTransportVehicleDriver(
|
|
94
|
+
@Arg('id') id: string,
|
|
95
|
+
@Arg('driverId', type => String) driverId: string,
|
|
96
|
+
@Ctx() context: ResolverContext
|
|
97
|
+
): Promise<TransportVehicle> {
|
|
98
|
+
const { domain, user, tx } = context.state
|
|
99
|
+
const transportVehicleRepo = tx.getRepository(TransportVehicle)
|
|
100
|
+
const transportVehicle = await transportVehicleRepo.findOne({
|
|
101
|
+
where: { domain: { id: domain.id }, id },
|
|
102
|
+
relations: ['domain', 'transportDrivers']
|
|
103
|
+
})
|
|
104
|
+
|
|
105
|
+
if (!transportVehicle) throw new Error('Failed to find vehicle')
|
|
106
|
+
|
|
107
|
+
transportVehicle.transportDrivers = []
|
|
108
|
+
|
|
109
|
+
const newDriver = await tx
|
|
110
|
+
.getRepository(TransportDriver)
|
|
111
|
+
.findOne({ where: { id: driverId, domain: { id: domain.id } } })
|
|
112
|
+
if (!newDriver) throw new Error('driver not found')
|
|
113
|
+
|
|
114
|
+
transportVehicle.transportDrivers.push(newDriver)
|
|
115
|
+
|
|
116
|
+
return await transportVehicleRepo.save({
|
|
117
|
+
...transportVehicle,
|
|
118
|
+
updater: user
|
|
119
|
+
})
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
@Directive('@transaction')
|
|
123
|
+
@Directive('@privilege(category: "transport", privilege: "mutation")')
|
|
124
|
+
@Mutation(returns => TransportVehicle)
|
|
125
|
+
async deleteTransportVehicleDrivers(
|
|
126
|
+
@Arg('vehicleId') vehicleId: string,
|
|
127
|
+
@Arg('ids', type => [String]) ids: string[],
|
|
128
|
+
@Ctx() context: ResolverContext
|
|
129
|
+
): Promise<TransportVehicle> {
|
|
130
|
+
const { domain, user, tx } = context.state
|
|
131
|
+
const transportVehicleRepo = tx.getRepository(TransportVehicle)
|
|
132
|
+
const transportVehicle = await transportVehicleRepo.findOne({
|
|
133
|
+
where: { domain: { id: domain.id }, id: vehicleId },
|
|
134
|
+
relations: ['domain', 'transportDrivers']
|
|
135
|
+
})
|
|
136
|
+
|
|
137
|
+
if (!transportVehicle) throw new Error('Failed to find vehicle')
|
|
138
|
+
|
|
139
|
+
const existedDriverIds: string[] = transportVehicle.transportDrivers.map(transportDriver => transportDriver.id)
|
|
140
|
+
const newDriverIds: string[] = existedDriverIds.filter(existedDriverId => !ids.includes(existedDriverId))
|
|
141
|
+
|
|
142
|
+
return await transportVehicleRepo.save({
|
|
143
|
+
...transportVehicle,
|
|
144
|
+
transportDrivers: await getRepository(TransportDriver).findByIds(newDriverIds),
|
|
145
|
+
updater: user
|
|
146
|
+
})
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
export async function createTransportVehicle(
|
|
151
|
+
transportVehicle: TransportVehicle | NewTransportVehicle,
|
|
152
|
+
domain: Domain,
|
|
153
|
+
user: User,
|
|
154
|
+
tx?: EntityManager
|
|
155
|
+
) {
|
|
156
|
+
const repository: Repository<TransportVehicle> = tx
|
|
157
|
+
? tx.getRepository(TransportVehicle)
|
|
158
|
+
: getRepository(TransportVehicle)
|
|
159
|
+
return await repository.save({
|
|
160
|
+
...transportVehicle,
|
|
161
|
+
regNumber: transportVehicle.name,
|
|
162
|
+
domain,
|
|
163
|
+
creator: user,
|
|
164
|
+
updater: user
|
|
165
|
+
})
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
export async function updateTransportVehicle(
|
|
169
|
+
patch: TransportVehicle | TransportVehiclePatch,
|
|
170
|
+
domain: Domain,
|
|
171
|
+
user: User,
|
|
172
|
+
tx?: EntityManager
|
|
173
|
+
): Promise<TransportVehicle> {
|
|
174
|
+
const repository: Repository<TransportVehicle> = tx
|
|
175
|
+
? tx.getRepository(TransportVehicle)
|
|
176
|
+
: getRepository(TransportVehicle)
|
|
177
|
+
const transportVehicle = await repository.findOne({
|
|
178
|
+
where: { domain: { id: domain.id }, id: patch.id }
|
|
179
|
+
})
|
|
180
|
+
|
|
181
|
+
return await repository.save({
|
|
182
|
+
...transportVehicle,
|
|
183
|
+
...patch,
|
|
184
|
+
regNumber: patch.name,
|
|
185
|
+
updater: user
|
|
186
|
+
})
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
export async function deleteTransportVehicle(id: string, tx?: EntityManager) {
|
|
190
|
+
const repository: Repository<TransportVehicle> = tx
|
|
191
|
+
? tx.getRepository(TransportVehicle)
|
|
192
|
+
: getRepository(TransportVehicle)
|
|
193
|
+
await repository.delete(id)
|
|
194
|
+
return true
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
export async function deleteTransportVehicles(ids: string[], context: ResolverContext) {
|
|
198
|
+
const { tx, user } = context.state
|
|
199
|
+
|
|
200
|
+
const transportVehicles = await tx.getRepository(TransportVehicle).find({ where: { id: In(ids) } })
|
|
201
|
+
|
|
202
|
+
let deletedTransportVehicles: TransportVehicle[] = []
|
|
203
|
+
deletedTransportVehicles = await Promise.all(
|
|
204
|
+
transportVehicles.map((transportVehicle: TransportVehicle) => {
|
|
205
|
+
transportVehicle.deletedAt = new Date()
|
|
206
|
+
transportVehicle.updater = user
|
|
207
|
+
|
|
208
|
+
return transportVehicle
|
|
209
|
+
})
|
|
210
|
+
)
|
|
211
|
+
await tx.getRepository(TransportVehicle).save(deletedTransportVehicles)
|
|
212
|
+
return true
|
|
213
|
+
}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { Arg, Ctx, Directive, FieldResolver, Query, Resolver, Root } from 'type-graphql'
|
|
2
|
+
import { 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 { TransportVehicleList } from '../'
|
|
9
|
+
import { TransportDriver } from '../transport-driver/transport-driver'
|
|
10
|
+
import { TransportVehicle } from './transport-vehicle'
|
|
11
|
+
|
|
12
|
+
@Resolver(TransportVehicle)
|
|
13
|
+
export class TransportVehicleQuery {
|
|
14
|
+
@Directive('@transaction')
|
|
15
|
+
@Directive('@privilege(category: "transport", privilege: "query", domainOwnerGranted: true)')
|
|
16
|
+
@Query(returns => TransportVehicleList)
|
|
17
|
+
async transportVehicles(
|
|
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<TransportVehicleList> {
|
|
23
|
+
const { domain, tx } = context.state
|
|
24
|
+
|
|
25
|
+
const queryBuilder = tx.getRepository(TransportVehicle).createQueryBuilder()
|
|
26
|
+
buildQuery(queryBuilder, { filters, pagination, sortings }, context, {
|
|
27
|
+
searchables: ['name', 'description', 'size']
|
|
28
|
+
})
|
|
29
|
+
|
|
30
|
+
queryBuilder
|
|
31
|
+
.leftJoinAndSelect('TransportVehicle.domain', 'Domain')
|
|
32
|
+
.leftJoinAndSelect('TransportVehicle.creator', 'Creator')
|
|
33
|
+
.leftJoinAndSelect('TransportVehicle.updater', 'Updater')
|
|
34
|
+
|
|
35
|
+
if (filters?.length > 0) {
|
|
36
|
+
queryBuilder
|
|
37
|
+
.andWhere('Domain.id = :domainId', { domainId: domain.id })
|
|
38
|
+
.andWhere('TransportVehicle.deletedAt IS NULL')
|
|
39
|
+
} else {
|
|
40
|
+
queryBuilder
|
|
41
|
+
.where('TransportVehicle.deletedAt IS NULL')
|
|
42
|
+
.andWhere('Domain.id = :domainId', { domainId: domain.id })
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
const [items, total] = await queryBuilder.getManyAndCount()
|
|
46
|
+
|
|
47
|
+
return { items, total }
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
@Directive('@transaction')
|
|
51
|
+
@Directive('@privilege(category: "transport", privilege: "query", domainOwnerGranted: true)')
|
|
52
|
+
@Query(returns => TransportVehicle)
|
|
53
|
+
async transportVehicleById(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<TransportVehicle> {
|
|
54
|
+
const { domain, user, tx } = context.state
|
|
55
|
+
|
|
56
|
+
return await tx.getRepository(TransportVehicle).findOne({
|
|
57
|
+
where: {
|
|
58
|
+
id,
|
|
59
|
+
domain: { id: domain.id },
|
|
60
|
+
deletedAt: IsNull()
|
|
61
|
+
}
|
|
62
|
+
})
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
@FieldResolver(type => Domain)
|
|
66
|
+
async domain(@Root() transportVehicle: TransportVehicle): Promise<Domain> {
|
|
67
|
+
return await getRepository(Domain).findOneBy({ id: transportVehicle.domainId })
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
@FieldResolver(type => Bizplace)
|
|
71
|
+
async bizplace(@Root() transportVehicle: TransportVehicle): Promise<Bizplace> {
|
|
72
|
+
return await getRepository(Bizplace).findOneBy({ id: transportVehicle.bizplaceId })
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
@FieldResolver(type => User)
|
|
76
|
+
async updater(@Root() transportVehicle: TransportVehicle): Promise<User> {
|
|
77
|
+
return await getRepository(User).findOneBy({ id: transportVehicle.updaterId })
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
@FieldResolver(type => User)
|
|
81
|
+
async creator(@Root() transportVehicle: TransportVehicle): Promise<User> {
|
|
82
|
+
return await getRepository(User).findOneBy({ id: transportVehicle.creatorId })
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
@FieldResolver(type => [TransportDriver])
|
|
86
|
+
async transportDrivers(@Root() transportVehicle: TransportVehicle): Promise<TransportDriver[]> {
|
|
87
|
+
return await (
|
|
88
|
+
await getRepository(TransportVehicle).findOne({
|
|
89
|
+
where: {
|
|
90
|
+
id: transportVehicle.id
|
|
91
|
+
},
|
|
92
|
+
relations: ['transportDrivers']
|
|
93
|
+
})
|
|
94
|
+
).transportDrivers
|
|
95
|
+
}
|
|
96
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { Field, InputType, Int, ObjectType } from 'type-graphql'
|
|
2
|
+
import { TransportVehicle } from './transport-vehicle'
|
|
3
|
+
|
|
4
|
+
@ObjectType()
|
|
5
|
+
export class TransportVehicleList {
|
|
6
|
+
@Field(type => [TransportVehicle])
|
|
7
|
+
items: TransportVehicle[]
|
|
8
|
+
|
|
9
|
+
@Field(type => Int)
|
|
10
|
+
total: number
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
@InputType()
|
|
14
|
+
export class NewTransportVehicle {
|
|
15
|
+
@Field()
|
|
16
|
+
name: string
|
|
17
|
+
|
|
18
|
+
@Field()
|
|
19
|
+
regNumber: string
|
|
20
|
+
|
|
21
|
+
@Field()
|
|
22
|
+
size: string
|
|
23
|
+
|
|
24
|
+
@Field()
|
|
25
|
+
status: string
|
|
26
|
+
|
|
27
|
+
@Field({ nullable: true })
|
|
28
|
+
description: string
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
@InputType()
|
|
32
|
+
export class TransportVehiclePatch {
|
|
33
|
+
@Field({ nullable: true })
|
|
34
|
+
id: string
|
|
35
|
+
|
|
36
|
+
@Field({ nullable: true })
|
|
37
|
+
name: string
|
|
38
|
+
|
|
39
|
+
@Field({ nullable: true })
|
|
40
|
+
regNumber: string
|
|
41
|
+
|
|
42
|
+
@Field({ nullable: true })
|
|
43
|
+
size: string
|
|
44
|
+
|
|
45
|
+
@Field({ nullable: true })
|
|
46
|
+
status: string
|
|
47
|
+
|
|
48
|
+
@Field({ nullable: true })
|
|
49
|
+
description: string
|
|
50
|
+
|
|
51
|
+
@Field({ nullable: true })
|
|
52
|
+
cuFlag: string
|
|
53
|
+
}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { Field, ID, ObjectType } from 'type-graphql'
|
|
2
|
+
import {
|
|
3
|
+
Column,
|
|
4
|
+
CreateDateColumn,
|
|
5
|
+
Entity,
|
|
6
|
+
Index,
|
|
7
|
+
ManyToMany,
|
|
8
|
+
ManyToOne,
|
|
9
|
+
PrimaryGeneratedColumn,
|
|
10
|
+
RelationId,
|
|
11
|
+
UpdateDateColumn
|
|
12
|
+
} from 'typeorm'
|
|
13
|
+
|
|
14
|
+
import { User } from '@things-factory/auth-base'
|
|
15
|
+
import { Bizplace } from '@things-factory/biz-base'
|
|
16
|
+
import { Domain } from '@things-factory/shell'
|
|
17
|
+
|
|
18
|
+
import { TransportDriver } from '../transport-driver/transport-driver'
|
|
19
|
+
|
|
20
|
+
@Entity()
|
|
21
|
+
@Index(
|
|
22
|
+
'ix_transport-vehicle_0',
|
|
23
|
+
(transportVehicle: TransportVehicle) => [transportVehicle.domain, transportVehicle.name],
|
|
24
|
+
{ unique: true }
|
|
25
|
+
)
|
|
26
|
+
@ObjectType()
|
|
27
|
+
export class TransportVehicle {
|
|
28
|
+
@PrimaryGeneratedColumn('uuid')
|
|
29
|
+
@Field(type => ID)
|
|
30
|
+
readonly id: string
|
|
31
|
+
|
|
32
|
+
@ManyToOne(type => Domain, { nullable: false })
|
|
33
|
+
@Field(type => Domain)
|
|
34
|
+
domain: Domain
|
|
35
|
+
|
|
36
|
+
@RelationId((transportVehicle: TransportVehicle) => transportVehicle.domain)
|
|
37
|
+
domainId: string
|
|
38
|
+
|
|
39
|
+
@ManyToOne(type => Bizplace, { nullable: true })
|
|
40
|
+
@Field(type => Bizplace, { nullable: true })
|
|
41
|
+
bizplace?: Bizplace
|
|
42
|
+
|
|
43
|
+
@RelationId((transportVehicle: TransportVehicle) => transportVehicle.bizplace)
|
|
44
|
+
bizplaceId?: string
|
|
45
|
+
|
|
46
|
+
@Column()
|
|
47
|
+
@Field()
|
|
48
|
+
name: string
|
|
49
|
+
|
|
50
|
+
@ManyToMany(type => TransportDriver, transportDriver => transportDriver.transportVehicles)
|
|
51
|
+
@Field(type => [TransportDriver], { nullable: true })
|
|
52
|
+
transportDrivers: TransportDriver[]
|
|
53
|
+
|
|
54
|
+
@Column()
|
|
55
|
+
@Field()
|
|
56
|
+
regNumber: string
|
|
57
|
+
|
|
58
|
+
@Column({ comment: '1ton, 3ton, 5ton, 8ton, 10ton' })
|
|
59
|
+
@Field()
|
|
60
|
+
size: string
|
|
61
|
+
|
|
62
|
+
@Column()
|
|
63
|
+
@Field()
|
|
64
|
+
status: string
|
|
65
|
+
|
|
66
|
+
@Column({ nullable: true })
|
|
67
|
+
@Field({ nullable: true })
|
|
68
|
+
description: string
|
|
69
|
+
|
|
70
|
+
@Column({ nullable: true })
|
|
71
|
+
@Field({ nullable: true })
|
|
72
|
+
ownerType: string
|
|
73
|
+
|
|
74
|
+
@Column({ nullable: true })
|
|
75
|
+
@Field({ nullable: true })
|
|
76
|
+
serviceStartDate: Date
|
|
77
|
+
|
|
78
|
+
@Column({ nullable: true })
|
|
79
|
+
@Field({ nullable: true })
|
|
80
|
+
serviceEndDate: Date
|
|
81
|
+
|
|
82
|
+
@Column({ nullable: true })
|
|
83
|
+
@Field({ nullable: true })
|
|
84
|
+
isEnabled: boolean
|
|
85
|
+
|
|
86
|
+
@ManyToOne(type => User)
|
|
87
|
+
@Field(type => User, { nullable: true })
|
|
88
|
+
creator: User
|
|
89
|
+
|
|
90
|
+
@RelationId((transportVehicle: TransportVehicle) => transportVehicle.creator)
|
|
91
|
+
creatorId: string
|
|
92
|
+
|
|
93
|
+
@ManyToOne(type => User)
|
|
94
|
+
@Field(type => User, { nullable: true })
|
|
95
|
+
updater: User
|
|
96
|
+
|
|
97
|
+
@RelationId((transportVehicle: TransportVehicle) => transportVehicle.updater)
|
|
98
|
+
updaterId: string
|
|
99
|
+
|
|
100
|
+
@CreateDateColumn()
|
|
101
|
+
@Field()
|
|
102
|
+
createdAt: Date
|
|
103
|
+
|
|
104
|
+
@UpdateDateColumn()
|
|
105
|
+
@Field()
|
|
106
|
+
updatedAt: Date
|
|
107
|
+
|
|
108
|
+
@Column({ nullable: true })
|
|
109
|
+
@Field({ nullable: true })
|
|
110
|
+
deletedAt: Date
|
|
111
|
+
}
|