@things-factory/menu-base 8.0.0-beta.1 → 8.0.0-beta.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.
Files changed (33) hide show
  1. package/package.json +3 -3
  2. package/server/index.ts +0 -1
  3. package/server/service/index.ts +0 -37
  4. package/server/service/menu/index.ts +0 -6
  5. package/server/service/menu/menu-mutation.ts +0 -244
  6. package/server/service/menu/menu-query.ts +0 -249
  7. package/server/service/menu/menu-type.ts +0 -78
  8. package/server/service/menu/menu.ts +0 -183
  9. package/server/service/menu-button/index.ts +0 -6
  10. package/server/service/menu-button/menu-button-mutation.ts +0 -142
  11. package/server/service/menu-button/menu-button-query.ts +0 -59
  12. package/server/service/menu-button/menu-button-type.ts +0 -31
  13. package/server/service/menu-button/menu-button.ts +0 -86
  14. package/server/service/menu-column/index.ts +0 -6
  15. package/server/service/menu-column/menu-column-mutation.ts +0 -143
  16. package/server/service/menu-column/menu-column-query.ts +0 -59
  17. package/server/service/menu-column/menu-column-type.ts +0 -92
  18. package/server/service/menu-column/menu-column.ts +0 -200
  19. package/server/service/menu-detail/index.ts +0 -6
  20. package/server/service/menu-detail/menu-detail-mutation.ts +0 -142
  21. package/server/service/menu-detail/menu-detail-query.ts +0 -75
  22. package/server/service/menu-detail/menu-detail-type.ts +0 -46
  23. package/server/service/menu-detail/menu-detail.ts +0 -111
  24. package/server/service/menu-detail-button/index.ts +0 -6
  25. package/server/service/menu-detail-button/menu-detail-button-mutation.ts +0 -143
  26. package/server/service/menu-detail-button/menu-detail-button-query.ts +0 -61
  27. package/server/service/menu-detail-button/menu-detail-button-type.ts +0 -34
  28. package/server/service/menu-detail-button/menu-detail-button.ts +0 -86
  29. package/server/service/menu-detail-column/index.ts +0 -6
  30. package/server/service/menu-detail-column/menu-detail-column-mutation.ts +0 -145
  31. package/server/service/menu-detail-column/menu-detail-column-query.ts +0 -61
  32. package/server/service/menu-detail-column/menu-detail-column-type.ts +0 -92
  33. 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
- }