Slide 58
Slide 58 text
(SBQI2-SFTPMWFS3FQPTJUPSZ %#
ͱϫʔΫϑϩʔΛଓ͢Δ
import { saveCreatedTag } from '../../../customers/repos/tagRepository'
export const createTagMutation = mutationField('createTag', {
...
resolve(_root, { input }, context) {
const workflow = createTagWorkFlow()
// GraphQL 入力をワークフローの入力に変換
const unvalidatedTag = toUnvalidatedTag({
...input,
groupId: context.operator.groupId,
})
// ワークフローを実行し Repository パターンの関数で DB に保存 (ここも Result で繋ぐ)
const result = ok(unvalidatedTag).andThen(workflow).andThen(saveCreatedTag(context))
return result.match(
(tag) => ({
tag: {
...tag,
id: toGlobalId('Tag', tag.id),
},
}),
(error) => {
// ここで初めて例外をスロー (単に Nexus にエラーを伝える手段としてスローする)
throw error
}
)
},
})