@things-factory/setting-base 8.0.5 → 9.0.0-beta.12

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.
@@ -1,88 +0,0 @@
1
- import { Arg, Args, Ctx, Directive, FieldResolver, Query, Resolver, Root } from 'type-graphql'
2
-
3
- import { User } from '@things-factory/auth-base'
4
- import { Domain, getRepository, ListParam, getQueryBuilderFromListParams } from '@things-factory/shell'
5
-
6
- import { PartnerSetting } from '../partner-setting/partner-setting'
7
- import { Setting } from './setting'
8
- import { SettingList } from './setting-type'
9
-
10
- @Resolver(Setting)
11
- export class SettingQuery {
12
- @Directive('@privilege(category: "setting", privilege: "query", domainOwnerGranted: true)')
13
- @Query(returns => Setting, { description: 'To fetch a Setting' })
14
- async setting(
15
- @Arg('name') name: string,
16
- @Arg('partnerDomainId', { nullable: true }) partnerDomainId: string,
17
- @Ctx() context: ResolverContext
18
- ): Promise<Setting> {
19
- const { domain } = context.state
20
-
21
- let setting: Setting = await getRepository(Setting).findOne({ where: { domain: { id: domain.id }, name } })
22
- if (!setting) throw new Error(`${name} setting not found`)
23
-
24
- if (partnerDomainId) {
25
- const partnerDomain: Domain = await getRepository(Domain).findOneBy({ id: partnerDomainId })
26
- const partnerSetting: PartnerSetting = await getRepository(PartnerSetting).findOneBy({
27
- setting: { id: setting.id },
28
- domain: { id: domain.id },
29
- partnerDomain: { id: partnerDomain.id }
30
- })
31
- if (partnerSetting) setting.value = partnerSetting.value
32
- }
33
-
34
- return setting
35
- }
36
-
37
- @Directive('@privilege(category: "setting", privilege: "query", domainOwnerGranted: true)')
38
- @Query(returns => SettingList, { description: 'To fetch multiple Settings' })
39
- async settings(@Args(type => ListParam) params: ListParam, @Ctx() context: ResolverContext): Promise<SettingList> {
40
- const { domain } = context.state
41
- const queryBuilder = getQueryBuilderFromListParams({
42
- repository: getRepository(Setting),
43
- params,
44
- domain,
45
- searchables: ['name', 'description', 'category']
46
- })
47
-
48
- const [items, total] = await queryBuilder.getManyAndCount()
49
- return { items, total }
50
- }
51
-
52
- // @FieldResolver(type => Domain)
53
- // async value(@Root() setting: Setting, @Ctx() context: ResolverContext) {
54
- // const { user, domain } = context.state
55
- // const userDomains: Domain[] = user.domains
56
- // let value: string = setting.value
57
-
58
- // const partner: Partner = await getRepository(Partner).findOne({
59
- // where: { domain: { id: domain.id }, partnerDomain: { id: In(userDomains.map((userDomain: Domain) => userDomain.id)) } },
60
- // relations: ['partnerDomain']
61
- // })
62
- // if (partner?.partnerDomain) {
63
- // const partnerSetting: PartnerSetting = await getRepository(PartnerSetting).findOne({
64
- // setting,
65
- // domain,
66
- // partnerDomain: partner.partnerDomain
67
- // })
68
- // if (partnerSetting) value = partnerSetting.value
69
- // }
70
-
71
- // return value
72
- // }
73
-
74
- @FieldResolver(type => Domain)
75
- async domain(@Root() setting: Setting) {
76
- return await getRepository(Domain).findOneBy({ id: setting.domainId })
77
- }
78
-
79
- @FieldResolver(type => User)
80
- async updater(@Root() setting: Setting): Promise<User> {
81
- return await getRepository(User).findOneBy({ id: setting.updaterId })
82
- }
83
-
84
- @FieldResolver(type => User)
85
- async creator(@Root() setting: Setting): Promise<User> {
86
- return await getRepository(User).findOneBy({ id: setting.creatorId })
87
- }
88
- }
@@ -1,48 +0,0 @@
1
- import { ObjectType, Field, InputType, Int, ID, registerEnumType } from 'type-graphql'
2
-
3
- import { Setting } from './setting'
4
-
5
- @InputType()
6
- export class NewSetting {
7
- @Field()
8
- name: string
9
-
10
- @Field({ nullable: true })
11
- description?: string
12
-
13
- @Field()
14
- category: string
15
-
16
- @Field({ nullable: true })
17
- value?: string
18
- }
19
-
20
- @InputType()
21
- export class SettingPatch {
22
- @Field(type => ID, { nullable: true })
23
- id?: string
24
-
25
- @Field({ nullable: true })
26
- name?: string
27
-
28
- @Field({ nullable: true })
29
- description?: string
30
-
31
- @Field({ nullable: true })
32
- category?: string
33
-
34
- @Field({ nullable: true })
35
- value?: string
36
-
37
- @Field({ nullable: true })
38
- cuFlag: string
39
- }
40
-
41
- @ObjectType()
42
- export class SettingList {
43
- @Field(type => [Setting])
44
- items: Setting[]
45
-
46
- @Field(type => Int)
47
- total: number
48
- }
@@ -1,86 +0,0 @@
1
- import {
2
- CreateDateColumn,
3
- UpdateDateColumn,
4
- Entity,
5
- Index,
6
- Column,
7
- RelationId,
8
- ManyToOne,
9
- PrimaryGeneratedColumn
10
- } from 'typeorm'
11
- import { ObjectType, Field, Int, ID, registerEnumType } from 'type-graphql'
12
-
13
- import { Domain } from '@things-factory/shell'
14
- import { User } from '@things-factory/auth-base'
15
-
16
- export interface SettingCategory {
17
- name: string
18
- propType: string
19
- }
20
-
21
- var SettingCategories: { [name: string]: SettingCategory } = {}
22
-
23
- @Entity()
24
- @Index('ix_setting_0', (setting: Setting) => [setting.domain, setting.name], { unique: true })
25
- @Index('ix_setting_1', (setting: Setting) => [setting.domain, setting.category])
26
- @ObjectType({ description: 'Entity for Setting' })
27
- export class Setting {
28
- static registerSettingCategory(settingType: SettingCategory) {
29
- SettingCategories[settingType.name] = settingType
30
- }
31
-
32
- static getSettingCategory(name: string) {
33
- return SettingCategories[name]
34
- }
35
-
36
- @PrimaryGeneratedColumn('uuid')
37
- @Field(type => ID)
38
- readonly id: string
39
-
40
- @ManyToOne(type => Domain)
41
- @Field(type => Domain)
42
- domain?: Domain
43
-
44
- @RelationId((setting: Setting) => setting.domain)
45
- domainId?: string
46
-
47
- @Column()
48
- @Field()
49
- name: string
50
-
51
- @Column({
52
- nullable: true
53
- })
54
- @Field({ nullable: true })
55
- description?: string
56
-
57
- @Column()
58
- @Field()
59
- category: string
60
-
61
- @Column({ nullable: true })
62
- @Field({ nullable: true })
63
- value?: 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((setting: Setting) => setting.creator)
78
- creatorId?: string
79
-
80
- @ManyToOne(type => User, { nullable: true })
81
- @Field(type => User, { nullable: true })
82
- updater?: User
83
-
84
- @RelationId((setting: Setting) => setting.updater)
85
- updaterId?: string
86
- }