@things-factory/menu-base 8.0.0-beta.1 → 8.0.0-beta.4
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/package.json +3 -3
- package/server/index.ts +0 -1
- package/server/service/index.ts +0 -37
- package/server/service/menu/index.ts +0 -6
- package/server/service/menu/menu-mutation.ts +0 -244
- package/server/service/menu/menu-query.ts +0 -249
- package/server/service/menu/menu-type.ts +0 -78
- package/server/service/menu/menu.ts +0 -183
- package/server/service/menu-button/index.ts +0 -6
- package/server/service/menu-button/menu-button-mutation.ts +0 -142
- package/server/service/menu-button/menu-button-query.ts +0 -59
- package/server/service/menu-button/menu-button-type.ts +0 -31
- package/server/service/menu-button/menu-button.ts +0 -86
- package/server/service/menu-column/index.ts +0 -6
- package/server/service/menu-column/menu-column-mutation.ts +0 -143
- package/server/service/menu-column/menu-column-query.ts +0 -59
- package/server/service/menu-column/menu-column-type.ts +0 -92
- package/server/service/menu-column/menu-column.ts +0 -200
- package/server/service/menu-detail/index.ts +0 -6
- package/server/service/menu-detail/menu-detail-mutation.ts +0 -142
- package/server/service/menu-detail/menu-detail-query.ts +0 -75
- package/server/service/menu-detail/menu-detail-type.ts +0 -46
- package/server/service/menu-detail/menu-detail.ts +0 -111
- package/server/service/menu-detail-button/index.ts +0 -6
- package/server/service/menu-detail-button/menu-detail-button-mutation.ts +0 -143
- package/server/service/menu-detail-button/menu-detail-button-query.ts +0 -61
- package/server/service/menu-detail-button/menu-detail-button-type.ts +0 -34
- package/server/service/menu-detail-button/menu-detail-button.ts +0 -86
- package/server/service/menu-detail-column/index.ts +0 -6
- package/server/service/menu-detail-column/menu-detail-column-mutation.ts +0 -145
- package/server/service/menu-detail-column/menu-detail-column-query.ts +0 -61
- package/server/service/menu-detail-column/menu-detail-column-type.ts +0 -92
- package/server/service/menu-detail-column/menu-detail-column.ts +0 -205
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
import { Field, ID, ObjectType } from 'type-graphql'
|
|
2
|
-
import {
|
|
3
|
-
Column,
|
|
4
|
-
CreateDateColumn,
|
|
5
|
-
Entity,
|
|
6
|
-
Index,
|
|
7
|
-
JoinColumn,
|
|
8
|
-
ManyToOne,
|
|
9
|
-
OneToMany,
|
|
10
|
-
OneToOne,
|
|
11
|
-
PrimaryGeneratedColumn,
|
|
12
|
-
RelationId,
|
|
13
|
-
UpdateDateColumn
|
|
14
|
-
} from 'typeorm'
|
|
15
|
-
|
|
16
|
-
import { User } from '@things-factory/auth-base'
|
|
17
|
-
import { Domain } from '@things-factory/shell'
|
|
18
|
-
|
|
19
|
-
import { MenuDetailButton } from '../menu-detail-button/menu-detail-button'
|
|
20
|
-
import { MenuDetailColumn } from '../menu-detail-column/menu-detail-column'
|
|
21
|
-
import { Menu } from '../menu/menu'
|
|
22
|
-
|
|
23
|
-
@Entity()
|
|
24
|
-
@Index('ix_menu_detail_0', (menuDetail: MenuDetail) => [menuDetail.menu, menuDetail.name], { unique: true })
|
|
25
|
-
@ObjectType({ description: 'Entity for MenuDetail' })
|
|
26
|
-
export class MenuDetail {
|
|
27
|
-
@PrimaryGeneratedColumn('uuid')
|
|
28
|
-
@Field(type => ID)
|
|
29
|
-
readonly id: string
|
|
30
|
-
|
|
31
|
-
@ManyToOne(type => Domain)
|
|
32
|
-
@Field(type => Domain)
|
|
33
|
-
domain?: Domain
|
|
34
|
-
|
|
35
|
-
@RelationId((menuDetail: MenuDetail) => menuDetail.domain)
|
|
36
|
-
domainId?: string
|
|
37
|
-
|
|
38
|
-
@Column()
|
|
39
|
-
@Field()
|
|
40
|
-
name: string
|
|
41
|
-
|
|
42
|
-
@OneToOne(type => Menu)
|
|
43
|
-
@JoinColumn()
|
|
44
|
-
@Field(type => Menu, { nullable: true })
|
|
45
|
-
menu?: Menu
|
|
46
|
-
|
|
47
|
-
@RelationId((menuDetail: MenuDetail) => menuDetail.menu)
|
|
48
|
-
menuId?: string
|
|
49
|
-
|
|
50
|
-
@Column()
|
|
51
|
-
@Field({ nullable: true })
|
|
52
|
-
viewSection?: string
|
|
53
|
-
|
|
54
|
-
@Column({ nullable: true })
|
|
55
|
-
@Field({ nullable: true })
|
|
56
|
-
entityId?: string
|
|
57
|
-
|
|
58
|
-
@Column({ nullable: true })
|
|
59
|
-
@Field({ nullable: true })
|
|
60
|
-
dataProp?: string
|
|
61
|
-
|
|
62
|
-
@Column({ nullable: true })
|
|
63
|
-
@Field({ nullable: true })
|
|
64
|
-
association?: string
|
|
65
|
-
|
|
66
|
-
@Column({ nullable: true })
|
|
67
|
-
@Field({ nullable: true })
|
|
68
|
-
searchUrl?: string
|
|
69
|
-
|
|
70
|
-
@Column({ nullable: true })
|
|
71
|
-
@Field({ nullable: true })
|
|
72
|
-
saveUrl?: string
|
|
73
|
-
|
|
74
|
-
@Column({ nullable: true })
|
|
75
|
-
@Field({ nullable: true })
|
|
76
|
-
masterField?: string
|
|
77
|
-
|
|
78
|
-
@Column({ nullable: true })
|
|
79
|
-
@Field({ nullable: true })
|
|
80
|
-
customView?: string
|
|
81
|
-
|
|
82
|
-
@OneToMany(type => MenuDetailColumn, menuDetailColumn => menuDetailColumn.menuDetail)
|
|
83
|
-
@Field(type => [MenuDetailColumn], { nullable: true })
|
|
84
|
-
columns?: MenuDetailColumn[]
|
|
85
|
-
|
|
86
|
-
@OneToMany(type => MenuDetailButton, menuDetailButton => menuDetailButton.menuDetail)
|
|
87
|
-
@Field(type => [MenuDetailButton], { nullable: true })
|
|
88
|
-
buttons?: MenuDetailButton[]
|
|
89
|
-
|
|
90
|
-
@CreateDateColumn()
|
|
91
|
-
@Field({ nullable: true })
|
|
92
|
-
createdAt?: Date
|
|
93
|
-
|
|
94
|
-
@UpdateDateColumn()
|
|
95
|
-
@Field({ nullable: true })
|
|
96
|
-
updatedAt?: Date
|
|
97
|
-
|
|
98
|
-
@ManyToOne(type => User, { nullable: true })
|
|
99
|
-
@Field(type => User, { nullable: true })
|
|
100
|
-
creator?: User
|
|
101
|
-
|
|
102
|
-
@RelationId((menuDetail: MenuDetail) => menuDetail.creator)
|
|
103
|
-
creatorId?: string
|
|
104
|
-
|
|
105
|
-
@ManyToOne(type => User, { nullable: true })
|
|
106
|
-
@Field(type => User, { nullable: true })
|
|
107
|
-
updater?: User
|
|
108
|
-
|
|
109
|
-
@RelationId((menuDetail: MenuDetail) => menuDetail.updater)
|
|
110
|
-
updaterId?: string
|
|
111
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { MenuDetailButton } from './menu-detail-button'
|
|
2
|
-
import { MenuDetailButtonQuery } from './menu-detail-button-query'
|
|
3
|
-
import { MenuDetailButtonMutation } from './menu-detail-button-mutation'
|
|
4
|
-
|
|
5
|
-
export const entities = [MenuDetailButton]
|
|
6
|
-
export const resolvers = [MenuDetailButtonQuery, MenuDetailButtonMutation]
|
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
import { Arg, Ctx, Directive, Mutation, Resolver } from 'type-graphql'
|
|
2
|
-
import { In } from 'typeorm'
|
|
3
|
-
|
|
4
|
-
import { MenuDetail } from '../menu-detail/menu-detail'
|
|
5
|
-
import { MenuDetailButton } from './menu-detail-button'
|
|
6
|
-
import { MenuDetailButtonPatch, NewMenuDetailButton } from './menu-detail-button-type'
|
|
7
|
-
|
|
8
|
-
@Resolver(MenuDetailButton)
|
|
9
|
-
export class MenuDetailButtonMutation {
|
|
10
|
-
@Directive('@transaction')
|
|
11
|
-
@Mutation(returns => MenuDetailButton, { description: 'To create new MenuDetailButton' })
|
|
12
|
-
async createMenuDetailButton(
|
|
13
|
-
@Arg('menuDetailButton') menuDetailButton: NewMenuDetailButton,
|
|
14
|
-
@Ctx() context: ResolverContext
|
|
15
|
-
): Promise<MenuDetailButton> {
|
|
16
|
-
const { domain, user, tx } = context.state
|
|
17
|
-
|
|
18
|
-
return await tx.getRepository(MenuDetailButton).save({
|
|
19
|
-
...menuDetailButton,
|
|
20
|
-
menuDetail: await tx
|
|
21
|
-
.getRepository(MenuDetail)
|
|
22
|
-
.findOneBy({ domain: { id: domain.id }, id: menuDetailButton.menuDetail }),
|
|
23
|
-
domain,
|
|
24
|
-
creator: user,
|
|
25
|
-
updater: user
|
|
26
|
-
})
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
@Directive('@transaction')
|
|
30
|
-
@Mutation(returns => MenuDetailButton, { description: 'To modify MenuDetailButton information' })
|
|
31
|
-
async updateMenuDetailButton(
|
|
32
|
-
@Arg('id') id: string,
|
|
33
|
-
@Arg('patch') patch: MenuDetailButtonPatch,
|
|
34
|
-
@Ctx() context: ResolverContext
|
|
35
|
-
): Promise<MenuDetailButton> {
|
|
36
|
-
const { domain, user, tx } = context.state
|
|
37
|
-
|
|
38
|
-
const repository = tx.getRepository(MenuDetailButton)
|
|
39
|
-
|
|
40
|
-
const menuDetailButton = await repository.findOne({
|
|
41
|
-
where: { domain: { id: domain.id }, id },
|
|
42
|
-
relations: ['menuDetail']
|
|
43
|
-
})
|
|
44
|
-
|
|
45
|
-
if (patch.menuDetail) {
|
|
46
|
-
patch.menuDetail = (await tx.getRepository(MenuDetail).findOne({ where: { id: patch.menuDetail } })) as any
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
return await repository.save({
|
|
50
|
-
...menuDetailButton,
|
|
51
|
-
...(patch as any),
|
|
52
|
-
updater: user
|
|
53
|
-
})
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
// @Directive('@transaction')
|
|
57
|
-
// @Mutation(returns => [MenuDetailButton], { description: "To modify multiple MenuDetailButtons' information" })
|
|
58
|
-
// async updateMultipleMenuDetailButton(
|
|
59
|
-
// @Arg('patches', type => [MenuDetailButtonPatch]) patches: MenuDetailButtonPatch[],
|
|
60
|
-
// @Ctx() context: ResolverContext
|
|
61
|
-
// ): Promise<MenuDetailButton[]> {
|
|
62
|
-
// const { domain, user, tx } = context.state
|
|
63
|
-
|
|
64
|
-
// let results = []
|
|
65
|
-
// const _createRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === '+')
|
|
66
|
-
// const _updateRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === 'M')
|
|
67
|
-
// const menuDetailButtonRepo = tx.getRepository(MenuDetailButton)
|
|
68
|
-
|
|
69
|
-
// if (_createRecords.length > 0) {
|
|
70
|
-
// for (let i = 0; i < _createRecords.length; i++) {
|
|
71
|
-
// const newRecord = _createRecords[i]
|
|
72
|
-
|
|
73
|
-
// const result = await menuDetailButtonRepo.save({
|
|
74
|
-
// ...newRecord,
|
|
75
|
-
// domain,
|
|
76
|
-
// creator: user,
|
|
77
|
-
// updater: user
|
|
78
|
-
// })
|
|
79
|
-
|
|
80
|
-
// results.push({ ...result, cuFlag: '+' })
|
|
81
|
-
// }
|
|
82
|
-
// }
|
|
83
|
-
|
|
84
|
-
// if (_updateRecords.length > 0) {
|
|
85
|
-
// for (let i = 0; i < _updateRecords.length; i++) {
|
|
86
|
-
// const newRecord = _updateRecords[i]
|
|
87
|
-
// const menuDetailButton = await menuDetailButtonRepo.findOneBy({ id: newRecord.id })
|
|
88
|
-
|
|
89
|
-
// const result = await menuDetailButtonRepo.save({
|
|
90
|
-
// ...menuDetailButton,
|
|
91
|
-
// ...newRecord,
|
|
92
|
-
// updater: user
|
|
93
|
-
// })
|
|
94
|
-
|
|
95
|
-
// results.push({ ...result, cuFlag: 'M' })
|
|
96
|
-
// }
|
|
97
|
-
// }
|
|
98
|
-
|
|
99
|
-
// return results
|
|
100
|
-
// }
|
|
101
|
-
|
|
102
|
-
@Directive('@transaction')
|
|
103
|
-
@Mutation(returns => Boolean, { description: 'To delete MenuDetailButton' })
|
|
104
|
-
async deleteMenuDetailButton(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<boolean> {
|
|
105
|
-
const { domain, tx } = context.state
|
|
106
|
-
|
|
107
|
-
await tx.getRepository(MenuDetailButton).delete({ domain: { id: domain.id }, id })
|
|
108
|
-
return true
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
@Directive('@transaction')
|
|
112
|
-
@Mutation(returns => Boolean, { description: 'To delete multiple MenuDetailButtons' })
|
|
113
|
-
async deleteMenuDetailButtons(
|
|
114
|
-
@Arg('ids', type => [String]) ids: string[],
|
|
115
|
-
@Ctx() context: ResolverContext
|
|
116
|
-
): Promise<boolean> {
|
|
117
|
-
const { domain, tx } = context.state
|
|
118
|
-
|
|
119
|
-
await tx.getRepository(MenuDetailButton).delete({
|
|
120
|
-
domain: { id: domain.id },
|
|
121
|
-
id: In(ids)
|
|
122
|
-
})
|
|
123
|
-
|
|
124
|
-
return true
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
@Directive('@transaction')
|
|
128
|
-
@Mutation(returns => Boolean, { description: 'To import multiple MenuDetailButtons' })
|
|
129
|
-
async importMenuDetailButtons(
|
|
130
|
-
@Arg('menuDetailButtons', type => [MenuDetailButtonPatch]) menuDetailButtons: MenuDetailButtonPatch[],
|
|
131
|
-
@Ctx() context: ResolverContext
|
|
132
|
-
): Promise<boolean> {
|
|
133
|
-
const { domain, tx } = context.state
|
|
134
|
-
|
|
135
|
-
await Promise.all(
|
|
136
|
-
menuDetailButtons.map(async (menuDetailButton: MenuDetailButtonPatch) => {
|
|
137
|
-
await tx.getRepository(MenuDetailButton).save({ domain, ...(menuDetailButton as any) })
|
|
138
|
-
})
|
|
139
|
-
)
|
|
140
|
-
|
|
141
|
-
return true
|
|
142
|
-
}
|
|
143
|
-
}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import { Arg, Args, Ctx, FieldResolver, Query, Resolver, Root } from 'type-graphql'
|
|
2
|
-
|
|
3
|
-
import { User } from '@things-factory/auth-base'
|
|
4
|
-
import { Domain, getQueryBuilderFromListParams, getRepository, ListParam } from '@things-factory/shell'
|
|
5
|
-
|
|
6
|
-
import { MenuDetail } from '../menu-detail/menu-detail'
|
|
7
|
-
import { MenuDetailButton } from './menu-detail-button'
|
|
8
|
-
import { MenuDetailButtonList } from './menu-detail-button-type'
|
|
9
|
-
|
|
10
|
-
@Resolver(MenuDetailButton)
|
|
11
|
-
export class MenuDetailButtonQuery {
|
|
12
|
-
@Query(returns => MenuDetailButton, { description: 'To fetch a MenuDetailButton' })
|
|
13
|
-
async menuDetailButton(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<MenuDetailButton> {
|
|
14
|
-
const { domain } = context.state
|
|
15
|
-
|
|
16
|
-
return await getRepository(MenuDetailButton).findOne({
|
|
17
|
-
where: { domain: { id: domain.id }, id }
|
|
18
|
-
})
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
@Query(returns => MenuDetailButtonList, { description: 'To fetch multiple MenuDetailButtons' })
|
|
22
|
-
async menuDetailButtons(
|
|
23
|
-
@Args(type => ListParam) params: ListParam,
|
|
24
|
-
@Ctx() context: ResolverContext
|
|
25
|
-
): Promise<MenuDetailButtonList> {
|
|
26
|
-
const { domain } = context.state
|
|
27
|
-
|
|
28
|
-
const queryBuilder = getQueryBuilderFromListParams({
|
|
29
|
-
domain,
|
|
30
|
-
params,
|
|
31
|
-
repository: await getRepository(MenuDetailButton),
|
|
32
|
-
searchables: ['name', 'description']
|
|
33
|
-
})
|
|
34
|
-
|
|
35
|
-
const [items, total] = await queryBuilder.getManyAndCount()
|
|
36
|
-
|
|
37
|
-
return { items, total }
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
@FieldResolver(type => MenuDetail)
|
|
41
|
-
async menuDetail(@Root() menuDetailButton: MenuDetailButton): Promise<MenuDetail> {
|
|
42
|
-
return (
|
|
43
|
-
menuDetailButton.menuDetail || (await getRepository(MenuDetail).findOneBy({ id: menuDetailButton.menuDetailId }))
|
|
44
|
-
)
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
@FieldResolver(type => Domain)
|
|
48
|
-
async domain(@Root() menuDetailButton: MenuDetailButton): Promise<Domain> {
|
|
49
|
-
return await getRepository(Domain).findOneBy({ id: menuDetailButton.domainId })
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
@FieldResolver(type => User)
|
|
53
|
-
async updater(@Root() menuDetailButton: MenuDetailButton): Promise<User> {
|
|
54
|
-
return await getRepository(User).findOneBy({ id: menuDetailButton.updaterId })
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
@FieldResolver(type => User)
|
|
58
|
-
async creator(@Root() menuDetailButton: MenuDetailButton): Promise<User> {
|
|
59
|
-
return await getRepository(User).findOneBy({ id: menuDetailButton.creatorId })
|
|
60
|
-
}
|
|
61
|
-
}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { Field, InputType, Int, ObjectType } from 'type-graphql'
|
|
2
|
-
|
|
3
|
-
import { MenuDetailButton } from './menu-detail-button'
|
|
4
|
-
|
|
5
|
-
@InputType()
|
|
6
|
-
export class NewMenuDetailButton {
|
|
7
|
-
@Field() menuDetail: string
|
|
8
|
-
@Field() text: string
|
|
9
|
-
|
|
10
|
-
@Field(type => Int, { nullable: true }) rank?: number
|
|
11
|
-
@Field({ nullable: true }) icon?: string
|
|
12
|
-
@Field({ nullable: true }) style?: string
|
|
13
|
-
@Field({ nullable: true }) logic?: string
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
@InputType()
|
|
17
|
-
export class MenuDetailButtonPatch {
|
|
18
|
-
@Field({ nullable: true }) menuDetail?: string
|
|
19
|
-
@Field({ nullable: true }) text?: string
|
|
20
|
-
|
|
21
|
-
@Field(type => Int, { nullable: true }) rank?: number
|
|
22
|
-
@Field({ nullable: true }) icon?: string
|
|
23
|
-
@Field({ nullable: true }) style?: string
|
|
24
|
-
@Field({ nullable: true }) logic?: string
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
@ObjectType()
|
|
28
|
-
export class MenuDetailButtonList {
|
|
29
|
-
@Field(type => [MenuDetailButton])
|
|
30
|
-
items: MenuDetailButton[]
|
|
31
|
-
|
|
32
|
-
@Field(type => Int)
|
|
33
|
-
total: number
|
|
34
|
-
}
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
import { Field, ID, ObjectType } from 'type-graphql'
|
|
2
|
-
import {
|
|
3
|
-
Column,
|
|
4
|
-
CreateDateColumn,
|
|
5
|
-
Entity,
|
|
6
|
-
Index,
|
|
7
|
-
ManyToOne,
|
|
8
|
-
PrimaryGeneratedColumn,
|
|
9
|
-
RelationId,
|
|
10
|
-
UpdateDateColumn
|
|
11
|
-
} from 'typeorm'
|
|
12
|
-
|
|
13
|
-
import { User } from '@things-factory/auth-base'
|
|
14
|
-
import { Domain } from '@things-factory/shell'
|
|
15
|
-
|
|
16
|
-
import { MenuDetail } from '../menu-detail/menu-detail'
|
|
17
|
-
|
|
18
|
-
@Entity()
|
|
19
|
-
@Index(
|
|
20
|
-
'ix_menu_detail_btn_0',
|
|
21
|
-
(menuDetailButton: MenuDetailButton) => [menuDetailButton.menuDetail, menuDetailButton.text],
|
|
22
|
-
{ unique: true }
|
|
23
|
-
)
|
|
24
|
-
@Index('ix_menu_detail_btn_1', (menuDetailButton: MenuDetailButton) => [menuDetailButton.menuDetail])
|
|
25
|
-
@ObjectType({ description: 'Entity for MenuDetailButton' })
|
|
26
|
-
export class MenuDetailButton {
|
|
27
|
-
@PrimaryGeneratedColumn('uuid')
|
|
28
|
-
@Field(type => ID)
|
|
29
|
-
readonly id: string
|
|
30
|
-
|
|
31
|
-
@ManyToOne(type => Domain)
|
|
32
|
-
@Field(type => Domain)
|
|
33
|
-
domain?: Domain
|
|
34
|
-
|
|
35
|
-
@RelationId((menuDetailButton: MenuDetailButton) => menuDetailButton.domain)
|
|
36
|
-
domainId?: string
|
|
37
|
-
|
|
38
|
-
@ManyToOne(type => MenuDetail, menuDetail => menuDetail.columns)
|
|
39
|
-
@Field(type => MenuDetail, { nullable: true })
|
|
40
|
-
menuDetail?: MenuDetail
|
|
41
|
-
|
|
42
|
-
@RelationId((menuDetailButton: MenuDetailButton) => menuDetailButton.menuDetail)
|
|
43
|
-
menuDetailId?: string
|
|
44
|
-
|
|
45
|
-
@Column()
|
|
46
|
-
@Field({ nullable: true })
|
|
47
|
-
text?: string
|
|
48
|
-
|
|
49
|
-
@Column('int', { nullable: true })
|
|
50
|
-
@Field({ nullable: true })
|
|
51
|
-
rank?: number
|
|
52
|
-
|
|
53
|
-
@Column({ nullable: true })
|
|
54
|
-
@Field({ nullable: true })
|
|
55
|
-
icon?: string
|
|
56
|
-
|
|
57
|
-
@Column({ nullable: true })
|
|
58
|
-
@Field({ nullable: true })
|
|
59
|
-
style?: string
|
|
60
|
-
|
|
61
|
-
@Column({ nullable: true })
|
|
62
|
-
@Field({ nullable: true })
|
|
63
|
-
logic?: string
|
|
64
|
-
|
|
65
|
-
@CreateDateColumn()
|
|
66
|
-
@Field({ nullable: true })
|
|
67
|
-
createdAt?: Date
|
|
68
|
-
|
|
69
|
-
@UpdateDateColumn()
|
|
70
|
-
@Field({ nullable: true })
|
|
71
|
-
updatedAt?: Date
|
|
72
|
-
|
|
73
|
-
@ManyToOne(type => User, { nullable: true })
|
|
74
|
-
@Field(type => User, { nullable: true })
|
|
75
|
-
creator?: User
|
|
76
|
-
|
|
77
|
-
@RelationId((menuDetailButton: MenuDetailButton) => menuDetailButton.creator)
|
|
78
|
-
creatorId?: string
|
|
79
|
-
|
|
80
|
-
@ManyToOne(type => User, { nullable: true })
|
|
81
|
-
@Field(type => User, { nullable: true })
|
|
82
|
-
updater?: User
|
|
83
|
-
|
|
84
|
-
@RelationId((menuDetailButton: MenuDetailButton) => menuDetailButton.updater)
|
|
85
|
-
updaterId?: string
|
|
86
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { MenuDetailColumn } from './menu-detail-column'
|
|
2
|
-
import { MenuDetailColumnQuery } from './menu-detail-column-query'
|
|
3
|
-
import { MenuDetailColumnMutation } from './menu-detail-column-mutation'
|
|
4
|
-
|
|
5
|
-
export const entities = [MenuDetailColumn]
|
|
6
|
-
export const resolvers = [MenuDetailColumnQuery, MenuDetailColumnMutation]
|
|
@@ -1,145 +0,0 @@
|
|
|
1
|
-
import { Arg, Ctx, Directive, Mutation, Resolver } from 'type-graphql'
|
|
2
|
-
import { In } from 'typeorm'
|
|
3
|
-
|
|
4
|
-
import { MenuDetail } from '../menu-detail/menu-detail'
|
|
5
|
-
import { MenuDetailColumn } from './menu-detail-column'
|
|
6
|
-
import { MenuDetailColumnPatch, NewMenuDetailColumn } from './menu-detail-column-type'
|
|
7
|
-
|
|
8
|
-
@Resolver(MenuDetailColumn)
|
|
9
|
-
export class MenuDetailColumnMutation {
|
|
10
|
-
@Directive('@transaction')
|
|
11
|
-
@Mutation(returns => MenuDetailColumn, { description: 'To create new MenuDetailColumn' })
|
|
12
|
-
async createMenuDetailColumn(
|
|
13
|
-
@Arg('menuDetailColumn') menuDetailColumn: NewMenuDetailColumn,
|
|
14
|
-
@Ctx() context: ResolverContext
|
|
15
|
-
): Promise<MenuDetailColumn> {
|
|
16
|
-
const { domain, user, tx } = context.state
|
|
17
|
-
|
|
18
|
-
return await tx.getRepository(MenuDetailColumn).save({
|
|
19
|
-
...menuDetailColumn,
|
|
20
|
-
menuDetail: await tx
|
|
21
|
-
.getRepository(MenuDetail)
|
|
22
|
-
.findOneBy({ domain: { id: domain.id }, id: menuDetailColumn.menuDetail }),
|
|
23
|
-
domain,
|
|
24
|
-
creator: user,
|
|
25
|
-
updater: user
|
|
26
|
-
})
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
@Directive('@transaction')
|
|
30
|
-
@Mutation(returns => MenuDetailColumn, { description: 'To modify MenuDetailColumn information' })
|
|
31
|
-
async updateMenuDetailColumn(
|
|
32
|
-
@Arg('id') id: string,
|
|
33
|
-
@Arg('patch') patch: MenuDetailColumnPatch,
|
|
34
|
-
@Ctx() context: ResolverContext
|
|
35
|
-
): Promise<MenuDetailColumn> {
|
|
36
|
-
const { domain, user, tx } = context.state
|
|
37
|
-
|
|
38
|
-
const repository = tx.getRepository(MenuDetailColumn)
|
|
39
|
-
|
|
40
|
-
const menuDetailColumn = await repository.findOne({
|
|
41
|
-
where: { domain: { id: domain.id }, id },
|
|
42
|
-
relations: ['menuDetail']
|
|
43
|
-
})
|
|
44
|
-
|
|
45
|
-
if (patch.menuDetail) {
|
|
46
|
-
patch.menuDetail = (await tx.getRepository(MenuDetail).findOne({
|
|
47
|
-
where: { domain: { id: domain.id }, id: patch.menuDetail }
|
|
48
|
-
})) as any
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
return await repository.save({
|
|
52
|
-
...menuDetailColumn,
|
|
53
|
-
...(patch as any),
|
|
54
|
-
updater: user
|
|
55
|
-
})
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
// @Directive('@transaction')
|
|
59
|
-
// @Mutation(returns => [MenuDetailColumn], { description: "To modify multiple MenuDetailColumns' information" })
|
|
60
|
-
// async updateMultipleMenuDetailColumn(
|
|
61
|
-
// @Arg('patches', type => [MenuDetailColumnPatch]) patches: MenuDetailColumnPatch[],
|
|
62
|
-
// @Ctx() context: ResolverContext
|
|
63
|
-
// ): Promise<MenuDetailColumn[]> {
|
|
64
|
-
// const { domain, user, tx } = context.state
|
|
65
|
-
|
|
66
|
-
// let results = []
|
|
67
|
-
// const _createRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === '+')
|
|
68
|
-
// const _updateRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === 'M')
|
|
69
|
-
// const menuDetailColumnRepo = tx.getRepository(MenuDetailColumn)
|
|
70
|
-
|
|
71
|
-
// if (_createRecords.length > 0) {
|
|
72
|
-
// for (let i = 0; i < _createRecords.length; i++) {
|
|
73
|
-
// const newRecord = _createRecords[i]
|
|
74
|
-
|
|
75
|
-
// const result = await menuDetailColumnRepo.save({
|
|
76
|
-
// ...newRecord,
|
|
77
|
-
// domain,
|
|
78
|
-
// creator: user,
|
|
79
|
-
// updater: user
|
|
80
|
-
// })
|
|
81
|
-
|
|
82
|
-
// results.push({ ...result, cuFlag: '+' })
|
|
83
|
-
// }
|
|
84
|
-
// }
|
|
85
|
-
|
|
86
|
-
// if (_updateRecords.length > 0) {
|
|
87
|
-
// for (let i = 0; i < _updateRecords.length; i++) {
|
|
88
|
-
// const newRecord = _updateRecords[i]
|
|
89
|
-
// const menuDetailColumn = await menuDetailColumnRepo.findOneBy({ id: newRecord.id })
|
|
90
|
-
|
|
91
|
-
// const result = await menuDetailColumnRepo.save({
|
|
92
|
-
// ...menuDetailColumn,
|
|
93
|
-
// ...newRecord,
|
|
94
|
-
// updater: user
|
|
95
|
-
// })
|
|
96
|
-
|
|
97
|
-
// results.push({ ...result, cuFlag: 'M' })
|
|
98
|
-
// }
|
|
99
|
-
// }
|
|
100
|
-
|
|
101
|
-
// return results
|
|
102
|
-
// }
|
|
103
|
-
|
|
104
|
-
@Directive('@transaction')
|
|
105
|
-
@Mutation(returns => Boolean, { description: 'To delete MenuDetailColumn' })
|
|
106
|
-
async deleteMenuDetailColumn(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<boolean> {
|
|
107
|
-
const { domain, tx } = context.state
|
|
108
|
-
|
|
109
|
-
await tx.getRepository(MenuDetailColumn).delete({ domain: { id: domain.id }, id })
|
|
110
|
-
return true
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
@Directive('@transaction')
|
|
114
|
-
@Mutation(returns => Boolean, { description: 'To delete multiple MenuDetailColumns' })
|
|
115
|
-
async deleteMenuDetailColumns(
|
|
116
|
-
@Arg('ids', type => [String]) ids: string[],
|
|
117
|
-
@Ctx() context: ResolverContext
|
|
118
|
-
): Promise<boolean> {
|
|
119
|
-
const { domain, tx } = context.state
|
|
120
|
-
|
|
121
|
-
await tx.getRepository(MenuDetailColumn).delete({
|
|
122
|
-
domain: { id: domain.id },
|
|
123
|
-
id: In(ids)
|
|
124
|
-
})
|
|
125
|
-
|
|
126
|
-
return true
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
@Directive('@transaction')
|
|
130
|
-
@Mutation(returns => Boolean, { description: 'To import multiple MenuDetailColumns' })
|
|
131
|
-
async importMenuDetailColumns(
|
|
132
|
-
@Arg('menuDetailColumns', type => [MenuDetailColumnPatch]) menuDetailColumns: MenuDetailColumnPatch[],
|
|
133
|
-
@Ctx() context: ResolverContext
|
|
134
|
-
): Promise<boolean> {
|
|
135
|
-
const { domain, tx } = context.state
|
|
136
|
-
|
|
137
|
-
await Promise.all(
|
|
138
|
-
menuDetailColumns.map(async (menuDetailColumn: MenuDetailColumnPatch) => {
|
|
139
|
-
await tx.getRepository(MenuDetailColumn).save({ domain, ...(menuDetailColumn as any) })
|
|
140
|
-
})
|
|
141
|
-
)
|
|
142
|
-
|
|
143
|
-
return true
|
|
144
|
-
}
|
|
145
|
-
}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import { Arg, Args, Ctx, FieldResolver, Query, Resolver, Root } from 'type-graphql'
|
|
2
|
-
|
|
3
|
-
import { User } from '@things-factory/auth-base'
|
|
4
|
-
import { Domain, getQueryBuilderFromListParams, getRepository, ListParam } from '@things-factory/shell'
|
|
5
|
-
|
|
6
|
-
import { MenuDetail } from '../menu-detail/menu-detail'
|
|
7
|
-
import { MenuDetailColumn } from './menu-detail-column'
|
|
8
|
-
import { MenuDetailColumnList } from './menu-detail-column-type'
|
|
9
|
-
|
|
10
|
-
@Resolver(MenuDetailColumn)
|
|
11
|
-
export class MenuDetailColumnQuery {
|
|
12
|
-
@Query(returns => MenuDetailColumn, { description: 'To fetch a MenuDetailColumn' })
|
|
13
|
-
async menuDetailColumn(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<MenuDetailColumn> {
|
|
14
|
-
const { domain } = context.state
|
|
15
|
-
|
|
16
|
-
return await getRepository(MenuDetailColumn).findOne({
|
|
17
|
-
where: { domain: { id: domain.id }, id }
|
|
18
|
-
})
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
@Query(returns => MenuDetailColumnList, { description: 'To fetch multiple MenuDetailColumns' })
|
|
22
|
-
async menuDetailColumns(
|
|
23
|
-
@Args(type => ListParam) params: ListParam,
|
|
24
|
-
@Ctx() context: ResolverContext
|
|
25
|
-
): Promise<MenuDetailColumnList> {
|
|
26
|
-
const { domain } = context.state
|
|
27
|
-
|
|
28
|
-
const queryBuilder = getQueryBuilderFromListParams({
|
|
29
|
-
domain,
|
|
30
|
-
params,
|
|
31
|
-
repository: await getRepository(MenuDetailColumn),
|
|
32
|
-
searchables: ['name', 'description']
|
|
33
|
-
})
|
|
34
|
-
|
|
35
|
-
const [items, total] = await queryBuilder.getManyAndCount()
|
|
36
|
-
|
|
37
|
-
return { items, total }
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
@FieldResolver(type => MenuDetail)
|
|
41
|
-
async menuDetail(@Root() menuDetailColumn: MenuDetailColumn): Promise<MenuDetail> {
|
|
42
|
-
return (
|
|
43
|
-
menuDetailColumn.menuDetail || (await getRepository(MenuDetail).findOneBy({ id: menuDetailColumn.menuDetailId }))
|
|
44
|
-
)
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
@FieldResolver(type => Domain)
|
|
48
|
-
async domain(@Root() menuDetailColumn: MenuDetailColumn): Promise<Domain> {
|
|
49
|
-
return await getRepository(Domain).findOneBy({ id: menuDetailColumn.domainId })
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
@FieldResolver(type => User)
|
|
53
|
-
async updater(@Root() menuDetailColumn: MenuDetailColumn): Promise<User> {
|
|
54
|
-
return await getRepository(User).findOneBy({ id: menuDetailColumn.updaterId })
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
@FieldResolver(type => User)
|
|
58
|
-
async creator(@Root() menuDetailColumn: MenuDetailColumn): Promise<User> {
|
|
59
|
-
return await getRepository(User).findOneBy({ id: menuDetailColumn.creatorId })
|
|
60
|
-
}
|
|
61
|
-
}
|