@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.
- package/dist-client/tsconfig.tsbuildinfo +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -4
- package/client/actions/setting.ts +0 -3
- package/client/bootstrap.ts +0 -8
- package/client/index.ts +0 -2
- package/client/layout/settinglet.ts +0 -43
- package/client/reducers/setting.ts +0 -33
- package/server/index.ts +0 -2
- package/server/migrations/index.ts +0 -9
- package/server/service/index.ts +0 -25
- package/server/service/partner-setting/index.ts +0 -6
- package/server/service/partner-setting/partner-setting-mutation.ts +0 -98
- package/server/service/partner-setting/partner-setting-query.ts +0 -123
- package/server/service/partner-setting/partner-setting-type.ts +0 -42
- package/server/service/partner-setting/partner-setting.ts +0 -109
- package/server/service/setting/index.ts +0 -6
- package/server/service/setting/setting-mutation.ts +0 -118
- package/server/service/setting/setting-query.ts +0 -88
- package/server/service/setting/setting-type.ts +0 -48
- package/server/service/setting/setting.ts +0 -86
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@things-factory/setting-base",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "9.0.0-beta.12",
|
|
4
4
|
"main": "dist-server/index.js",
|
|
5
5
|
"browser": "dist-client/index.js",
|
|
6
6
|
"things-factory": true,
|
|
@@ -27,8 +27,8 @@
|
|
|
27
27
|
"migration:create": "node ../../node_modules/typeorm/cli.js migration:create ./server/migrations/migration"
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@things-factory/auth-base": "^
|
|
31
|
-
"@things-factory/code-base": "^
|
|
30
|
+
"@things-factory/auth-base": "^9.0.0-beta.12",
|
|
31
|
+
"@things-factory/code-base": "^9.0.0-beta.12"
|
|
32
32
|
},
|
|
33
|
-
"gitHead": "
|
|
33
|
+
"gitHead": "5e9ade1c2d4b4c96b89396e36c3afa1caaf18ef0"
|
|
34
34
|
}
|
package/client/bootstrap.ts
DELETED
package/client/index.ts
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { LitElement, html, css } from 'lit'
|
|
2
|
-
import { customElement, query, state } from 'lit/decorators.js'
|
|
3
|
-
|
|
4
|
-
@customElement('setting-let')
|
|
5
|
-
export class SettingLet extends LitElement {
|
|
6
|
-
static styles = [
|
|
7
|
-
css`
|
|
8
|
-
:host {
|
|
9
|
-
display: block;
|
|
10
|
-
margin: var(--setting-let-margin);
|
|
11
|
-
padding: var(--setting-content-padding);
|
|
12
|
-
background-color: var(--md-sys-color-on-primary);
|
|
13
|
-
border-radius: var(--setting-let-border-radius);
|
|
14
|
-
border: var(--setting-let-border);
|
|
15
|
-
text-transform: capitalize;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
slot {
|
|
19
|
-
display: block;
|
|
20
|
-
}
|
|
21
|
-
slot[name='title'] {
|
|
22
|
-
margin-bottom: var(--spacing-medium);
|
|
23
|
-
border-bottom: 1px dotted rgba(var(--md-sys-color-primary), 0.5);
|
|
24
|
-
}
|
|
25
|
-
slot[name='title']::slotted(*) {
|
|
26
|
-
color: var(--md-sys-color-primary);
|
|
27
|
-
font: var(--setting-title-font);
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
slot[name='content']::slotted(*) {
|
|
31
|
-
color: var(--md-sys-color-on-surface);
|
|
32
|
-
font: var(--setting-content-font);
|
|
33
|
-
}
|
|
34
|
-
`
|
|
35
|
-
]
|
|
36
|
-
|
|
37
|
-
render() {
|
|
38
|
-
return html`
|
|
39
|
-
<slot name="title"></slot>
|
|
40
|
-
<slot name="content"></slot>
|
|
41
|
-
`
|
|
42
|
-
}
|
|
43
|
-
}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { ADD_SETTING, REMOVE_SETTING, ADD_REFRESH_HANDLER } from '../actions/setting'
|
|
2
|
-
|
|
3
|
-
const INITIAL_STATE = {
|
|
4
|
-
settings: [],
|
|
5
|
-
refreshHandlers: []
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
const setting = (state = INITIAL_STATE, action) => {
|
|
9
|
-
switch (action.type) {
|
|
10
|
-
case ADD_SETTING:
|
|
11
|
-
return {
|
|
12
|
-
...state,
|
|
13
|
-
settings: [...state.settings, action.setting]
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
case REMOVE_SETTING:
|
|
17
|
-
return {
|
|
18
|
-
...state,
|
|
19
|
-
settings: state.settings.filter(i => i !== action.setting)
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
case ADD_REFRESH_HANDLER:
|
|
23
|
-
return {
|
|
24
|
-
...state,
|
|
25
|
-
refreshHandlers: [...state.refreshHandlers, action.refreshHandler]
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
default:
|
|
29
|
-
return state
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
export default setting
|
package/server/index.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
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
|
-
})
|
package/server/service/index.ts
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
/* IMPORT ENTITIES AND RESOLVERS */
|
|
2
|
-
import { entities as PartnerSettingEntities, resolvers as PartnerSettingResolvers } from './partner-setting'
|
|
3
|
-
import { entities as SettingEntities, resolvers as SettingResolvers } from './setting'
|
|
4
|
-
|
|
5
|
-
/* EXPORT ENTITY TYPES */
|
|
6
|
-
export * from './partner-setting/partner-setting'
|
|
7
|
-
export * from './setting/setting'
|
|
8
|
-
|
|
9
|
-
/* EXPORT TYPES */
|
|
10
|
-
export * from './partner-setting/partner-setting-type'
|
|
11
|
-
export * from './setting/setting-type'
|
|
12
|
-
|
|
13
|
-
export const entities = [
|
|
14
|
-
/* ENTITIES */
|
|
15
|
-
...PartnerSettingEntities,
|
|
16
|
-
...SettingEntities
|
|
17
|
-
]
|
|
18
|
-
|
|
19
|
-
export const schema = {
|
|
20
|
-
resolverClasses: [
|
|
21
|
-
/* RESOLVER CLASSES */
|
|
22
|
-
...PartnerSettingResolvers,
|
|
23
|
-
...SettingResolvers
|
|
24
|
-
]
|
|
25
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { PartnerSetting } from './partner-setting'
|
|
2
|
-
import { PartnerSettingQuery } from './partner-setting-query'
|
|
3
|
-
import { PartnerSettingMutation } from './partner-setting-mutation'
|
|
4
|
-
|
|
5
|
-
export const entities = [PartnerSetting]
|
|
6
|
-
export const resolvers = [PartnerSettingQuery, PartnerSettingMutation]
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
import { Arg, Ctx, Directive, Mutation, Resolver } from 'type-graphql'
|
|
2
|
-
import { In, Repository } from 'typeorm'
|
|
3
|
-
|
|
4
|
-
import { Domain, getRepository } from '@things-factory/shell'
|
|
5
|
-
|
|
6
|
-
import { Setting } from '../setting/setting'
|
|
7
|
-
import { PartnerSetting } from './partner-setting'
|
|
8
|
-
import { PartnerSettingPatch } from './partner-setting-type'
|
|
9
|
-
|
|
10
|
-
@Resolver(PartnerSetting)
|
|
11
|
-
export class PartnerSettingMutation {
|
|
12
|
-
@Directive('@transaction')
|
|
13
|
-
@Mutation(returns => [PartnerSetting], { description: "To modify multiple PartnerSettings' information" })
|
|
14
|
-
async updateMultiplePartnerSetting(
|
|
15
|
-
@Arg('patches', type => [PartnerSettingPatch]) patches: PartnerSettingPatch[],
|
|
16
|
-
@Ctx() context: ResolverContext
|
|
17
|
-
): Promise<PartnerSetting[]> {
|
|
18
|
-
const { tx, domain, user } = context.state
|
|
19
|
-
const partnerSettingRepo: Repository<PartnerSetting> =
|
|
20
|
-
tx?.getRepository(PartnerSetting) || getRepository(PartnerSetting)
|
|
21
|
-
const domainRepo: Repository<Domain> = tx?.getRepository(Domain) || getRepository(Domain)
|
|
22
|
-
const settingRepo: Repository<Setting> = tx?.getRepository(Setting) || getRepository(Setting)
|
|
23
|
-
|
|
24
|
-
const { createRecords, updateRecords } = patches.reduce(
|
|
25
|
-
(records, patch) => {
|
|
26
|
-
if (patch.cuFlag === '+') records.createRecords.push(patch)
|
|
27
|
-
if (patch.cuFlag.toUpperCase() === 'M') records.updateRecords.push(patch)
|
|
28
|
-
|
|
29
|
-
return records
|
|
30
|
-
},
|
|
31
|
-
{ createRecords: [], updateRecords: [] }
|
|
32
|
-
)
|
|
33
|
-
|
|
34
|
-
let results: PartnerSetting[] = []
|
|
35
|
-
|
|
36
|
-
if (createRecords?.length) {
|
|
37
|
-
await Promise.all(
|
|
38
|
-
createRecords.map(async (record: PartnerSetting) => {
|
|
39
|
-
const partnerDomain: Domain = await domainRepo.findOneBy({ id: record.partnerDomain.id })
|
|
40
|
-
const setting: Setting = await settingRepo.findOneBy({ id: record.setting.id })
|
|
41
|
-
|
|
42
|
-
const result: PartnerSetting = await partnerSettingRepo.save({
|
|
43
|
-
domain,
|
|
44
|
-
creator: user,
|
|
45
|
-
updater: user,
|
|
46
|
-
...record,
|
|
47
|
-
name: setting.name,
|
|
48
|
-
description: setting.description,
|
|
49
|
-
category: setting.category,
|
|
50
|
-
partnerDomain,
|
|
51
|
-
setting
|
|
52
|
-
})
|
|
53
|
-
|
|
54
|
-
results.push(result)
|
|
55
|
-
})
|
|
56
|
-
)
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
if (updateRecords?.length) {
|
|
60
|
-
await Promise.all(
|
|
61
|
-
updateRecords.map(async (record: PartnerSetting) => {
|
|
62
|
-
const partnerDomain: Domain = await domainRepo.findOneBy({ id: record.partnerDomain.id })
|
|
63
|
-
const setting: Setting = await settingRepo.findOneBy({ id: record.setting.id })
|
|
64
|
-
|
|
65
|
-
const partnerSetting: PartnerSetting = await partnerSettingRepo.findOneBy({ id: setting.id })
|
|
66
|
-
if (!record.id) throw new Error('Cannot update record without its ID')
|
|
67
|
-
|
|
68
|
-
const result = await partnerSettingRepo.save({
|
|
69
|
-
...partnerSetting,
|
|
70
|
-
...record,
|
|
71
|
-
name: setting.name,
|
|
72
|
-
description: setting.description,
|
|
73
|
-
category: setting.category,
|
|
74
|
-
updater: user,
|
|
75
|
-
partnerDomain,
|
|
76
|
-
setting
|
|
77
|
-
})
|
|
78
|
-
|
|
79
|
-
results.push(result)
|
|
80
|
-
})
|
|
81
|
-
)
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
return results
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
@Directive('@transaction')
|
|
88
|
-
@Mutation(returns => Boolean, { description: 'To delete multiple partnerSettings' })
|
|
89
|
-
async deletePartnerSettings(
|
|
90
|
-
@Arg('ids', type => [String]) ids: string[],
|
|
91
|
-
@Ctx() context: ResolverContext
|
|
92
|
-
): Promise<boolean> {
|
|
93
|
-
const { domain, tx } = context.state
|
|
94
|
-
|
|
95
|
-
await tx.getRepository(PartnerSetting).delete({ id: In(ids), domain: { id: domain.id } })
|
|
96
|
-
return true
|
|
97
|
-
}
|
|
98
|
-
}
|
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
import { Arg, Ctx, FieldResolver, Query, Resolver, Root } from 'type-graphql'
|
|
2
|
-
import { SelectQueryBuilder } from 'typeorm'
|
|
3
|
-
|
|
4
|
-
import { User } from '@things-factory/auth-base'
|
|
5
|
-
import {
|
|
6
|
-
Domain,
|
|
7
|
-
Filter,
|
|
8
|
-
getRepository,
|
|
9
|
-
ObjectRef,
|
|
10
|
-
Pagination,
|
|
11
|
-
Sorting,
|
|
12
|
-
getQueryBuilderFromListParams
|
|
13
|
-
} from '@things-factory/shell'
|
|
14
|
-
|
|
15
|
-
import { Setting } from '../setting/setting'
|
|
16
|
-
import { PartnerSetting } from './partner-setting'
|
|
17
|
-
import { PartnerSettingList } from './partner-setting-type'
|
|
18
|
-
|
|
19
|
-
@Resolver(PartnerSetting)
|
|
20
|
-
export class PartnerSettingQuery {
|
|
21
|
-
@Query(returns => PartnerSetting, { description: 'To fetch a PartnerSetting' })
|
|
22
|
-
async partnerSetting(
|
|
23
|
-
@Arg('name') name: string,
|
|
24
|
-
@Arg('partnerDomainId') partnerDomainId: string,
|
|
25
|
-
@Ctx() context: ResolverContext
|
|
26
|
-
): Promise<PartnerSetting> {
|
|
27
|
-
const { domain } = context.state
|
|
28
|
-
const setting: Setting = await getRepository(Setting).findOne({ where: { domain: { id: domain.id }, name } })
|
|
29
|
-
|
|
30
|
-
const partnerSetting: PartnerSetting = await getRepository(PartnerSetting).findOne({
|
|
31
|
-
where: { domain: { id: domain.id }, setting: { id: setting.id }, partnerDomain: { id: partnerDomainId } }
|
|
32
|
-
})
|
|
33
|
-
|
|
34
|
-
if (!partnerSetting) throw new Error(`${name} setting is not found`)
|
|
35
|
-
|
|
36
|
-
return partnerSetting || (setting as PartnerSetting)
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
@Query(returns => PartnerSettingList, { description: 'To fetch multiple PartnerSettings' })
|
|
40
|
-
async partnerSettings(
|
|
41
|
-
@Arg('filters', type => [Filter]) filters: Filter[],
|
|
42
|
-
@Arg('pagination', type => Pagination) pagination: Pagination,
|
|
43
|
-
@Arg('sortings', type => [Sorting]) sortings: Sorting[],
|
|
44
|
-
@Arg('partnerDomain', type => ObjectRef) partnerDomain: ObjectRef,
|
|
45
|
-
@Ctx() context: ResolverContext
|
|
46
|
-
): Promise<PartnerSettingList> {
|
|
47
|
-
const { domain } = context.state
|
|
48
|
-
const qb: SelectQueryBuilder<PartnerSetting> = await getQueryBuilderFromListParams({
|
|
49
|
-
repository: getRepository(PartnerSetting),
|
|
50
|
-
alias: 'ps',
|
|
51
|
-
params: { filters, pagination, sortings },
|
|
52
|
-
domain,
|
|
53
|
-
searchables: ['name', 'description'],
|
|
54
|
-
filtersMap: {
|
|
55
|
-
name: {
|
|
56
|
-
relationColumn: 'setting',
|
|
57
|
-
columnName: 'name'
|
|
58
|
-
},
|
|
59
|
-
description: {
|
|
60
|
-
relationColumn: 'setting',
|
|
61
|
-
columnName: 'description'
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
})
|
|
65
|
-
|
|
66
|
-
qb.leftJoinAndSelect('ps.setting', 'Setting').andWhere('ps.partner_domain_id = :partnerDomainId', {
|
|
67
|
-
partnerDomainId: partnerDomain.id
|
|
68
|
-
})
|
|
69
|
-
const [items, total] = await qb.getManyAndCount()
|
|
70
|
-
|
|
71
|
-
return { items, total }
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
@FieldResolver(type => Domain)
|
|
75
|
-
async partnerDomain(@Root() partnerSetting: PartnerSetting): Promise<Domain> {
|
|
76
|
-
return await getRepository(Domain).findOneBy({ id: partnerSetting.partnerDomainId })
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
@FieldResolver(type => Setting)
|
|
80
|
-
async setting(@Root() partnerSetting: PartnerSetting): Promise<Setting> {
|
|
81
|
-
return await getRepository(Setting).findOneBy({ id: partnerSetting.settingId })
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
@FieldResolver(type => String)
|
|
85
|
-
async name(@Root() partnerSetting: PartnerSetting): Promise<string> {
|
|
86
|
-
if (partnerSetting.setting?.name) {
|
|
87
|
-
return partnerSetting.setting.name
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
return (await getRepository(Setting).findOneBy({ id: partnerSetting.settingId }))?.name
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
async description(@Root() partnerSetting: PartnerSetting): Promise<string> {
|
|
94
|
-
if (partnerSetting.setting?.description) {
|
|
95
|
-
return partnerSetting.setting.description
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
return (await getRepository(Setting).findOneBy({ id: partnerSetting.settingId }))?.description
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
async category(@Root() partnerSetting: PartnerSetting): Promise<string> {
|
|
102
|
-
if (partnerSetting.setting?.category) {
|
|
103
|
-
return partnerSetting.setting.category
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
return (await getRepository(Setting).findOneBy({ id: partnerSetting.settingId }))?.category
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
@FieldResolver(type => Domain)
|
|
110
|
-
async domain(@Root() partnerSetting: PartnerSetting): Promise<Domain> {
|
|
111
|
-
return await getRepository(Domain).findOneBy({ id: partnerSetting.domainId })
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
@FieldResolver(type => User)
|
|
115
|
-
async updater(@Root() partnerSetting: PartnerSetting): Promise<User> {
|
|
116
|
-
return await getRepository(User).findOneBy({ id: partnerSetting.updaterId })
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
@FieldResolver(type => User)
|
|
120
|
-
async creator(@Root() partnerSetting: PartnerSetting): Promise<User> {
|
|
121
|
-
return await getRepository(User).findOneBy({ id: partnerSetting.creatorId })
|
|
122
|
-
}
|
|
123
|
-
}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { ObjectType, Field, InputType, Int, ID, registerEnumType } from 'type-graphql'
|
|
2
|
-
import { ObjectRef } from '@things-factory/shell'
|
|
3
|
-
import { PartnerSetting } from './partner-setting'
|
|
4
|
-
|
|
5
|
-
@InputType()
|
|
6
|
-
export class NewPartnerSetting {
|
|
7
|
-
@Field(type => ObjectRef)
|
|
8
|
-
partnerDomain: ObjectRef
|
|
9
|
-
|
|
10
|
-
@Field(type => ObjectRef, { nullable: true })
|
|
11
|
-
setting: ObjectRef
|
|
12
|
-
|
|
13
|
-
@Field({ nullable: true })
|
|
14
|
-
value?: string
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
@InputType()
|
|
18
|
-
export class PartnerSettingPatch {
|
|
19
|
-
@Field(type => ID, { nullable: true })
|
|
20
|
-
id?: string
|
|
21
|
-
|
|
22
|
-
@Field(type => ObjectRef, { nullable: true })
|
|
23
|
-
partnerDomain: ObjectRef
|
|
24
|
-
|
|
25
|
-
@Field(type => ObjectRef, { nullable: true })
|
|
26
|
-
setting: ObjectRef
|
|
27
|
-
|
|
28
|
-
@Field({ nullable: true })
|
|
29
|
-
value?: string
|
|
30
|
-
|
|
31
|
-
@Field()
|
|
32
|
-
cuFlag: string
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
@ObjectType()
|
|
36
|
-
export class PartnerSettingList {
|
|
37
|
-
@Field(type => [PartnerSetting])
|
|
38
|
-
items: PartnerSetting[]
|
|
39
|
-
|
|
40
|
-
@Field(type => Int)
|
|
41
|
-
total: number
|
|
42
|
-
}
|
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
import { Field, ID, ObjectType } from 'type-graphql'
|
|
2
|
-
import {
|
|
3
|
-
Column,
|
|
4
|
-
CreateDateColumn,
|
|
5
|
-
Entity,
|
|
6
|
-
EntityManager,
|
|
7
|
-
getRepository,
|
|
8
|
-
Index,
|
|
9
|
-
ManyToOne,
|
|
10
|
-
PrimaryGeneratedColumn,
|
|
11
|
-
RelationId,
|
|
12
|
-
Repository,
|
|
13
|
-
UpdateDateColumn
|
|
14
|
-
} from 'typeorm'
|
|
15
|
-
|
|
16
|
-
import { User } from '@things-factory/auth-base'
|
|
17
|
-
import { Domain } from '@things-factory/shell'
|
|
18
|
-
|
|
19
|
-
import { Setting } from '../setting/setting'
|
|
20
|
-
|
|
21
|
-
@Entity()
|
|
22
|
-
@Index(
|
|
23
|
-
'ix_partner_setting_0',
|
|
24
|
-
partnerSetting => [partnerSetting.domain, partnerSetting.partnerDomain, partnerSetting.setting],
|
|
25
|
-
{ unique: true }
|
|
26
|
-
)
|
|
27
|
-
@ObjectType({ description: 'Entity for PartnerSetting' })
|
|
28
|
-
export class PartnerSetting {
|
|
29
|
-
@PrimaryGeneratedColumn('uuid')
|
|
30
|
-
@Field(type => ID)
|
|
31
|
-
readonly id: string
|
|
32
|
-
|
|
33
|
-
@ManyToOne(type => Domain)
|
|
34
|
-
@Field(type => Domain)
|
|
35
|
-
domain?: Domain
|
|
36
|
-
|
|
37
|
-
@RelationId((partnerSetting: PartnerSetting) => partnerSetting.domain)
|
|
38
|
-
domainId?: string
|
|
39
|
-
|
|
40
|
-
@ManyToOne(type => Domain, { nullable: false })
|
|
41
|
-
@Field(type => Domain, { nullable: true })
|
|
42
|
-
partnerDomain: Domain
|
|
43
|
-
|
|
44
|
-
@RelationId((partnerSetting: PartnerSetting) => partnerSetting.partnerDomain)
|
|
45
|
-
@Field({ nullable: true })
|
|
46
|
-
partnerDomainId?: string
|
|
47
|
-
|
|
48
|
-
@ManyToOne(type => Setting)
|
|
49
|
-
@Field({ nullable: true })
|
|
50
|
-
setting: Setting
|
|
51
|
-
|
|
52
|
-
@RelationId((partnerSetting: PartnerSetting) => partnerSetting.setting)
|
|
53
|
-
@Field({ nullable: true })
|
|
54
|
-
settingId?: string
|
|
55
|
-
|
|
56
|
-
@Column({
|
|
57
|
-
nullable: true
|
|
58
|
-
})
|
|
59
|
-
@Field({ nullable: true })
|
|
60
|
-
value?: string
|
|
61
|
-
|
|
62
|
-
@Field({ nullable: true })
|
|
63
|
-
name?: string
|
|
64
|
-
|
|
65
|
-
@Field({ nullable: true })
|
|
66
|
-
description?: string
|
|
67
|
-
|
|
68
|
-
@Field({ nullable: true })
|
|
69
|
-
category?: string
|
|
70
|
-
|
|
71
|
-
@CreateDateColumn()
|
|
72
|
-
@Field({ nullable: true })
|
|
73
|
-
createdAt?: Date
|
|
74
|
-
|
|
75
|
-
@UpdateDateColumn()
|
|
76
|
-
@Field({ nullable: true })
|
|
77
|
-
updatedAt?: Date
|
|
78
|
-
|
|
79
|
-
@ManyToOne(type => User, { nullable: true })
|
|
80
|
-
@Field(type => User, { nullable: true })
|
|
81
|
-
creator?: User
|
|
82
|
-
|
|
83
|
-
@RelationId((partnerSetting: PartnerSetting) => partnerSetting.creator)
|
|
84
|
-
creatorId?: string
|
|
85
|
-
|
|
86
|
-
@ManyToOne(type => User, { nullable: true })
|
|
87
|
-
@Field(type => User, { nullable: true })
|
|
88
|
-
updater?: User
|
|
89
|
-
|
|
90
|
-
@RelationId((partnerSetting: PartnerSetting) => partnerSetting.updater)
|
|
91
|
-
updaterId?: string
|
|
92
|
-
|
|
93
|
-
static async get(domain: Domain, partnerDomain: Domain, name: string, tx?: EntityManager): Promise<string> {
|
|
94
|
-
const partnerSettingRepo: Repository<PartnerSetting> =
|
|
95
|
-
tx?.getRepository(PartnerSetting) || getRepository(PartnerSetting)
|
|
96
|
-
const settingRepo: Repository<Setting> = tx?.getRepository(Setting) || getRepository(Setting)
|
|
97
|
-
const setting: Setting = await settingRepo.findOneBy({ domain: { id: domain.id }, name })
|
|
98
|
-
|
|
99
|
-
if (!setting) throw new Error(`No setting found has '${name}' as its name`)
|
|
100
|
-
|
|
101
|
-
const domainSetting: PartnerSetting = await partnerSettingRepo.findOneBy({
|
|
102
|
-
domain: { id: domain.id },
|
|
103
|
-
partnerDomain: { id: partnerDomain.id },
|
|
104
|
-
setting: { id: setting.id }
|
|
105
|
-
})
|
|
106
|
-
|
|
107
|
-
return domainSetting?.value || setting?.value
|
|
108
|
-
}
|
|
109
|
-
}
|
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
import { Arg, Ctx, Directive, Mutation, Resolver } from 'type-graphql'
|
|
2
|
-
import { In } from 'typeorm'
|
|
3
|
-
|
|
4
|
-
import { Setting } from './setting'
|
|
5
|
-
import { NewSetting, SettingPatch } from './setting-type'
|
|
6
|
-
|
|
7
|
-
@Resolver(Setting)
|
|
8
|
-
export class SettingMutation {
|
|
9
|
-
@Directive('@transaction')
|
|
10
|
-
@Directive('@privilege(category: "setting", privilege: "mutation")')
|
|
11
|
-
@Mutation(returns => Setting, { description: 'To create new Setting' })
|
|
12
|
-
async createSetting(@Arg('setting') setting: NewSetting, @Ctx() context: ResolverContext): Promise<Setting> {
|
|
13
|
-
const { tx, domain, user } = context.state
|
|
14
|
-
return await tx.getRepository(Setting).save({
|
|
15
|
-
domain,
|
|
16
|
-
...setting,
|
|
17
|
-
creator: user,
|
|
18
|
-
updater: user
|
|
19
|
-
})
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
@Directive('@transaction')
|
|
23
|
-
@Directive('@privilege(category: "setting", privilege: "mutation")')
|
|
24
|
-
@Mutation(returns => Setting, { description: 'To modify Setting information' })
|
|
25
|
-
async updateSetting(
|
|
26
|
-
@Arg('name') name: string,
|
|
27
|
-
@Arg('patch') patch: SettingPatch,
|
|
28
|
-
@Ctx() context: ResolverContext
|
|
29
|
-
): Promise<Setting> {
|
|
30
|
-
const { tx, domain, user } = context.state
|
|
31
|
-
|
|
32
|
-
const repository = tx.getRepository(Setting)
|
|
33
|
-
const setting = await repository.findOneBy({ domain: { id: domain.id }, name })
|
|
34
|
-
|
|
35
|
-
return await repository.save({
|
|
36
|
-
name,
|
|
37
|
-
creater: user,
|
|
38
|
-
...setting,
|
|
39
|
-
...patch,
|
|
40
|
-
domain,
|
|
41
|
-
updater: user
|
|
42
|
-
})
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
@Directive('@transaction')
|
|
46
|
-
@Directive('@privilege(category: "setting", privilege: "mutation")')
|
|
47
|
-
@Mutation(returns => [Setting], { description: "To modify multiple Settings' information" })
|
|
48
|
-
async updateMultipleSetting(
|
|
49
|
-
@Arg('patches', type => [SettingPatch]) patches: SettingPatch[],
|
|
50
|
-
@Ctx() context: ResolverContext
|
|
51
|
-
): Promise<Setting[]> {
|
|
52
|
-
const { tx, domain, user } = context.state
|
|
53
|
-
|
|
54
|
-
let results = []
|
|
55
|
-
const _createRecords = patches.filter((patch: any) => patch.cuFlag === '+')
|
|
56
|
-
const _updateRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === 'M')
|
|
57
|
-
const settingRepo = tx.getRepository(Setting)
|
|
58
|
-
|
|
59
|
-
if (_createRecords.length > 0) {
|
|
60
|
-
for (let i = 0; i < _createRecords.length; i++) {
|
|
61
|
-
const newRecord = _createRecords[i]
|
|
62
|
-
|
|
63
|
-
const result = await settingRepo.save({
|
|
64
|
-
domain: { id: domain.id },
|
|
65
|
-
creator: user,
|
|
66
|
-
updater: user,
|
|
67
|
-
...newRecord
|
|
68
|
-
})
|
|
69
|
-
|
|
70
|
-
results.push({ ...result, cuFlag: '+' })
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
if (_updateRecords.length > 0) {
|
|
75
|
-
for (let i = 0; i < _updateRecords.length; i++) {
|
|
76
|
-
const newRecord = _updateRecords[i]
|
|
77
|
-
const setting = await settingRepo.findOneBy({ id: newRecord.id })
|
|
78
|
-
|
|
79
|
-
const result = await settingRepo.save({
|
|
80
|
-
...setting,
|
|
81
|
-
...newRecord,
|
|
82
|
-
updater: user
|
|
83
|
-
})
|
|
84
|
-
|
|
85
|
-
results.push({ ...result, cuFlag: 'M' })
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
return results
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
@Directive('@transaction')
|
|
93
|
-
@Directive('@privilege(category: "setting", privilege: "mutation")')
|
|
94
|
-
@Mutation(returns => Boolean, { description: 'To delete Setting' })
|
|
95
|
-
async deleteSetting(@Arg('name') name: string, @Ctx() context: ResolverContext): Promise<boolean> {
|
|
96
|
-
const { tx, domain } = context.state
|
|
97
|
-
|
|
98
|
-
await tx.getRepository(Setting).delete({ domain: { id: domain.id }, name })
|
|
99
|
-
return true
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
@Directive('@transaction')
|
|
103
|
-
@Directive('@privilege(category: "setting", privilege: "mutation")')
|
|
104
|
-
@Mutation(returns => Boolean, { description: 'To delete multiple settings' })
|
|
105
|
-
async deleteSettings(
|
|
106
|
-
@Arg('names', type => [String]) names: string[],
|
|
107
|
-
@Ctx() context: ResolverContext
|
|
108
|
-
): Promise<boolean> {
|
|
109
|
-
const { tx, domain } = context.state
|
|
110
|
-
|
|
111
|
-
await tx.getRepository(Setting).delete({
|
|
112
|
-
domain: { id: domain.id },
|
|
113
|
-
name: In(names)
|
|
114
|
-
})
|
|
115
|
-
|
|
116
|
-
return true
|
|
117
|
-
}
|
|
118
|
-
}
|