@things-factory/dataset 10.1.150 → 10.1.155

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 (42) hide show
  1. package/dist-client/tsconfig.tsbuildinfo +1 -1
  2. package/dist-server/activities/activity-data-collect.js +2 -2
  3. package/dist-server/activities/activity-data-collect.js.map +1 -1
  4. package/dist-server/controllers/create-data-ooc.js +2 -2
  5. package/dist-server/controllers/create-data-ooc.js.map +1 -1
  6. package/dist-server/controllers/create-data-sample.js +1 -2
  7. package/dist-server/controllers/create-data-sample.js.map +1 -1
  8. package/dist-server/controllers/finalize-data-collection.js +2 -3
  9. package/dist-server/controllers/finalize-data-collection.js.map +1 -1
  10. package/dist-server/controllers/issue-data-collection-task.js +1 -2
  11. package/dist-server/controllers/issue-data-collection-task.js.map +1 -1
  12. package/dist-server/controllers/issue-ooc-resolve.js +2 -2
  13. package/dist-server/controllers/issue-ooc-resolve.js.map +1 -1
  14. package/dist-server/controllers/issue-ooc-review.js +2 -2
  15. package/dist-server/controllers/issue-ooc-review.js.map +1 -1
  16. package/dist-server/controllers/query-data-summary-by-period.js +1 -2
  17. package/dist-server/controllers/query-data-summary-by-period.js.map +1 -1
  18. package/dist-server/routes.js +1 -2
  19. package/dist-server/routes.js.map +1 -1
  20. package/dist-server/service/data-archive/data-archive-query.js +2 -3
  21. package/dist-server/service/data-archive/data-archive-query.js.map +1 -1
  22. package/dist-server/service/data-key-set/data-key-set-query.js +2 -3
  23. package/dist-server/service/data-key-set/data-key-set-query.js.map +1 -1
  24. package/dist-server/service/data-ooc/data-ooc-query.js +2 -3
  25. package/dist-server/service/data-ooc/data-ooc-query.js.map +1 -1
  26. package/dist-server/service/data-sample/data-sample-query.js +5 -6
  27. package/dist-server/service/data-sample/data-sample-query.js.map +1 -1
  28. package/dist-server/service/data-sensor/data-sensor-query.js +2 -3
  29. package/dist-server/service/data-sensor/data-sensor-query.js.map +1 -1
  30. package/dist-server/service/data-set/data-set-mutation.js +2 -3
  31. package/dist-server/service/data-set/data-set-mutation.js.map +1 -1
  32. package/dist-server/service/data-set/data-set-query.js +7 -8
  33. package/dist-server/service/data-set/data-set-query.js.map +1 -1
  34. package/dist-server/service/data-set-history/data-set-history-query.js +2 -3
  35. package/dist-server/service/data-set-history/data-set-history-query.js.map +1 -1
  36. package/dist-server/service/data-summary/data-summary-query.js +5 -6
  37. package/dist-server/service/data-summary/data-summary-query.js.map +1 -1
  38. package/dist-server/tsconfig.tsbuildinfo +1 -1
  39. package/package.json +12 -12
  40. package/dist-server/utils/domain-inheritance.d.ts +0 -2
  41. package/dist-server/utils/domain-inheritance.js +0 -31
  42. package/dist-server/utils/domain-inheritance.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"data-set-mutation.js","sourceRoot":"","sources":["../../../server/service/data-set/data-set-mutation.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arg, Ctx, Directive, Mutation, Resolver } from 'type-graphql'\nimport { In } from 'typeorm'\n\nimport { getRepository } from '@things-factory/shell'\nimport { User } from '@things-factory/auth-base'\nimport { createAttachment, deleteAttachmentsByRef } from '@things-factory/attachment-base'\nimport { ApprovalLineItem, OrgMemberTargetType } from '@things-factory/organization'\nimport { Application, CallbackBase, registerSchedule, unregisterSchedule } from '@things-factory/scheduler-client'\n\nimport { getDataFinalizeCrontabSchedule } from '../../controllers/finalize-data-collection.js'\nimport { DataSet } from './data-set.js'\nimport { DataSetPatch, NewDataSet } from './data-set-type.js'\nimport { issueDataCollectionTask } from '../../controllers/issue-data-collection-task.js'\nimport { getDomainIdsWithAncestors } from '../../utils/domain-inheritance.js'\n\nconst crypto = require('crypto')\n\nfunction getApprovalLineValue(patch: NewDataSet | DataSetPatch): ApprovalLineItem[] {\n const { reviewApprovalLine } = patch\n\n if (!('reviewApprovalLine' in patch)) {\n /* reviewApprovalLine 언급되지 않았다면, 업데이트하지 않는다. */\n return\n }\n\n if (!reviewApprovalLine || !(reviewApprovalLine instanceof Array)) {\n /* approvalLine의 값이 없거나 배열이 아니라면, 클리어시킨다. */\n return null\n }\n\n return reviewApprovalLine\n .map(m => {\n return {\n type: m.type,\n approver: m.approver\n } as ApprovalLineItem\n })\n .filter(m => m.type)\n .filter(m => {\n switch (m.type) {\n case OrgMemberTargetType.Employee:\n case OrgMemberTargetType.Department:\n case OrgMemberTargetType.Role:\n return !!m.approver?.id\n default:\n return true\n }\n })\n}\n\nfunction getOutlierApprovalLineValue(patch: NewDataSet | DataSetPatch): ApprovalLineItem[] {\n const { outlierApprovalLine } = patch\n\n if (!('outlierApprovalLine' in patch)) {\n /* approvalLine이 언급되지 않았다면, 업데이트하지 않는다. */\n return\n }\n\n if (!outlierApprovalLine || !(outlierApprovalLine instanceof Array)) {\n /* approvalLine의 값이 없거나 배열이 아니라면, 클리어시킨다. */\n return null\n }\n\n return outlierApprovalLine\n .map(m => {\n return {\n type: m.type,\n approver: m.approver\n } as ApprovalLineItem\n })\n .filter(m => m.type)\n .filter(m => {\n switch (m.type) {\n case OrgMemberTargetType.Employee:\n case OrgMemberTargetType.Department:\n case OrgMemberTargetType.Role:\n return !!m.approver?.id\n default:\n return true\n }\n })\n}\n\n@Resolver(DataSet)\nexport class DataSetMutation {\n @Directive('@privilege(category: \"data-set\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Directive('@transaction')\n @Mutation(returns => DataSet, {\n description:\n 'Creates a new dataset with complete configuration including data items, roles, approval lines, and workflow settings. This mutation initializes the data collection structure and associated metadata.'\n })\n async createDataSet(@Arg('dataSet') dataSet: NewDataSet, @Ctx() context: ResolverContext): Promise<DataSet> {\n const { domain, user, tx } = context.state\n const dataSetRepo = getRepository(DataSet, tx)\n\n const result = await dataSetRepo.save({\n ...dataSet,\n approvalLine: getApprovalLineValue(dataSet),\n outlierApprovalLineValue: getOutlierApprovalLineValue(dataSet),\n version: 1,\n domain,\n creator: user,\n updater: user\n })\n\n await this._createAttachment(context, dataSet.reportTemplate, { ref: result, cuFlag: '+' })\n\n return result\n }\n\n @Directive('@privilege(category: \"data-set\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Directive('@transaction')\n @Mutation(returns => DataSet, {\n description:\n 'Updates an existing dataset configuration. This mutation allows modification of data items, roles, approval lines, and other settings while maintaining version history.'\n })\n async updateDataSet(\n @Arg('id') id: string,\n @Arg('patch') patch: DataSetPatch,\n @Ctx() context: ResolverContext\n ): Promise<DataSet> {\n const { domain, user, tx } = context.state\n const dataSetRepo = getRepository(DataSet, tx)\n\n const dataSet = await dataSetRepo.findOne({\n where: { domain: { id: domain.id }, id },\n relations: ['domain', 'dataKeySet', 'entryRole', 'supervisoryRole', 'creator', 'updater']\n /* history에 항상 반영될 수 있도록 relations가 있어야 함. */\n })\n\n const result = await dataSetRepo.save({\n ...dataSet,\n ...patch,\n approvalLine: getApprovalLineValue(patch),\n outlierApprovalLineValue: getOutlierApprovalLineValue(patch),\n updater: user\n })\n\n await this._createAttachment(context, dataSet.reportTemplate, { ref: result, cuFlag: 'M' })\n\n return result\n }\n\n @Directive('@privilege(category: \"data-set\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Directive('@transaction')\n @Mutation(returns => [DataSet], {\n description:\n 'Updates multiple datasets in a single operation. This mutation supports batch processing for efficient management of multiple dataset configurations.'\n })\n async updateMultipleDataSet(\n @Arg('patches', type => [DataSetPatch]) patches: DataSetPatch[],\n @Ctx() context: ResolverContext\n ): Promise<DataSet[]> {\n const { domain, user, tx } = context.state\n const dataSetRepo = getRepository(DataSet, tx)\n\n let results = []\n const _createRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === '+')\n const _updateRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === 'M')\n\n if (_createRecords.length > 0) {\n const cuFlag = '+'\n for (let i = 0; i < _createRecords.length; i++) {\n const newRecord = _createRecords[i]\n\n const result = await dataSetRepo.save({\n ...newRecord,\n approvalLine: getApprovalLineValue(newRecord),\n outlierApprovalLineValue: getOutlierApprovalLineValue(newRecord),\n domain,\n creator: user,\n updater: user\n })\n\n await this._createAttachment(context, newRecord.reportTemplate, { ref: result, cuFlag })\n\n results.push({\n ...result,\n cuFlag\n })\n }\n }\n\n if (_updateRecords.length > 0) {\n const cuFlag = 'M'\n for (let i = 0; i < _updateRecords.length; i++) {\n const updateRecord = _updateRecords[i]\n const dataSet = await dataSetRepo.findOne({\n where: { id: updateRecord.id },\n /* history에 항상 반영될 수 있도록 relations가 있어야 함. */\n relations: ['domain', 'dataKeySet', 'entryRole', 'supervisoryRole', 'creator', 'updater']\n })\n\n const result = await dataSetRepo.save({\n ...dataSet,\n ...updateRecord,\n approvalLine: getApprovalLineValue(updateRecord),\n outlierApprovalLineValue: getOutlierApprovalLineValue(updateRecord),\n updater: user\n })\n\n await this._createAttachment(context, updateRecord.reportTemplate, { ref: result, cuFlag })\n\n results.push({\n ...result,\n cuFlag\n })\n }\n }\n\n return results\n }\n\n @Directive('@privilege(category: \"data-set\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Directive('@transaction')\n @Mutation(returns => Boolean, {\n description:\n 'Deletes a dataset and all its associated data. This operation removes the dataset configuration, data samples, and related metadata from the system.'\n })\n async deleteDataSet(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<boolean> {\n const { domain, tx } = context.state\n\n await getRepository(DataSet, tx).softDelete({ domain: { id: domain.id }, id })\n await deleteAttachmentsByRef(null, { refBys: [`report-${id}`] }, context)\n\n return true\n }\n\n @Directive('@privilege(category: \"data-set\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Directive('@transaction')\n @Mutation(returns => Boolean, {\n description:\n 'Deletes multiple datasets in a single operation. This mutation supports batch deletion for efficient cleanup of multiple datasets and their associated data.'\n })\n async deleteDataSets(@Arg('ids', type => [String]) ids: string[], @Ctx() context: ResolverContext): Promise<boolean> {\n const { domain, tx } = context.state\n\n await getRepository(DataSet, tx).softDelete({\n domain: { id: domain.id },\n id: In(ids)\n })\n\n await deleteAttachmentsByRef(null, { refBys: ids.map(id => `report-${id}`) }, context)\n\n return true\n }\n\n @Directive('@transaction')\n @Mutation(returns => Boolean, {\n description:\n 'Issues a data collection task for the specified dataset. This mutation creates a worklist activity for manual data entry, allowing authorized users to input data samples according to the dataset configuration.'\n })\n async issueDataCollection(@Arg('dataSetId') dataSetId: string, @Ctx() context: ResolverContext): Promise<boolean> {\n const { domain, tx, user } = context.state\n const domainIds = await getDomainIdsWithAncestors(domain)\n\n const dataSet = await getRepository(DataSet, tx).findOne({\n where: {\n domain: {\n id: In(domainIds)\n },\n id: dataSetId\n }\n })\n\n const { supervisoryRoleId, entryRoleId } = dataSet\n const allowedRoles = [supervisoryRoleId, entryRoleId].filter(Boolean)\n\n const me = await getRepository(User, tx).findOne({\n where: { id: user.id },\n relations: ['roles']\n })\n\n if (!me.roles.find(role => allowedRoles.includes(role.id))) {\n throw new Error(`You don't have permission to issue data collection task for this dataset.`)\n }\n\n const activityInstance = await issueDataCollectionTask(domain.id, dataSet.id, context)\n\n return !!activityInstance\n }\n\n @Directive('@transaction')\n @Mutation(returns => DataSet, {\n description:\n 'Starts automated data collection scheduling for the specified dataset. This mutation registers a cron-based schedule that automatically triggers data collection tasks according to the dataset configuration.'\n })\n async startDataCollectionSchedule(\n @Arg('dataSetId') dataSetId: string,\n @Ctx() context: ResolverContext\n ): Promise<DataSet> {\n const { domain, tx } = context.state\n\n var repository = getRepository(DataSet, tx)\n var dataSet = await repository.findOne({\n where: { domain: { id: domain.id }, id: dataSetId }\n })\n\n if (!dataSet) {\n throw new Error(\n context.t('error.data-set not found', {\n dataSet: dataSetId\n })\n )\n }\n\n try {\n var handle = await registerSchedule({\n name: dataSet.name,\n client: {\n application: Application,\n group: `${domain.id}`,\n type: 'data-set',\n key: dataSet.id,\n operation: 'schedule'\n },\n type: 'cron',\n schedule: dataSet.schedule,\n timezone: dataSet.timezone,\n task: {\n type: 'rest',\n connection: {\n host: `${CallbackBase}/callback-schedule-for-dataset`,\n headers: {\n 'Content-Type': 'application/json',\n accept: '*/*'\n }\n },\n data: {\n domainId: domain.id,\n dataSetId\n },\n history_check: true,\n failed_policy: 'retry_dlq',\n max_retry_count: 3,\n retry_period: 60\n }\n })\n\n return await repository.save({\n ...dataSet,\n scheduleId: handle\n })\n } catch (err) {\n console.error('startDataCollectionSchedule', err)\n }\n }\n\n @Directive('@transaction')\n @Mutation(returns => DataSet, {\n nullable: true,\n description:\n 'Stops automated data collection scheduling for the specified dataset. This mutation unregisters the cron schedule and disables automatic data collection tasks.'\n })\n async stopDataCollectionSchedule(\n @Arg('dataSetId') dataSetId: string,\n @Ctx() context: ResolverContext\n ): Promise<DataSet | undefined> {\n const { domain, tx } = context.state\n\n var repository = getRepository(DataSet, tx)\n var dataSet = await repository.findOne({\n where: { domain: { id: domain.id }, id: dataSetId }\n })\n\n if (!dataSet) {\n throw new Error(\n context.t('error.data-set not found', {\n dataSet: dataSetId\n })\n )\n }\n\n try {\n await unregisterSchedule(dataSet.scheduleId)\n\n return await repository.save({\n ...dataSet,\n scheduleId: null\n })\n } catch (err) {\n console.error('stopDataCollectionSchedule', err)\n }\n }\n\n @Directive('@transaction')\n @Mutation(returns => DataSet, {\n description:\n 'Starts automated data summary scheduling for the specified dataset. This mutation registers a cron-based schedule that automatically generates statistical summaries of collected data according to the configured summary period.'\n })\n async startDataSummarySchedule(\n @Arg('dataSetId') dataSetId: string,\n @Ctx() context: ResolverContext\n ): Promise<DataSet> {\n const { domain, tx } = context.state\n\n var repository = getRepository(DataSet, tx)\n var dataSet = await repository.findOne({\n where: { domain: { id: domain.id }, id: dataSetId }\n })\n\n if (!dataSet) {\n throw new Error(\n context.t('error.data-set not found', {\n dataSet: dataSetId\n })\n )\n }\n\n if (!dataSet.summaryPeriod) {\n throw new Error(\n context.t('error.data-set summary-period not set', {\n dataSet: dataSetId\n })\n )\n }\n\n const schedule = await getDataFinalizeCrontabSchedule(dataSet, context)\n\n try {\n var handle = await registerSchedule({\n name: dataSet.name,\n client: {\n application: Application,\n group: `${domain.id}`,\n type: 'data-set',\n key: dataSet.id,\n operation: 'summary'\n },\n type: 'cron',\n schedule,\n timezone: dataSet.timezone,\n task: {\n type: 'rest',\n connection: {\n host: `${CallbackBase}/callback-schedule-for-dataset-summary`,\n headers: {\n 'Content-Type': 'application/json',\n accept: '*/*'\n }\n },\n data: {\n domainId: domain.id,\n dataSetId\n },\n history_check: true,\n failed_policy: 'retry_dlq',\n max_retry_count: 3,\n retry_period: 60\n }\n })\n\n return await repository.save({\n ...dataSet,\n summarySchedule: schedule,\n summaryScheduleId: handle\n })\n } catch (err) {\n console.error('startDataSummarySchedule', err)\n }\n }\n\n @Directive('@transaction')\n @Mutation(returns => DataSet, {\n nullable: true,\n description: 'To stop data summary schedule for the given dataset'\n })\n async stopDataSummarySchedule(\n @Arg('dataSetId') dataSetId: string,\n @Ctx() context: ResolverContext\n ): Promise<DataSet | undefined> {\n const { domain, tx } = context.state\n\n var repository = getRepository(DataSet, tx)\n var dataSet = await repository.findOne({\n where: { domain: { id: domain.id }, id: dataSetId }\n })\n\n if (!dataSet) {\n throw new Error(\n context.t('error.data-set not found', {\n dataSet: dataSetId\n })\n )\n }\n\n try {\n await unregisterSchedule(dataSet.summaryScheduleId)\n\n return await repository.save({\n ...dataSet,\n summarySchedule: null,\n summaryScheduleId: null\n })\n } catch (err) {\n console.error('stopDataSummarySchedule', err)\n }\n }\n\n @Directive('@privilege(category: \"data-set\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Directive('@transaction')\n @Mutation(returns => Boolean, { description: 'To import multiple data-sets' })\n async importDataSets(\n @Arg('dataSets', type => [DataSetPatch]) dataSets: DataSet[],\n @Ctx() context: ResolverContext\n ): Promise<boolean> {\n const { domain, tx } = context.state\n const dataSetRepo = getRepository(DataSet, tx)\n\n await Promise.all(\n dataSets.map(async (dataSet: DataSet) => {\n const createdDataSet: DataSet = await dataSetRepo.save({\n domain,\n ...dataSet\n })\n })\n )\n\n return true\n }\n\n @Directive('@privilege(category: \"data-set\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Directive('@transaction')\n @Mutation(returns => [DataSet], { description: 'To copy multiple data-sets' })\n async copyDataSets(@Arg('ids', type => [String]) ids: string[], @Ctx() context: ResolverContext): Promise<DataSet[]> {\n const { domain, user, tx } = context.state\n const domainIds = await getDomainIdsWithAncestors(domain)\n const dataSetRepo = getRepository(DataSet, tx)\n\n const originals = await dataSetRepo.find({\n where: {\n id: In(ids),\n domain: { id: In(domainIds) }\n },\n relations: ['domain', 'supervisoryRole', 'entryRole', 'dataKeySet']\n })\n\n if (originals.length == 0) {\n return []\n }\n\n var newCopys = originals.map(dataSet => {\n let dataSetId = crypto.randomUUID()\n\n return {\n ...dataSet,\n id: dataSetId,\n name: dataSet.name + ' (' + dataSetId + ')',\n active: false,\n version: 1,\n domain,\n creator: user,\n updater: user,\n updatedAt: undefined,\n createdAt: undefined\n }\n })\n\n var copiedDataSets = await dataSetRepo.save(newCopys)\n\n return copiedDataSets\n }\n\n async _createAttachment(context, attachment, { ref, cuFlag }) {\n if (attachment) {\n cuFlag == 'M' && (await deleteAttachmentsByRef(null, { refBys: [ref.id] }, context))\n await createAttachment(\n null,\n {\n attachment: {\n file: attachment,\n refType: `${DataSet.name}-report-template`,\n refBy: ref.id\n }\n },\n context\n )\n }\n }\n}\n"]}
1
+ {"version":3,"file":"data-set-mutation.js","sourceRoot":"","sources":["../../../server/service/data-set/data-set-mutation.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arg, Ctx, Directive, Mutation, Resolver } from 'type-graphql'\nimport { In } from 'typeorm'\n\nimport { getRepository, getDomainIdsWithAncestors } from '@things-factory/shell'\nimport { User } from '@things-factory/auth-base'\nimport { createAttachment, deleteAttachmentsByRef } from '@things-factory/attachment-base'\nimport { ApprovalLineItem, OrgMemberTargetType } from '@things-factory/organization'\nimport { Application, CallbackBase, registerSchedule, unregisterSchedule } from '@things-factory/scheduler-client'\n\nimport { getDataFinalizeCrontabSchedule } from '../../controllers/finalize-data-collection.js'\nimport { DataSet } from './data-set.js'\nimport { DataSetPatch, NewDataSet } from './data-set-type.js'\nimport { issueDataCollectionTask } from '../../controllers/issue-data-collection-task.js'\n\nconst crypto = require('crypto')\n\nfunction getApprovalLineValue(patch: NewDataSet | DataSetPatch): ApprovalLineItem[] {\n const { reviewApprovalLine } = patch\n\n if (!('reviewApprovalLine' in patch)) {\n /* reviewApprovalLine 언급되지 않았다면, 업데이트하지 않는다. */\n return\n }\n\n if (!reviewApprovalLine || !(reviewApprovalLine instanceof Array)) {\n /* approvalLine의 값이 없거나 배열이 아니라면, 클리어시킨다. */\n return null\n }\n\n return reviewApprovalLine\n .map(m => {\n return {\n type: m.type,\n approver: m.approver\n } as ApprovalLineItem\n })\n .filter(m => m.type)\n .filter(m => {\n switch (m.type) {\n case OrgMemberTargetType.Employee:\n case OrgMemberTargetType.Department:\n case OrgMemberTargetType.Role:\n return !!m.approver?.id\n default:\n return true\n }\n })\n}\n\nfunction getOutlierApprovalLineValue(patch: NewDataSet | DataSetPatch): ApprovalLineItem[] {\n const { outlierApprovalLine } = patch\n\n if (!('outlierApprovalLine' in patch)) {\n /* approvalLine이 언급되지 않았다면, 업데이트하지 않는다. */\n return\n }\n\n if (!outlierApprovalLine || !(outlierApprovalLine instanceof Array)) {\n /* approvalLine의 값이 없거나 배열이 아니라면, 클리어시킨다. */\n return null\n }\n\n return outlierApprovalLine\n .map(m => {\n return {\n type: m.type,\n approver: m.approver\n } as ApprovalLineItem\n })\n .filter(m => m.type)\n .filter(m => {\n switch (m.type) {\n case OrgMemberTargetType.Employee:\n case OrgMemberTargetType.Department:\n case OrgMemberTargetType.Role:\n return !!m.approver?.id\n default:\n return true\n }\n })\n}\n\n@Resolver(DataSet)\nexport class DataSetMutation {\n @Directive('@privilege(category: \"data-set\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Directive('@transaction')\n @Mutation(returns => DataSet, {\n description:\n 'Creates a new dataset with complete configuration including data items, roles, approval lines, and workflow settings. This mutation initializes the data collection structure and associated metadata.'\n })\n async createDataSet(@Arg('dataSet') dataSet: NewDataSet, @Ctx() context: ResolverContext): Promise<DataSet> {\n const { domain, user, tx } = context.state\n const dataSetRepo = getRepository(DataSet, tx)\n\n const result = await dataSetRepo.save({\n ...dataSet,\n approvalLine: getApprovalLineValue(dataSet),\n outlierApprovalLineValue: getOutlierApprovalLineValue(dataSet),\n version: 1,\n domain,\n creator: user,\n updater: user\n })\n\n await this._createAttachment(context, dataSet.reportTemplate, { ref: result, cuFlag: '+' })\n\n return result\n }\n\n @Directive('@privilege(category: \"data-set\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Directive('@transaction')\n @Mutation(returns => DataSet, {\n description:\n 'Updates an existing dataset configuration. This mutation allows modification of data items, roles, approval lines, and other settings while maintaining version history.'\n })\n async updateDataSet(\n @Arg('id') id: string,\n @Arg('patch') patch: DataSetPatch,\n @Ctx() context: ResolverContext\n ): Promise<DataSet> {\n const { domain, user, tx } = context.state\n const dataSetRepo = getRepository(DataSet, tx)\n\n const dataSet = await dataSetRepo.findOne({\n where: { domain: { id: domain.id }, id },\n relations: ['domain', 'dataKeySet', 'entryRole', 'supervisoryRole', 'creator', 'updater']\n /* history에 항상 반영될 수 있도록 relations가 있어야 함. */\n })\n\n const result = await dataSetRepo.save({\n ...dataSet,\n ...patch,\n approvalLine: getApprovalLineValue(patch),\n outlierApprovalLineValue: getOutlierApprovalLineValue(patch),\n updater: user\n })\n\n await this._createAttachment(context, dataSet.reportTemplate, { ref: result, cuFlag: 'M' })\n\n return result\n }\n\n @Directive('@privilege(category: \"data-set\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Directive('@transaction')\n @Mutation(returns => [DataSet], {\n description:\n 'Updates multiple datasets in a single operation. This mutation supports batch processing for efficient management of multiple dataset configurations.'\n })\n async updateMultipleDataSet(\n @Arg('patches', type => [DataSetPatch]) patches: DataSetPatch[],\n @Ctx() context: ResolverContext\n ): Promise<DataSet[]> {\n const { domain, user, tx } = context.state\n const dataSetRepo = getRepository(DataSet, tx)\n\n let results = []\n const _createRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === '+')\n const _updateRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === 'M')\n\n if (_createRecords.length > 0) {\n const cuFlag = '+'\n for (let i = 0; i < _createRecords.length; i++) {\n const newRecord = _createRecords[i]\n\n const result = await dataSetRepo.save({\n ...newRecord,\n approvalLine: getApprovalLineValue(newRecord),\n outlierApprovalLineValue: getOutlierApprovalLineValue(newRecord),\n domain,\n creator: user,\n updater: user\n })\n\n await this._createAttachment(context, newRecord.reportTemplate, { ref: result, cuFlag })\n\n results.push({\n ...result,\n cuFlag\n })\n }\n }\n\n if (_updateRecords.length > 0) {\n const cuFlag = 'M'\n for (let i = 0; i < _updateRecords.length; i++) {\n const updateRecord = _updateRecords[i]\n const dataSet = await dataSetRepo.findOne({\n where: { id: updateRecord.id },\n /* history에 항상 반영될 수 있도록 relations가 있어야 함. */\n relations: ['domain', 'dataKeySet', 'entryRole', 'supervisoryRole', 'creator', 'updater']\n })\n\n const result = await dataSetRepo.save({\n ...dataSet,\n ...updateRecord,\n approvalLine: getApprovalLineValue(updateRecord),\n outlierApprovalLineValue: getOutlierApprovalLineValue(updateRecord),\n updater: user\n })\n\n await this._createAttachment(context, updateRecord.reportTemplate, { ref: result, cuFlag })\n\n results.push({\n ...result,\n cuFlag\n })\n }\n }\n\n return results\n }\n\n @Directive('@privilege(category: \"data-set\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Directive('@transaction')\n @Mutation(returns => Boolean, {\n description:\n 'Deletes a dataset and all its associated data. This operation removes the dataset configuration, data samples, and related metadata from the system.'\n })\n async deleteDataSet(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<boolean> {\n const { domain, tx } = context.state\n\n await getRepository(DataSet, tx).softDelete({ domain: { id: domain.id }, id })\n await deleteAttachmentsByRef(null, { refBys: [`report-${id}`] }, context)\n\n return true\n }\n\n @Directive('@privilege(category: \"data-set\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Directive('@transaction')\n @Mutation(returns => Boolean, {\n description:\n 'Deletes multiple datasets in a single operation. This mutation supports batch deletion for efficient cleanup of multiple datasets and their associated data.'\n })\n async deleteDataSets(@Arg('ids', type => [String]) ids: string[], @Ctx() context: ResolverContext): Promise<boolean> {\n const { domain, tx } = context.state\n\n await getRepository(DataSet, tx).softDelete({\n domain: { id: domain.id },\n id: In(ids)\n })\n\n await deleteAttachmentsByRef(null, { refBys: ids.map(id => `report-${id}`) }, context)\n\n return true\n }\n\n @Directive('@transaction')\n @Mutation(returns => Boolean, {\n description:\n 'Issues a data collection task for the specified dataset. This mutation creates a worklist activity for manual data entry, allowing authorized users to input data samples according to the dataset configuration.'\n })\n async issueDataCollection(@Arg('dataSetId') dataSetId: string, @Ctx() context: ResolverContext): Promise<boolean> {\n const { domain, tx, user } = context.state\n const domainIds = await getDomainIdsWithAncestors(domain)\n\n const dataSet = await getRepository(DataSet, tx).findOne({\n where: {\n domain: {\n id: In(domainIds)\n },\n id: dataSetId\n }\n })\n\n const { supervisoryRoleId, entryRoleId } = dataSet\n const allowedRoles = [supervisoryRoleId, entryRoleId].filter(Boolean)\n\n const me = await getRepository(User, tx).findOne({\n where: { id: user.id },\n relations: ['roles']\n })\n\n if (!me.roles.find(role => allowedRoles.includes(role.id))) {\n throw new Error(`You don't have permission to issue data collection task for this dataset.`)\n }\n\n const activityInstance = await issueDataCollectionTask(domain.id, dataSet.id, context)\n\n return !!activityInstance\n }\n\n @Directive('@transaction')\n @Mutation(returns => DataSet, {\n description:\n 'Starts automated data collection scheduling for the specified dataset. This mutation registers a cron-based schedule that automatically triggers data collection tasks according to the dataset configuration.'\n })\n async startDataCollectionSchedule(\n @Arg('dataSetId') dataSetId: string,\n @Ctx() context: ResolverContext\n ): Promise<DataSet> {\n const { domain, tx } = context.state\n\n var repository = getRepository(DataSet, tx)\n var dataSet = await repository.findOne({\n where: { domain: { id: domain.id }, id: dataSetId }\n })\n\n if (!dataSet) {\n throw new Error(\n context.t('error.data-set not found', {\n dataSet: dataSetId\n })\n )\n }\n\n try {\n var handle = await registerSchedule({\n name: dataSet.name,\n client: {\n application: Application,\n group: `${domain.id}`,\n type: 'data-set',\n key: dataSet.id,\n operation: 'schedule'\n },\n type: 'cron',\n schedule: dataSet.schedule,\n timezone: dataSet.timezone,\n task: {\n type: 'rest',\n connection: {\n host: `${CallbackBase}/callback-schedule-for-dataset`,\n headers: {\n 'Content-Type': 'application/json',\n accept: '*/*'\n }\n },\n data: {\n domainId: domain.id,\n dataSetId\n },\n history_check: true,\n failed_policy: 'retry_dlq',\n max_retry_count: 3,\n retry_period: 60\n }\n })\n\n return await repository.save({\n ...dataSet,\n scheduleId: handle\n })\n } catch (err) {\n console.error('startDataCollectionSchedule', err)\n }\n }\n\n @Directive('@transaction')\n @Mutation(returns => DataSet, {\n nullable: true,\n description:\n 'Stops automated data collection scheduling for the specified dataset. This mutation unregisters the cron schedule and disables automatic data collection tasks.'\n })\n async stopDataCollectionSchedule(\n @Arg('dataSetId') dataSetId: string,\n @Ctx() context: ResolverContext\n ): Promise<DataSet | undefined> {\n const { domain, tx } = context.state\n\n var repository = getRepository(DataSet, tx)\n var dataSet = await repository.findOne({\n where: { domain: { id: domain.id }, id: dataSetId }\n })\n\n if (!dataSet) {\n throw new Error(\n context.t('error.data-set not found', {\n dataSet: dataSetId\n })\n )\n }\n\n try {\n await unregisterSchedule(dataSet.scheduleId)\n\n return await repository.save({\n ...dataSet,\n scheduleId: null\n })\n } catch (err) {\n console.error('stopDataCollectionSchedule', err)\n }\n }\n\n @Directive('@transaction')\n @Mutation(returns => DataSet, {\n description:\n 'Starts automated data summary scheduling for the specified dataset. This mutation registers a cron-based schedule that automatically generates statistical summaries of collected data according to the configured summary period.'\n })\n async startDataSummarySchedule(\n @Arg('dataSetId') dataSetId: string,\n @Ctx() context: ResolverContext\n ): Promise<DataSet> {\n const { domain, tx } = context.state\n\n var repository = getRepository(DataSet, tx)\n var dataSet = await repository.findOne({\n where: { domain: { id: domain.id }, id: dataSetId }\n })\n\n if (!dataSet) {\n throw new Error(\n context.t('error.data-set not found', {\n dataSet: dataSetId\n })\n )\n }\n\n if (!dataSet.summaryPeriod) {\n throw new Error(\n context.t('error.data-set summary-period not set', {\n dataSet: dataSetId\n })\n )\n }\n\n const schedule = await getDataFinalizeCrontabSchedule(dataSet, context)\n\n try {\n var handle = await registerSchedule({\n name: dataSet.name,\n client: {\n application: Application,\n group: `${domain.id}`,\n type: 'data-set',\n key: dataSet.id,\n operation: 'summary'\n },\n type: 'cron',\n schedule,\n timezone: dataSet.timezone,\n task: {\n type: 'rest',\n connection: {\n host: `${CallbackBase}/callback-schedule-for-dataset-summary`,\n headers: {\n 'Content-Type': 'application/json',\n accept: '*/*'\n }\n },\n data: {\n domainId: domain.id,\n dataSetId\n },\n history_check: true,\n failed_policy: 'retry_dlq',\n max_retry_count: 3,\n retry_period: 60\n }\n })\n\n return await repository.save({\n ...dataSet,\n summarySchedule: schedule,\n summaryScheduleId: handle\n })\n } catch (err) {\n console.error('startDataSummarySchedule', err)\n }\n }\n\n @Directive('@transaction')\n @Mutation(returns => DataSet, {\n nullable: true,\n description: 'To stop data summary schedule for the given dataset'\n })\n async stopDataSummarySchedule(\n @Arg('dataSetId') dataSetId: string,\n @Ctx() context: ResolverContext\n ): Promise<DataSet | undefined> {\n const { domain, tx } = context.state\n\n var repository = getRepository(DataSet, tx)\n var dataSet = await repository.findOne({\n where: { domain: { id: domain.id }, id: dataSetId }\n })\n\n if (!dataSet) {\n throw new Error(\n context.t('error.data-set not found', {\n dataSet: dataSetId\n })\n )\n }\n\n try {\n await unregisterSchedule(dataSet.summaryScheduleId)\n\n return await repository.save({\n ...dataSet,\n summarySchedule: null,\n summaryScheduleId: null\n })\n } catch (err) {\n console.error('stopDataSummarySchedule', err)\n }\n }\n\n @Directive('@privilege(category: \"data-set\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Directive('@transaction')\n @Mutation(returns => Boolean, { description: 'To import multiple data-sets' })\n async importDataSets(\n @Arg('dataSets', type => [DataSetPatch]) dataSets: DataSet[],\n @Ctx() context: ResolverContext\n ): Promise<boolean> {\n const { domain, tx } = context.state\n const dataSetRepo = getRepository(DataSet, tx)\n\n await Promise.all(\n dataSets.map(async (dataSet: DataSet) => {\n const createdDataSet: DataSet = await dataSetRepo.save({\n domain,\n ...dataSet\n })\n })\n )\n\n return true\n }\n\n @Directive('@privilege(category: \"data-set\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Directive('@transaction')\n @Mutation(returns => [DataSet], { description: 'To copy multiple data-sets' })\n async copyDataSets(@Arg('ids', type => [String]) ids: string[], @Ctx() context: ResolverContext): Promise<DataSet[]> {\n const { domain, user, tx } = context.state\n const domainIds = await getDomainIdsWithAncestors(domain)\n const dataSetRepo = getRepository(DataSet, tx)\n\n const originals = await dataSetRepo.find({\n where: {\n id: In(ids),\n domain: { id: In(domainIds) }\n },\n relations: ['domain', 'supervisoryRole', 'entryRole', 'dataKeySet']\n })\n\n if (originals.length == 0) {\n return []\n }\n\n var newCopys = originals.map(dataSet => {\n let dataSetId = crypto.randomUUID()\n\n return {\n ...dataSet,\n id: dataSetId,\n name: dataSet.name + ' (' + dataSetId + ')',\n active: false,\n version: 1,\n domain,\n creator: user,\n updater: user,\n updatedAt: undefined,\n createdAt: undefined\n }\n })\n\n var copiedDataSets = await dataSetRepo.save(newCopys)\n\n return copiedDataSets\n }\n\n async _createAttachment(context, attachment, { ref, cuFlag }) {\n if (attachment) {\n cuFlag == 'M' && (await deleteAttachmentsByRef(null, { refBys: [ref.id] }, context))\n await createAttachment(\n null,\n {\n attachment: {\n file: attachment,\n refType: `${DataSet.name}-report-template`,\n refBy: ref.id\n }\n },\n context\n )\n }\n }\n}\n"]}
@@ -16,13 +16,12 @@ const data_sample_js_1 = require("../data-sample/data-sample.js");
16
16
  const data_item_type_js_1 = require("./data-item-type.js");
17
17
  const data_set_js_1 = require("./data-set.js");
18
18
  const data_set_type_js_1 = require("./data-set-type.js");
19
- const domain_inheritance_js_1 = require("../../utils/domain-inheritance.js");
20
19
  var parser = require('cron-parser');
21
20
  let DataSetQuery = class DataSetQuery {
22
21
  // 데이터셋을 ID로 조회
23
22
  async dataSet(id, context) {
24
23
  const { domain } = context.state;
25
- const domainIds = await (0, domain_inheritance_js_1.getDomainIdsWithAncestors)(domain);
24
+ const domainIds = await (0, shell_1.getDomainIdsWithAncestors)(domain);
26
25
  return await (0, shell_1.getRepository)(data_set_js_1.DataSet).findOne({
27
26
  where: { domain: { id: (0, typeorm_1.In)(domainIds) }, id }
28
27
  });
@@ -30,7 +29,7 @@ let DataSetQuery = class DataSetQuery {
30
29
  // 데이터셋을 이름으로 조회
31
30
  async dataSetByName(name, context) {
32
31
  const { domain } = context.state;
33
- const domainIds = await (0, domain_inheritance_js_1.getDomainIdsWithAncestors)(domain);
32
+ const domainIds = await (0, shell_1.getDomainIdsWithAncestors)(domain);
34
33
  return await (0, shell_1.getRepository)(data_set_js_1.DataSet).findOne({
35
34
  where: { domain: { id: (0, typeorm_1.In)(domainIds) }, name }
36
35
  });
@@ -38,7 +37,7 @@ let DataSetQuery = class DataSetQuery {
38
37
  // 여러 데이터셋을 조회
39
38
  async dataSets(params, context) {
40
39
  const { domain } = context.state;
41
- const domainIds = await (0, domain_inheritance_js_1.getDomainIdsWithAncestors)(domain);
40
+ const domainIds = await (0, shell_1.getDomainIdsWithAncestors)(domain);
42
41
  const queryBuilder = (0, shell_1.getQueryBuilderFromListParams)({
43
42
  repository: (0, shell_1.getRepository)(data_set_js_1.DataSet),
44
43
  params,
@@ -53,7 +52,7 @@ let DataSetQuery = class DataSetQuery {
53
52
  // 데이터 입력을 위한 데이터셋 조회
54
53
  async dataSetsForEntry(params, context) {
55
54
  var { domain, user } = context.state;
56
- const domainIds = await (0, domain_inheritance_js_1.getDomainIdsWithAncestors)(domain);
55
+ const domainIds = await (0, shell_1.getDomainIdsWithAncestors)(domain);
57
56
  // 조회한 사용자가 entry-role을 가진 data-set 리스트만 반환
58
57
  user = await (0, shell_1.getRepository)(auth_base_1.User).findOne({
59
58
  where: { id: user.id },
@@ -85,7 +84,7 @@ let DataSetQuery = class DataSetQuery {
85
84
  // 데이터 보고를 위한 데이터셋 조회
86
85
  async dataSetsForReport(params, context) {
87
86
  var { domain, user } = context.state;
88
- const domainIds = await (0, domain_inheritance_js_1.getDomainIdsWithAncestors)(domain);
87
+ const domainIds = await (0, shell_1.getDomainIdsWithAncestors)(domain);
89
88
  // 조회한 사용자가 supervisory 역할을 가진 data-set 리스트만 반환
90
89
  user = await (0, shell_1.getRepository)(auth_base_1.User).findOne({
91
90
  where: { id: user.id },
@@ -320,7 +319,7 @@ let DataSetQuery = class DataSetQuery {
320
319
  }
321
320
  async isSupervisor(dataset, context) {
322
321
  const { user, domain } = context.state;
323
- const domainIds = await (0, domain_inheritance_js_1.getDomainIdsWithAncestors)(domain);
322
+ const domainIds = await (0, shell_1.getDomainIdsWithAncestors)(domain);
324
323
  const foundUser = await (0, shell_1.getRepository)(auth_base_1.User).findOne({
325
324
  where: { id: user.id },
326
325
  relations: ['roles']
@@ -330,7 +329,7 @@ let DataSetQuery = class DataSetQuery {
330
329
  }
331
330
  async isEntryAllowed(dataset, context) {
332
331
  const { user, domain } = context.state;
333
- const domainIds = await (0, domain_inheritance_js_1.getDomainIdsWithAncestors)(domain);
332
+ const domainIds = await (0, shell_1.getDomainIdsWithAncestors)(domain);
334
333
  const foundUser = await (0, shell_1.getRepository)(auth_base_1.User).findOne({
335
334
  where: { id: user.id },
336
335
  relations: ['roles']
@@ -1 +1 @@
1
- {"version":3,"file":"data-set-query.js","sourceRoot":"","sources":["../../../server/service/data-set/data-set-query.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arg, Args, Ctx, Directive, FieldResolver, Query, Resolver, Root } from 'type-graphql'\nimport { Brackets, In } from 'typeorm'\n\nimport { Attachment } from '@things-factory/attachment-base'\nimport { Role, User } from '@things-factory/auth-base'\nimport { Board } from '@things-factory/board-service'\nimport { ApprovalLineItem } from '@things-factory/organization'\nimport { Domain, getQueryBuilderFromListParams, getRepository, ListParam } from '@things-factory/shell'\nimport { AssigneeItem } from '@things-factory/worklist'\nimport { Scenario } from '@things-factory/integration-base'\n\nimport { DataKeySet } from '../data-key-set/data-key-set.js'\nimport { DataSample } from '../data-sample/data-sample.js'\nimport { DataItem } from './data-item-type.js'\nimport { DataSet, DataSetState } from './data-set.js'\nimport { DataSetList } from './data-set-type.js'\nimport { getDomainIdsWithAncestors } from '../../utils/domain-inheritance.js'\n\nvar parser = require('cron-parser')\n\n@Resolver(DataSet)\nexport class DataSetQuery {\n // 데이터셋을 ID로 조회\n @Directive('@privilege(category: \"data-set\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => DataSet, {\n description:\n 'Retrieves a single DataSet by its unique identifier. This query is used to fetch detailed information about a specific dataset including its configuration, data items, roles, and workflow settings.'\n })\n async dataSet(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<DataSet> {\n const { domain } = context.state\n const domainIds = await getDomainIdsWithAncestors(domain)\n\n return await getRepository(DataSet).findOne({\n where: { domain: { id: In(domainIds) }, id }\n })\n }\n\n // 데이터셋을 이름으로 조회\n @Directive('@privilege(category: \"data-set\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => DataSet, {\n description:\n 'Retrieves a DataSet by its name. This query is useful when you know the dataset name and need to fetch its complete configuration and settings.'\n })\n async dataSetByName(@Arg('name') name: string, @Ctx() context: ResolverContext): Promise<DataSet> {\n const { domain } = context.state\n const domainIds = await getDomainIdsWithAncestors(domain)\n\n return await getRepository(DataSet).findOne({\n where: { domain: { id: In(domainIds) }, name }\n })\n }\n\n // 여러 데이터셋을 조회\n @Directive('@privilege(category: \"data-set\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => DataSetList, {\n description:\n 'Retrieves multiple DataSets with pagination and filtering support. This query allows searching datasets by name, description, tag, or supervisory role, and is commonly used for listing and managing datasets in the system.'\n })\n async dataSets(@Args(type => ListParam) params: ListParam, @Ctx() context: ResolverContext): Promise<DataSetList> {\n const { domain } = context.state\n const domainIds = await getDomainIdsWithAncestors(domain)\n\n const queryBuilder = getQueryBuilderFromListParams({\n repository: getRepository(DataSet),\n params,\n domain: undefined,\n alias: 'dataset',\n searchables: ['name', 'description', 'tag', 'supervisoryRole']\n })\n\n queryBuilder.andWhere('dataset.domain IN (:...ancestorDomainIds)', { ancestorDomainIds: domainIds })\n\n const [items, total] = await queryBuilder.getManyAndCount()\n\n return { items, total }\n }\n\n // 데이터 입력을 위한 데이터셋 조회\n @Query(returns => DataSetList, {\n description:\n \"Retrieves DataSets that the current user is authorized to enter data for. This query filters datasets based on the user's roles (entry role or supervisory role) and only returns active datasets. Used for data entry interfaces where users need to see datasets they can contribute to.\"\n })\n async dataSetsForEntry(\n @Args(type => ListParam) params: ListParam,\n @Ctx() context: ResolverContext\n ): Promise<DataSetList> {\n var { domain, user } = context.state\n const domainIds = await getDomainIdsWithAncestors(domain)\n\n // 조회한 사용자가 entry-role을 가진 data-set 리스트만 반환\n user = await getRepository(User).findOne({\n where: { id: user.id },\n relations: ['roles']\n })\n\n const roles = user.roles.filter(role => domainIds.includes(role.domainId)).map(role => role.id)\n\n if (!roles.length) {\n return { items: [], total: 0 }\n }\n\n const [items, total] = await getQueryBuilderFromListParams({\n repository: getRepository(DataSet),\n params,\n domain: undefined,\n alias: 'dataset',\n searchables: ['name', 'description']\n })\n .andWhere('dataset.domain IN (:...ancestorDomainIds)', { ancestorDomainIds: domainIds })\n .andWhere('dataset.active = :active', { active: true })\n .andWhere(\n new Brackets(qb => {\n qb.where('dataset.supervisoryRole IN (:...roles)').orWhere('dataset.entryRole IN (:...roles)')\n })\n )\n .setParameter('roles', roles)\n .getManyAndCount()\n\n return {\n items,\n total\n }\n }\n\n // 데이터 보고를 위한 데이터셋 조회\n @Query(returns => DataSetList, {\n description:\n \"Retrieves DataSets that the current user is authorized to view reports for. This query filters datasets based on the user's supervisory roles and only returns active datasets. Used for reporting interfaces where users need to see datasets they can monitor and analyze.\"\n })\n async dataSetsForReport(\n @Args(type => ListParam) params: ListParam,\n @Ctx() context: ResolverContext\n ): Promise<DataSetList> {\n var { domain, user } = context.state\n const domainIds = await getDomainIdsWithAncestors(domain)\n\n // 조회한 사용자가 supervisory 역할을 가진 data-set 리스트만 반환\n user = await getRepository(User).findOne({\n where: { id: user.id },\n relations: ['roles']\n })\n const roles = user.roles.filter(role => domainIds.includes(role.domainId)).map(role => role.id)\n\n if (!roles.length) {\n return { items: [], total: 0 }\n }\n\n const [items, total] = await getQueryBuilderFromListParams({\n repository: getRepository(DataSet),\n params,\n domain: undefined,\n alias: 'dataset',\n searchables: ['name', 'description']\n })\n .andWhere('dataset.domain IN (:...ancestorDomainIds)', { ancestorDomainIds: domainIds })\n .andWhere(`dataset.active = :active`, { active: true })\n .andWhere('dataset.supervisoryRole IN (:...roles)', { roles })\n .getManyAndCount()\n\n return { items, total }\n }\n\n // 데이터셋의 상태를 조회\n @FieldResolver(type => DataSetState, {\n description:\n 'Retrieves the current operational status of the dataset including schedule information, state, start time, and next scheduled execution. This field resolver provides real-time status information for monitoring dataset operations.'\n })\n async status(@Root() dataSet: DataSet): Promise<DataSetState> {\n // 스케줄러 서비스에서 정보 가져오기\n return {\n id: '',\n scheduleId: '',\n state: '',\n startedAt: new Date(),\n nextSchedule: new Date()\n }\n }\n\n // 데이터셋의 데이터 항목을 조회\n @FieldResolver(type => [DataItem], {\n description:\n 'Retrieves the data items (fields) defined for this dataset. Data items specify the structure and validation rules for data collection, including field names, types, constraints, and display configurations.'\n })\n async dataItems(@Root() dataSet: DataSet): Promise<DataItem[]> {\n if (dataSet.dataItems instanceof Array) {\n return dataSet.dataItems.filter(item => item.name)\n }\n\n return []\n }\n\n // 데이터셋의 entry 역할을 조회\n @FieldResolver(type => Role, {\n description:\n 'Retrieves the role responsible for manually entering data for this dataset. Users with this role are authorized to input data samples for the dataset.'\n })\n async entryRole(@Root() dataSet: DataSet): Promise<Role> {\n return (\n dataSet.entryRole ||\n (dataSet.entryRoleId &&\n (await getRepository(Role).findOneBy({\n id: dataSet.entryRoleId\n })))\n )\n }\n\n // 데이터셋의 supervisory 역할을 조회\n @FieldResolver(type => Role, { description: 'Retrieves the supervisory role for the dataset' })\n async supervisoryRole(@Root() dataSet: DataSet): Promise<Role> {\n return (\n dataSet.supervisoryRole ||\n (dataSet.supervisoryRoleId &&\n (await getRepository(Role).findOneBy({\n id: dataSet.supervisoryRoleId\n })))\n )\n }\n\n // 데이터셋의 resolver 역할을 조회\n @FieldResolver(type => Role, { description: 'Retrieves the resolver role for the dataset' })\n async resolverRole(@Root() dataSet: DataSet): Promise<Role> {\n return (\n dataSet.resolverRole ||\n (dataSet.resolverRoleId &&\n (await getRepository(Role).findOneBy({\n id: dataSet.resolverRoleId\n })))\n )\n }\n\n @FieldResolver(type => [AssigneeItem], { description: 'Retrieves the assignee items for the dataset' })\n async assignees(@Root() dataSet: DataSet, @Ctx() context: ResolverContext): Promise<AssigneeItem[]> {\n const { domain, user } = context.state\n const { assignees } = dataSet\n\n if (!assignees || !(assignees instanceof Array)) {\n return null\n }\n\n var assigneeItemList = []\n\n for (let item of assignees) {\n // \"value\" deprecated. to be removed\n var { type, assignee, value } = item\n var id = assignee?.id || id\n\n switch (type) {\n case 'Employee':\n assignee = id && (await getRepository('Employee').findOneBy({ domain: { id: domain.id }, id }))\n break\n case 'Department':\n assignee = id && (await getRepository('Department').findOneBy({ domain: { id: domain.id }, id }))\n break\n case 'Role':\n assignee = id && (await getRepository('Role').findOneBy({ domain: { id: domain.id }, id }))\n break\n case 'Myself':\n assignee = user\n break\n case 'MyDepartment':\n case 'MySupervisor':\n break\n default:\n }\n\n id ? assigneeItemList.push({ type, assignee }) : assigneeItemList.push({ type })\n }\n\n return assigneeItemList\n }\n\n @FieldResolver(type => [ApprovalLineItem], { description: 'Retrieves the approval line items for the dataset' })\n async approvalLine(@Root() dataSet: DataSet, @Ctx() context: ResolverContext): Promise<ApprovalLineItem[]> {\n const { domain, user } = context.state\n const { reviewApprovalLine } = dataSet\n\n if (!reviewApprovalLine || !(reviewApprovalLine instanceof Array)) {\n return null\n }\n\n var approvalLineItems = []\n\n for (let item of reviewApprovalLine) {\n // \"value\" deprecated. to be removed\n var { type, approver, value } = item\n var id = approver?.id || value\n approver = null\n\n switch (type) {\n case 'Employee':\n approver = id && (await getRepository('Employee').findOneBy({ domain: { id: domain.id }, id }))\n break\n case 'Department':\n approver = id && (await getRepository('Department').findOneBy({ domain: { id: domain.id }, id }))\n break\n case 'Role':\n approver = id && (await getRepository('Role').findOneBy({ domain: { id: domain.id }, id }))\n break\n case 'Myself':\n approver = user\n break\n case 'MyDepartment':\n case 'MySupervisor':\n break\n default:\n }\n\n id ? approvalLineItems.push({ type, approver }) : approvalLineItems.push({ type })\n }\n\n return approvalLineItems\n }\n\n @FieldResolver(type => Board, { nullable: true, description: 'Retrieves the entry board for the dataset' })\n async entryBoard(@Root() dataSet: DataSet): Promise<Board> {\n if (dataSet.entryType == 'board' && dataSet.entryView) {\n return await getRepository(Board).findOneBy({ id: dataSet.entryView })\n }\n }\n\n @FieldResolver(type => Board, { nullable: true, description: 'Retrieves the monitor board for the dataset' })\n async monitorBoard(@Root() dataSet: DataSet): Promise<Board> {\n if (dataSet.monitorType == 'board' && dataSet.monitorView) {\n return await getRepository(Board).findOneBy({ id: dataSet.monitorView })\n }\n }\n\n @FieldResolver(type => DataKeySet, { nullable: true, description: 'Retrieves the data key set for the dataset' })\n async dataKeySet(@Root() dataSet: DataSet): Promise<DataKeySet> {\n return (\n dataSet.dataKeySet ||\n (dataSet.dataKeySetId &&\n (await getRepository(DataKeySet).findOneBy({\n id: dataSet.dataKeySetId\n })))\n )\n }\n\n @FieldResolver(type => Scenario, { description: 'Retrieves the normal scenario for the dataset.' })\n async normalScenario(@Root() dataSet: DataSet): Promise<Scenario> {\n return (\n dataSet.normalScenario ||\n (dataSet.normalScenarioId &&\n (await getRepository(Scenario).findOneBy({\n id: dataSet.normalScenarioId\n })))\n )\n }\n\n @FieldResolver(type => Scenario, { description: 'Retrieves the outlier scenario for the dataset.' })\n async outlierScenario(@Root() dataSet: DataSet): Promise<Scenario> {\n return (\n dataSet.outlierScenario ||\n (dataSet.outlierScenarioId &&\n (await getRepository(Scenario).findOneBy({\n id: dataSet.outlierScenarioId\n })))\n )\n }\n\n // 데이터셋의 도메인을 조회\n @FieldResolver(type => Domain)\n async domain(@Root() dataSet: DataSet): Promise<Domain> {\n return dataSet.domainId && (await getRepository(Domain).findOneBy({ id: dataSet.domainId }))\n }\n\n // 데이터셋의 업데이트한 사용자를 조회\n @FieldResolver(type => User)\n async updater(@Root() dataSet: DataSet): Promise<User> {\n return dataSet.updaterId && (await getRepository(User).findOneBy({ id: dataSet.updaterId }))\n }\n\n // 데이터셋의 생성자를 조회\n @FieldResolver(type => User)\n async creator(@Root() dataSet: DataSet): Promise<User> {\n return dataSet.creatorId && (await getRepository(User).findOneBy({ id: dataSet.creatorId }))\n }\n\n @FieldResolver(type => Date, { nullable: true, description: 'Retrieves the latest collection time for the dataset.' })\n async latestCollectedAt(@Root() dataSet: DataSet): Promise<Date> {\n const sample = await getRepository(DataSample).findOne({\n select: ['id', 'collectedAt'],\n where: { dataSet: { id: dataSet.id } },\n order: { collectedAt: 'DESC' }\n })\n\n return sample?.collectedAt\n }\n\n @FieldResolver(type => Date, { nullable: true, description: 'Retrieves the next schedule time for the dataset.' })\n async nextSchedule(@Root() dataSet: DataSet): Promise<Date> {\n const { domainId, schedule, timezone } = dataSet\n\n if (!schedule) {\n return\n }\n\n var interval = parser.parseExpression(schedule, {\n tz: timezone || ((await getRepository(Domain).findOneBy({ id: domainId })) as Domain).timezone || 'UTC'\n })\n\n return interval.next().toDate()\n }\n\n @FieldResolver(type => Date, { nullable: true, description: 'Retrieves the previous schedule time for the dataset.' })\n async prevSchedule(@Root() dataSet: DataSet): Promise<Date> {\n const { domainId, schedule, timezone } = dataSet\n\n if (!schedule) {\n return\n }\n\n var interval = parser.parseExpression(schedule, {\n tz: timezone || ((await getRepository(Domain).findOneBy({ id: domainId })) as Domain).timezone || 'UTC'\n })\n\n return interval.prev().toDate()\n }\n\n @FieldResolver(type => Date, {\n nullable: true,\n description: 'Retrieves the next summary schedule time for the dataset.'\n })\n async nextSummarySchedule(@Root() dataSet: DataSet): Promise<Date> {\n const { domainId, summarySchedule, timezone } = dataSet\n\n if (!summarySchedule) {\n return\n }\n\n var interval = parser.parseExpression(summarySchedule, {\n tz: timezone || ((await getRepository(Domain).findOneBy({ id: domainId })) as Domain).timezone || 'UTC'\n })\n\n return interval.next().toDate()\n\n // FIXME: getSchedules 의 파라미터를 수정해야한다. scheduler 가 없거나 커넥션이 끊겨있어서 오래걸리는 문제는 어떻게 ?? 비동기로 처리한다. 어떻게???\n // client: {\n // application: Application,\n // group: `${domain.id}`,\n // type: 'data-set',\n // key: dataSet.id,\n // operation: 'summary'\n // }\n // const schedule = getSchedules('name', 'group', false)\n // return schedule.nextSchedule\n }\n\n @FieldResolver(type => String, { description: 'Retrieves the report template for the dataset.' })\n async reportTemplate(@Root() dataset: DataSet): Promise<string | undefined> {\n const attachment: Attachment = await getRepository(Attachment).findOne({\n where: {\n domain: { id: dataset.domainId },\n refType: `${DataSet.name}-report-template`,\n refBy: dataset.id\n }\n })\n\n return attachment?.path\n }\n\n @FieldResolver(returns => Boolean, { description: 'Whether the user is a supervisor for this dataset' })\n async isSupervisor(@Root() dataset: DataSet, @Ctx() context: ResolverContext): Promise<boolean> {\n const { user, domain } = context.state\n const domainIds = await getDomainIdsWithAncestors(domain)\n\n const foundUser = await getRepository(User).findOne({\n where: { id: user.id },\n relations: ['roles']\n })\n\n const roles = foundUser.roles.filter(role => domainIds.includes(role.domainId)).map(role => role.id)\n\n return roles.includes(dataset.supervisoryRoleId)\n }\n\n @FieldResolver(returns => Boolean, { description: 'Whether the user is allowed to enter data for this dataset' })\n async isEntryAllowed(@Root() dataset: DataSet, @Ctx() context: ResolverContext): Promise<boolean> {\n const { user, domain } = context.state\n const domainIds = await getDomainIdsWithAncestors(domain)\n\n const foundUser = await getRepository(User).findOne({\n where: { id: user.id },\n relations: ['roles']\n })\n\n const roles = foundUser.roles.filter(role => domainIds.includes(role.domainId)).map(role => role.id)\n\n return roles.includes(dataset.entryRoleId)\n }\n}\n"]}
1
+ {"version":3,"file":"data-set-query.js","sourceRoot":"","sources":["../../../server/service/data-set/data-set-query.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arg, Args, Ctx, Directive, FieldResolver, Query, Resolver, Root } from 'type-graphql'\nimport { Brackets, In } from 'typeorm'\n\nimport { Attachment } from '@things-factory/attachment-base'\nimport { Role, User } from '@things-factory/auth-base'\nimport { Board } from '@things-factory/board-service'\nimport { ApprovalLineItem } from '@things-factory/organization'\nimport { Domain, getQueryBuilderFromListParams, getRepository, ListParam, getDomainIdsWithAncestors } from '@things-factory/shell'\nimport { AssigneeItem } from '@things-factory/worklist'\nimport { Scenario } from '@things-factory/integration-base'\n\nimport { DataKeySet } from '../data-key-set/data-key-set.js'\nimport { DataSample } from '../data-sample/data-sample.js'\nimport { DataItem } from './data-item-type.js'\nimport { DataSet, DataSetState } from './data-set.js'\nimport { DataSetList } from './data-set-type.js'\n\nvar parser = require('cron-parser')\n\n@Resolver(DataSet)\nexport class DataSetQuery {\n // 데이터셋을 ID로 조회\n @Directive('@privilege(category: \"data-set\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => DataSet, {\n description:\n 'Retrieves a single DataSet by its unique identifier. This query is used to fetch detailed information about a specific dataset including its configuration, data items, roles, and workflow settings.'\n })\n async dataSet(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<DataSet> {\n const { domain } = context.state\n const domainIds = await getDomainIdsWithAncestors(domain)\n\n return await getRepository(DataSet).findOne({\n where: { domain: { id: In(domainIds) }, id }\n })\n }\n\n // 데이터셋을 이름으로 조회\n @Directive('@privilege(category: \"data-set\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => DataSet, {\n description:\n 'Retrieves a DataSet by its name. This query is useful when you know the dataset name and need to fetch its complete configuration and settings.'\n })\n async dataSetByName(@Arg('name') name: string, @Ctx() context: ResolverContext): Promise<DataSet> {\n const { domain } = context.state\n const domainIds = await getDomainIdsWithAncestors(domain)\n\n return await getRepository(DataSet).findOne({\n where: { domain: { id: In(domainIds) }, name }\n })\n }\n\n // 여러 데이터셋을 조회\n @Directive('@privilege(category: \"data-set\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => DataSetList, {\n description:\n 'Retrieves multiple DataSets with pagination and filtering support. This query allows searching datasets by name, description, tag, or supervisory role, and is commonly used for listing and managing datasets in the system.'\n })\n async dataSets(@Args(type => ListParam) params: ListParam, @Ctx() context: ResolverContext): Promise<DataSetList> {\n const { domain } = context.state\n const domainIds = await getDomainIdsWithAncestors(domain)\n\n const queryBuilder = getQueryBuilderFromListParams({\n repository: getRepository(DataSet),\n params,\n domain: undefined,\n alias: 'dataset',\n searchables: ['name', 'description', 'tag', 'supervisoryRole']\n })\n\n queryBuilder.andWhere('dataset.domain IN (:...ancestorDomainIds)', { ancestorDomainIds: domainIds })\n\n const [items, total] = await queryBuilder.getManyAndCount()\n\n return { items, total }\n }\n\n // 데이터 입력을 위한 데이터셋 조회\n @Query(returns => DataSetList, {\n description:\n \"Retrieves DataSets that the current user is authorized to enter data for. This query filters datasets based on the user's roles (entry role or supervisory role) and only returns active datasets. Used for data entry interfaces where users need to see datasets they can contribute to.\"\n })\n async dataSetsForEntry(\n @Args(type => ListParam) params: ListParam,\n @Ctx() context: ResolverContext\n ): Promise<DataSetList> {\n var { domain, user } = context.state\n const domainIds = await getDomainIdsWithAncestors(domain)\n\n // 조회한 사용자가 entry-role을 가진 data-set 리스트만 반환\n user = await getRepository(User).findOne({\n where: { id: user.id },\n relations: ['roles']\n })\n\n const roles = user.roles.filter(role => domainIds.includes(role.domainId)).map(role => role.id)\n\n if (!roles.length) {\n return { items: [], total: 0 }\n }\n\n const [items, total] = await getQueryBuilderFromListParams({\n repository: getRepository(DataSet),\n params,\n domain: undefined,\n alias: 'dataset',\n searchables: ['name', 'description']\n })\n .andWhere('dataset.domain IN (:...ancestorDomainIds)', { ancestorDomainIds: domainIds })\n .andWhere('dataset.active = :active', { active: true })\n .andWhere(\n new Brackets(qb => {\n qb.where('dataset.supervisoryRole IN (:...roles)').orWhere('dataset.entryRole IN (:...roles)')\n })\n )\n .setParameter('roles', roles)\n .getManyAndCount()\n\n return {\n items,\n total\n }\n }\n\n // 데이터 보고를 위한 데이터셋 조회\n @Query(returns => DataSetList, {\n description:\n \"Retrieves DataSets that the current user is authorized to view reports for. This query filters datasets based on the user's supervisory roles and only returns active datasets. Used for reporting interfaces where users need to see datasets they can monitor and analyze.\"\n })\n async dataSetsForReport(\n @Args(type => ListParam) params: ListParam,\n @Ctx() context: ResolverContext\n ): Promise<DataSetList> {\n var { domain, user } = context.state\n const domainIds = await getDomainIdsWithAncestors(domain)\n\n // 조회한 사용자가 supervisory 역할을 가진 data-set 리스트만 반환\n user = await getRepository(User).findOne({\n where: { id: user.id },\n relations: ['roles']\n })\n const roles = user.roles.filter(role => domainIds.includes(role.domainId)).map(role => role.id)\n\n if (!roles.length) {\n return { items: [], total: 0 }\n }\n\n const [items, total] = await getQueryBuilderFromListParams({\n repository: getRepository(DataSet),\n params,\n domain: undefined,\n alias: 'dataset',\n searchables: ['name', 'description']\n })\n .andWhere('dataset.domain IN (:...ancestorDomainIds)', { ancestorDomainIds: domainIds })\n .andWhere(`dataset.active = :active`, { active: true })\n .andWhere('dataset.supervisoryRole IN (:...roles)', { roles })\n .getManyAndCount()\n\n return { items, total }\n }\n\n // 데이터셋의 상태를 조회\n @FieldResolver(type => DataSetState, {\n description:\n 'Retrieves the current operational status of the dataset including schedule information, state, start time, and next scheduled execution. This field resolver provides real-time status information for monitoring dataset operations.'\n })\n async status(@Root() dataSet: DataSet): Promise<DataSetState> {\n // 스케줄러 서비스에서 정보 가져오기\n return {\n id: '',\n scheduleId: '',\n state: '',\n startedAt: new Date(),\n nextSchedule: new Date()\n }\n }\n\n // 데이터셋의 데이터 항목을 조회\n @FieldResolver(type => [DataItem], {\n description:\n 'Retrieves the data items (fields) defined for this dataset. Data items specify the structure and validation rules for data collection, including field names, types, constraints, and display configurations.'\n })\n async dataItems(@Root() dataSet: DataSet): Promise<DataItem[]> {\n if (dataSet.dataItems instanceof Array) {\n return dataSet.dataItems.filter(item => item.name)\n }\n\n return []\n }\n\n // 데이터셋의 entry 역할을 조회\n @FieldResolver(type => Role, {\n description:\n 'Retrieves the role responsible for manually entering data for this dataset. Users with this role are authorized to input data samples for the dataset.'\n })\n async entryRole(@Root() dataSet: DataSet): Promise<Role> {\n return (\n dataSet.entryRole ||\n (dataSet.entryRoleId &&\n (await getRepository(Role).findOneBy({\n id: dataSet.entryRoleId\n })))\n )\n }\n\n // 데이터셋의 supervisory 역할을 조회\n @FieldResolver(type => Role, { description: 'Retrieves the supervisory role for the dataset' })\n async supervisoryRole(@Root() dataSet: DataSet): Promise<Role> {\n return (\n dataSet.supervisoryRole ||\n (dataSet.supervisoryRoleId &&\n (await getRepository(Role).findOneBy({\n id: dataSet.supervisoryRoleId\n })))\n )\n }\n\n // 데이터셋의 resolver 역할을 조회\n @FieldResolver(type => Role, { description: 'Retrieves the resolver role for the dataset' })\n async resolverRole(@Root() dataSet: DataSet): Promise<Role> {\n return (\n dataSet.resolverRole ||\n (dataSet.resolverRoleId &&\n (await getRepository(Role).findOneBy({\n id: dataSet.resolverRoleId\n })))\n )\n }\n\n @FieldResolver(type => [AssigneeItem], { description: 'Retrieves the assignee items for the dataset' })\n async assignees(@Root() dataSet: DataSet, @Ctx() context: ResolverContext): Promise<AssigneeItem[]> {\n const { domain, user } = context.state\n const { assignees } = dataSet\n\n if (!assignees || !(assignees instanceof Array)) {\n return null\n }\n\n var assigneeItemList = []\n\n for (let item of assignees) {\n // \"value\" deprecated. to be removed\n var { type, assignee, value } = item\n var id = assignee?.id || id\n\n switch (type) {\n case 'Employee':\n assignee = id && (await getRepository('Employee').findOneBy({ domain: { id: domain.id }, id }))\n break\n case 'Department':\n assignee = id && (await getRepository('Department').findOneBy({ domain: { id: domain.id }, id }))\n break\n case 'Role':\n assignee = id && (await getRepository('Role').findOneBy({ domain: { id: domain.id }, id }))\n break\n case 'Myself':\n assignee = user\n break\n case 'MyDepartment':\n case 'MySupervisor':\n break\n default:\n }\n\n id ? assigneeItemList.push({ type, assignee }) : assigneeItemList.push({ type })\n }\n\n return assigneeItemList\n }\n\n @FieldResolver(type => [ApprovalLineItem], { description: 'Retrieves the approval line items for the dataset' })\n async approvalLine(@Root() dataSet: DataSet, @Ctx() context: ResolverContext): Promise<ApprovalLineItem[]> {\n const { domain, user } = context.state\n const { reviewApprovalLine } = dataSet\n\n if (!reviewApprovalLine || !(reviewApprovalLine instanceof Array)) {\n return null\n }\n\n var approvalLineItems = []\n\n for (let item of reviewApprovalLine) {\n // \"value\" deprecated. to be removed\n var { type, approver, value } = item\n var id = approver?.id || value\n approver = null\n\n switch (type) {\n case 'Employee':\n approver = id && (await getRepository('Employee').findOneBy({ domain: { id: domain.id }, id }))\n break\n case 'Department':\n approver = id && (await getRepository('Department').findOneBy({ domain: { id: domain.id }, id }))\n break\n case 'Role':\n approver = id && (await getRepository('Role').findOneBy({ domain: { id: domain.id }, id }))\n break\n case 'Myself':\n approver = user\n break\n case 'MyDepartment':\n case 'MySupervisor':\n break\n default:\n }\n\n id ? approvalLineItems.push({ type, approver }) : approvalLineItems.push({ type })\n }\n\n return approvalLineItems\n }\n\n @FieldResolver(type => Board, { nullable: true, description: 'Retrieves the entry board for the dataset' })\n async entryBoard(@Root() dataSet: DataSet): Promise<Board> {\n if (dataSet.entryType == 'board' && dataSet.entryView) {\n return await getRepository(Board).findOneBy({ id: dataSet.entryView })\n }\n }\n\n @FieldResolver(type => Board, { nullable: true, description: 'Retrieves the monitor board for the dataset' })\n async monitorBoard(@Root() dataSet: DataSet): Promise<Board> {\n if (dataSet.monitorType == 'board' && dataSet.monitorView) {\n return await getRepository(Board).findOneBy({ id: dataSet.monitorView })\n }\n }\n\n @FieldResolver(type => DataKeySet, { nullable: true, description: 'Retrieves the data key set for the dataset' })\n async dataKeySet(@Root() dataSet: DataSet): Promise<DataKeySet> {\n return (\n dataSet.dataKeySet ||\n (dataSet.dataKeySetId &&\n (await getRepository(DataKeySet).findOneBy({\n id: dataSet.dataKeySetId\n })))\n )\n }\n\n @FieldResolver(type => Scenario, { description: 'Retrieves the normal scenario for the dataset.' })\n async normalScenario(@Root() dataSet: DataSet): Promise<Scenario> {\n return (\n dataSet.normalScenario ||\n (dataSet.normalScenarioId &&\n (await getRepository(Scenario).findOneBy({\n id: dataSet.normalScenarioId\n })))\n )\n }\n\n @FieldResolver(type => Scenario, { description: 'Retrieves the outlier scenario for the dataset.' })\n async outlierScenario(@Root() dataSet: DataSet): Promise<Scenario> {\n return (\n dataSet.outlierScenario ||\n (dataSet.outlierScenarioId &&\n (await getRepository(Scenario).findOneBy({\n id: dataSet.outlierScenarioId\n })))\n )\n }\n\n // 데이터셋의 도메인을 조회\n @FieldResolver(type => Domain)\n async domain(@Root() dataSet: DataSet): Promise<Domain> {\n return dataSet.domainId && (await getRepository(Domain).findOneBy({ id: dataSet.domainId }))\n }\n\n // 데이터셋의 업데이트한 사용자를 조회\n @FieldResolver(type => User)\n async updater(@Root() dataSet: DataSet): Promise<User> {\n return dataSet.updaterId && (await getRepository(User).findOneBy({ id: dataSet.updaterId }))\n }\n\n // 데이터셋의 생성자를 조회\n @FieldResolver(type => User)\n async creator(@Root() dataSet: DataSet): Promise<User> {\n return dataSet.creatorId && (await getRepository(User).findOneBy({ id: dataSet.creatorId }))\n }\n\n @FieldResolver(type => Date, { nullable: true, description: 'Retrieves the latest collection time for the dataset.' })\n async latestCollectedAt(@Root() dataSet: DataSet): Promise<Date> {\n const sample = await getRepository(DataSample).findOne({\n select: ['id', 'collectedAt'],\n where: { dataSet: { id: dataSet.id } },\n order: { collectedAt: 'DESC' }\n })\n\n return sample?.collectedAt\n }\n\n @FieldResolver(type => Date, { nullable: true, description: 'Retrieves the next schedule time for the dataset.' })\n async nextSchedule(@Root() dataSet: DataSet): Promise<Date> {\n const { domainId, schedule, timezone } = dataSet\n\n if (!schedule) {\n return\n }\n\n var interval = parser.parseExpression(schedule, {\n tz: timezone || ((await getRepository(Domain).findOneBy({ id: domainId })) as Domain).timezone || 'UTC'\n })\n\n return interval.next().toDate()\n }\n\n @FieldResolver(type => Date, { nullable: true, description: 'Retrieves the previous schedule time for the dataset.' })\n async prevSchedule(@Root() dataSet: DataSet): Promise<Date> {\n const { domainId, schedule, timezone } = dataSet\n\n if (!schedule) {\n return\n }\n\n var interval = parser.parseExpression(schedule, {\n tz: timezone || ((await getRepository(Domain).findOneBy({ id: domainId })) as Domain).timezone || 'UTC'\n })\n\n return interval.prev().toDate()\n }\n\n @FieldResolver(type => Date, {\n nullable: true,\n description: 'Retrieves the next summary schedule time for the dataset.'\n })\n async nextSummarySchedule(@Root() dataSet: DataSet): Promise<Date> {\n const { domainId, summarySchedule, timezone } = dataSet\n\n if (!summarySchedule) {\n return\n }\n\n var interval = parser.parseExpression(summarySchedule, {\n tz: timezone || ((await getRepository(Domain).findOneBy({ id: domainId })) as Domain).timezone || 'UTC'\n })\n\n return interval.next().toDate()\n\n // FIXME: getSchedules 의 파라미터를 수정해야한다. scheduler 가 없거나 커넥션이 끊겨있어서 오래걸리는 문제는 어떻게 ?? 비동기로 처리한다. 어떻게???\n // client: {\n // application: Application,\n // group: `${domain.id}`,\n // type: 'data-set',\n // key: dataSet.id,\n // operation: 'summary'\n // }\n // const schedule = getSchedules('name', 'group', false)\n // return schedule.nextSchedule\n }\n\n @FieldResolver(type => String, { description: 'Retrieves the report template for the dataset.' })\n async reportTemplate(@Root() dataset: DataSet): Promise<string | undefined> {\n const attachment: Attachment = await getRepository(Attachment).findOne({\n where: {\n domain: { id: dataset.domainId },\n refType: `${DataSet.name}-report-template`,\n refBy: dataset.id\n }\n })\n\n return attachment?.path\n }\n\n @FieldResolver(returns => Boolean, { description: 'Whether the user is a supervisor for this dataset' })\n async isSupervisor(@Root() dataset: DataSet, @Ctx() context: ResolverContext): Promise<boolean> {\n const { user, domain } = context.state\n const domainIds = await getDomainIdsWithAncestors(domain)\n\n const foundUser = await getRepository(User).findOne({\n where: { id: user.id },\n relations: ['roles']\n })\n\n const roles = foundUser.roles.filter(role => domainIds.includes(role.domainId)).map(role => role.id)\n\n return roles.includes(dataset.supervisoryRoleId)\n }\n\n @FieldResolver(returns => Boolean, { description: 'Whether the user is allowed to enter data for this dataset' })\n async isEntryAllowed(@Root() dataset: DataSet, @Ctx() context: ResolverContext): Promise<boolean> {\n const { user, domain } = context.state\n const domainIds = await getDomainIdsWithAncestors(domain)\n\n const foundUser = await getRepository(User).findOne({\n where: { id: user.id },\n relations: ['roles']\n })\n\n const roles = foundUser.roles.filter(role => domainIds.includes(role.domainId)).map(role => role.id)\n\n return roles.includes(dataset.entryRoleId)\n }\n}\n"]}
@@ -12,18 +12,17 @@ const data_key_set_js_1 = require("../data-key-set/data-key-set.js");
12
12
  const data_set_js_1 = require("../data-set/data-set.js");
13
13
  const data_set_history_js_1 = require("./data-set-history.js");
14
14
  const data_set_history_type_js_1 = require("./data-set-history-type.js");
15
- const domain_inheritance_js_1 = require("../../utils/domain-inheritance.js");
16
15
  let DataSetHistoryQuery = class DataSetHistoryQuery {
17
16
  async dataSetHistory(id, timestamp, context) {
18
17
  const { domain } = context.state;
19
- const domainIds = await (0, domain_inheritance_js_1.getDomainIdsWithAncestors)(domain);
18
+ const domainIds = await (0, shell_1.getDomainIdsWithAncestors)(domain);
20
19
  return await (0, shell_1.getRepository)(data_set_history_js_1.DataSetHistory).findOne({
21
20
  where: { domain: { id: (0, typeorm_1.In)(domainIds) }, originalId: id, updatedAt: timestamp }
22
21
  });
23
22
  }
24
23
  async dataSetHistories(params, context) {
25
24
  const { domain } = context.state;
26
- const domainIds = await (0, domain_inheritance_js_1.getDomainIdsWithAncestors)(domain);
25
+ const domainIds = await (0, shell_1.getDomainIdsWithAncestors)(domain);
27
26
  const queryBuilder = (0, shell_1.getQueryBuilderFromListParams)({
28
27
  repository: (0, shell_1.getRepository)(data_set_history_js_1.DataSetHistory),
29
28
  params,
@@ -1 +1 @@
1
- {"version":3,"file":"data-set-history-query.js","sourceRoot":"","sources":["../../../server/service/data-set-history/data-set-history-query.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arg, Args, Ctx, Directive, FieldResolver, Query, Resolver, Root } from 'type-graphql'\nimport { In } from 'typeorm'\n\nimport { Attachment } from '@things-factory/attachment-base'\nimport { Role, User } from '@things-factory/auth-base'\nimport { Board } from '@things-factory/board-service'\nimport { Domain, getQueryBuilderFromListParams, getRepository, ListParam, ScalarDate } from '@things-factory/shell'\n\nimport { DataKeySet } from '../data-key-set/data-key-set.js'\nimport { DataSet } from '../data-set/data-set.js'\nimport { DataSetHistory } from './data-set-history.js'\nimport { DataSetHistoryList } from './data-set-history-type.js'\nimport { getDomainIdsWithAncestors } from '../../utils/domain-inheritance.js'\n\n@Resolver(DataSetHistory)\nexport class DataSetHistoryQuery {\n @Directive('@privilege(category: \"data-set-history\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => DataSetHistory, { description: 'To fetch a DataSetHistory' })\n async dataSetHistory(\n @Arg('id') id: string,\n @Arg('timestamp', type => ScalarDate) timestamp: Date,\n @Ctx() context: ResolverContext\n ): Promise<DataSetHistory> {\n const { domain } = context.state\n const domainIds = await getDomainIdsWithAncestors(domain)\n\n return await getRepository(DataSetHistory).findOne({\n where: { domain: { id: In(domainIds) }, originalId: id, updatedAt: timestamp }\n })\n }\n\n @Directive('@privilege(category: \"data-set-history\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => DataSetHistoryList, { description: 'To fetch multiple DataSetHistories' })\n async dataSetHistories(\n @Args(type => ListParam) params: ListParam,\n @Ctx() context: ResolverContext\n ): Promise<DataSetHistoryList> {\n const { domain } = context.state\n const domainIds = await getDomainIdsWithAncestors(domain)\n\n const queryBuilder = getQueryBuilderFromListParams({\n repository: getRepository(DataSetHistory),\n params,\n domain: undefined,\n searchables: ['name', 'description', 'supervisoryRole']\n })\n\n queryBuilder.andWhere(`${queryBuilder.alias}.domain IN (:...ancestorDomainIds)`, {\n ancestorDomainIds: domainIds\n })\n\n const [items, total] = await queryBuilder.getManyAndCount()\n\n return { items, total }\n }\n\n @FieldResolver(type => Role)\n async entryRole(@Root() dataSetHistory: DataSetHistory): Promise<Role> {\n return (\n dataSetHistory.entryRoleId &&\n (await getRepository(Role).findOneBy({\n id: dataSetHistory.entryRoleId\n }))\n )\n }\n\n @FieldResolver(type => Role)\n async supervisoryRole(@Root() dataSetHistory: DataSetHistory): Promise<Role> {\n return (\n dataSetHistory.supervisoryRoleId &&\n (await getRepository(Role).findOneBy({\n id: dataSetHistory.supervisoryRoleId\n }))\n )\n }\n\n @FieldResolver(type => Board, { nullable: true })\n async entryBoard(@Root() dataSetHistory: DataSetHistory) {\n if (dataSetHistory.entryType == 'board' && dataSetHistory.entryView) {\n return await getRepository(Board).findOneBy({ id: dataSetHistory.entryView })\n }\n }\n\n @FieldResolver(type => Board, { nullable: true })\n async monitorBoard(@Root() dataSetHistory: DataSetHistory) {\n if (dataSetHistory.monitorType == 'board' && dataSetHistory.monitorView) {\n return await getRepository(Board).findOneBy({ id: dataSetHistory.monitorView })\n }\n }\n\n @FieldResolver(type => DataKeySet, { nullable: true })\n async dataKeySet(@Root() dataSet: DataSet) {\n return (\n dataSet.dataKeySet ||\n (dataSet.dataKeySetId &&\n (await getRepository(DataKeySet).findOneBy({\n id: dataSet.dataKeySetId\n })))\n )\n }\n\n @FieldResolver(type => User)\n async timestamp(@Root() dataSetHistory: DataSetHistory): Promise<Date> {\n return dataSetHistory.updatedAt\n }\n\n @FieldResolver(type => Domain)\n async domain(@Root() dataSetHistory: DataSetHistory): Promise<Domain> {\n return dataSetHistory.domainId && (await getRepository(Domain).findOneBy({ id: dataSetHistory.domainId }))\n }\n\n @FieldResolver(type => User)\n async updater(@Root() dataSetHistory: DataSetHistory): Promise<User> {\n return dataSetHistory.updaterId && (await getRepository(User).findOneBy({ id: dataSetHistory.updaterId }))\n }\n\n @FieldResolver(type => User)\n async creator(@Root() dataSetHistory: DataSetHistory): Promise<User> {\n return dataSetHistory.creatorId && (await getRepository(User).findOneBy({ id: dataSetHistory.creatorId }))\n }\n\n @FieldResolver(type => String)\n async reportTemplate(@Root() dataSetHistory: DataSetHistory): Promise<string | undefined> {\n const attachment: Attachment = await getRepository(Attachment).findOne({\n where: {\n domain: { id: dataSetHistory.domainId },\n refType: `${DataSet.name}-report-template`,\n refBy: dataSetHistory.originalId\n }\n })\n\n return attachment?.path\n }\n}\n"]}
1
+ {"version":3,"file":"data-set-history-query.js","sourceRoot":"","sources":["../../../server/service/data-set-history/data-set-history-query.ts"],"names":[],"mappings":";;;;AAAA,+CAA8F;AAC9F,qCAA4B;AAE5B,qEAA4D;AAC5D,yDAAsD;AACtD,iEAAqD;AACrD,iDAO8B;AAE9B,qEAA4D;AAC5D,yDAAiD;AACjD,+DAAsD;AACtD,yEAA+D;AAGxD,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAGxB,AAAN,KAAK,CAAC,cAAc,CACP,EAAU,EACiB,SAAe,EAC9C,OAAwB;QAE/B,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAChC,MAAM,SAAS,GAAG,MAAM,IAAA,iCAAyB,EAAC,MAAM,CAAC,CAAA;QAEzD,OAAO,MAAM,IAAA,qBAAa,EAAC,oCAAc,CAAC,CAAC,OAAO,CAAC;YACjD,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,IAAA,YAAE,EAAC,SAAS,CAAC,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE;SAC/E,CAAC,CAAA;IACJ,CAAC;IAIK,AAAN,KAAK,CAAC,gBAAgB,CACK,MAAiB,EACnC,OAAwB;QAE/B,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAChC,MAAM,SAAS,GAAG,MAAM,IAAA,iCAAyB,EAAC,MAAM,CAAC,CAAA;QAEzD,MAAM,YAAY,GAAG,IAAA,qCAA6B,EAAC;YACjD,UAAU,EAAE,IAAA,qBAAa,EAAC,oCAAc,CAAC;YACzC,MAAM;YACN,MAAM,EAAE,SAAS;YACjB,WAAW,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,iBAAiB,CAAC;SACxD,CAAC,CAAA;QAEF,YAAY,CAAC,QAAQ,CAAC,GAAG,YAAY,CAAC,KAAK,oCAAoC,EAAE;YAC/E,iBAAiB,EAAE,SAAS;SAC7B,CAAC,CAAA;QAEF,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,MAAM,YAAY,CAAC,eAAe,EAAE,CAAA;QAE3D,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;IACzB,CAAC;IAGK,AAAN,KAAK,CAAC,SAAS,CAAS,cAA8B;QACpD,OAAO,CACL,cAAc,CAAC,WAAW;YAC1B,CAAC,MAAM,IAAA,qBAAa,EAAC,gBAAI,CAAC,CAAC,SAAS,CAAC;gBACnC,EAAE,EAAE,cAAc,CAAC,WAAW;aAC/B,CAAC,CAAC,CACJ,CAAA;IACH,CAAC;IAGK,AAAN,KAAK,CAAC,eAAe,CAAS,cAA8B;QAC1D,OAAO,CACL,cAAc,CAAC,iBAAiB;YAChC,CAAC,MAAM,IAAA,qBAAa,EAAC,gBAAI,CAAC,CAAC,SAAS,CAAC;gBACnC,EAAE,EAAE,cAAc,CAAC,iBAAiB;aACrC,CAAC,CAAC,CACJ,CAAA;IACH,CAAC;IAGK,AAAN,KAAK,CAAC,UAAU,CAAS,cAA8B;QACrD,IAAI,cAAc,CAAC,SAAS,IAAI,OAAO,IAAI,cAAc,CAAC,SAAS,EAAE,CAAC;YACpE,OAAO,MAAM,IAAA,qBAAa,EAAC,qBAAK,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,cAAc,CAAC,SAAS,EAAE,CAAC,CAAA;QAC/E,CAAC;IACH,CAAC;IAGK,AAAN,KAAK,CAAC,YAAY,CAAS,cAA8B;QACvD,IAAI,cAAc,CAAC,WAAW,IAAI,OAAO,IAAI,cAAc,CAAC,WAAW,EAAE,CAAC;YACxE,OAAO,MAAM,IAAA,qBAAa,EAAC,qBAAK,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,cAAc,CAAC,WAAW,EAAE,CAAC,CAAA;QACjF,CAAC;IACH,CAAC;IAGK,AAAN,KAAK,CAAC,UAAU,CAAS,OAAgB;QACvC,OAAO,CACL,OAAO,CAAC,UAAU;YAClB,CAAC,OAAO,CAAC,YAAY;gBACnB,CAAC,MAAM,IAAA,qBAAa,EAAC,4BAAU,CAAC,CAAC,SAAS,CAAC;oBACzC,EAAE,EAAE,OAAO,CAAC,YAAY;iBACzB,CAAC,CAAC,CAAC,CACP,CAAA;IACH,CAAC;IAGK,AAAN,KAAK,CAAC,SAAS,CAAS,cAA8B;QACpD,OAAO,cAAc,CAAC,SAAS,CAAA;IACjC,CAAC;IAGK,AAAN,KAAK,CAAC,MAAM,CAAS,cAA8B;QACjD,OAAO,cAAc,CAAC,QAAQ,IAAI,CAAC,MAAM,IAAA,qBAAa,EAAC,cAAM,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;IAC5G,CAAC;IAGK,AAAN,KAAK,CAAC,OAAO,CAAS,cAA8B;QAClD,OAAO,cAAc,CAAC,SAAS,IAAI,CAAC,MAAM,IAAA,qBAAa,EAAC,gBAAI,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,cAAc,CAAC,SAAS,EAAE,CAAC,CAAC,CAAA;IAC5G,CAAC;IAGK,AAAN,KAAK,CAAC,OAAO,CAAS,cAA8B;QAClD,OAAO,cAAc,CAAC,SAAS,IAAI,CAAC,MAAM,IAAA,qBAAa,EAAC,gBAAI,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,cAAc,CAAC,SAAS,EAAE,CAAC,CAAC,CAAA;IAC5G,CAAC;IAGK,AAAN,KAAK,CAAC,cAAc,CAAS,cAA8B;QACzD,MAAM,UAAU,GAAe,MAAM,IAAA,qBAAa,EAAC,4BAAU,CAAC,CAAC,OAAO,CAAC;YACrE,KAAK,EAAE;gBACL,MAAM,EAAE,EAAE,EAAE,EAAE,cAAc,CAAC,QAAQ,EAAE;gBACvC,OAAO,EAAE,GAAG,qBAAO,CAAC,IAAI,kBAAkB;gBAC1C,KAAK,EAAE,cAAc,CAAC,UAAU;aACjC;SACF,CAAC,CAAA;QAEF,OAAO,UAAU,EAAE,IAAI,CAAA;IACzB,CAAC;CACF,CAAA;AAtHY,kDAAmB;AAGxB;IAFL,IAAA,wBAAS,EAAC,wFAAwF,CAAC;IACnG,IAAA,oBAAK,EAAC,OAAO,CAAC,EAAE,CAAC,oCAAc,EAAE,EAAE,WAAW,EAAE,2BAA2B,EAAE,CAAC;IAE5E,mBAAA,IAAA,kBAAG,EAAC,IAAI,CAAC,CAAA;IACT,mBAAA,IAAA,kBAAG,EAAC,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,kBAAU,CAAC,CAAA;IACpC,mBAAA,IAAA,kBAAG,GAAE,CAAA;;qDAD2C,IAAI;;yDAStD;AAIK;IAFL,IAAA,wBAAS,EAAC,wFAAwF,CAAC;IACnG,IAAA,oBAAK,EAAC,OAAO,CAAC,EAAE,CAAC,6CAAkB,EAAE,EAAE,WAAW,EAAE,oCAAoC,EAAE,CAAC;IAEzF,mBAAA,IAAA,mBAAI,EAAC,IAAI,CAAC,EAAE,CAAC,iBAAS,CAAC,CAAA;IACvB,mBAAA,IAAA,kBAAG,GAAE,CAAA;;6CAD2B,iBAAS;;2DAoB3C;AAGK;IADL,IAAA,4BAAa,EAAC,IAAI,CAAC,EAAE,CAAC,gBAAI,CAAC;IACX,mBAAA,IAAA,mBAAI,GAAE,CAAA;;6CAAiB,oCAAc;;oDAOrD;AAGK;IADL,IAAA,4BAAa,EAAC,IAAI,CAAC,EAAE,CAAC,gBAAI,CAAC;IACL,mBAAA,IAAA,mBAAI,GAAE,CAAA;;6CAAiB,oCAAc;;0DAO3D;AAGK;IADL,IAAA,4BAAa,EAAC,IAAI,CAAC,EAAE,CAAC,qBAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC/B,mBAAA,IAAA,mBAAI,GAAE,CAAA;;6CAAiB,oCAAc;;qDAItD;AAGK;IADL,IAAA,4BAAa,EAAC,IAAI,CAAC,EAAE,CAAC,qBAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC7B,mBAAA,IAAA,mBAAI,GAAE,CAAA;;6CAAiB,oCAAc;;uDAIxD;AAGK;IADL,IAAA,4BAAa,EAAC,IAAI,CAAC,EAAE,CAAC,4BAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACpC,mBAAA,IAAA,mBAAI,GAAE,CAAA;;6CAAU,qBAAO;;qDAQxC;AAGK;IADL,IAAA,4BAAa,EAAC,IAAI,CAAC,EAAE,CAAC,gBAAI,CAAC;IACX,mBAAA,IAAA,mBAAI,GAAE,CAAA;;6CAAiB,oCAAc;;oDAErD;AAGK;IADL,IAAA,4BAAa,EAAC,IAAI,CAAC,EAAE,CAAC,cAAM,CAAC;IAChB,mBAAA,IAAA,mBAAI,GAAE,CAAA;;6CAAiB,oCAAc;;iDAElD;AAGK;IADL,IAAA,4BAAa,EAAC,IAAI,CAAC,EAAE,CAAC,gBAAI,CAAC;IACb,mBAAA,IAAA,mBAAI,GAAE,CAAA;;6CAAiB,oCAAc;;kDAEnD;AAGK;IADL,IAAA,4BAAa,EAAC,IAAI,CAAC,EAAE,CAAC,gBAAI,CAAC;IACb,mBAAA,IAAA,mBAAI,GAAE,CAAA;;6CAAiB,oCAAc;;kDAEnD;AAGK;IADL,IAAA,4BAAa,EAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC;IACR,mBAAA,IAAA,mBAAI,GAAE,CAAA;;6CAAiB,oCAAc;;yDAU1D;8BArHU,mBAAmB;IAD/B,IAAA,uBAAQ,EAAC,oCAAc,CAAC;GACZ,mBAAmB,CAsH/B","sourcesContent":["import { Arg, Args, Ctx, Directive, FieldResolver, Query, Resolver, Root } from 'type-graphql'\nimport { In } from 'typeorm'\n\nimport { Attachment } from '@things-factory/attachment-base'\nimport { Role, User } from '@things-factory/auth-base'\nimport { Board } from '@things-factory/board-service'\nimport {\n Domain,\n getQueryBuilderFromListParams,\n getRepository,\n ListParam,\n ScalarDate,\n getDomainIdsWithAncestors\n} from '@things-factory/shell'\n\nimport { DataKeySet } from '../data-key-set/data-key-set.js'\nimport { DataSet } from '../data-set/data-set.js'\nimport { DataSetHistory } from './data-set-history.js'\nimport { DataSetHistoryList } from './data-set-history-type.js'\n\n@Resolver(DataSetHistory)\nexport class DataSetHistoryQuery {\n @Directive('@privilege(category: \"data-set-history\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => DataSetHistory, { description: 'To fetch a DataSetHistory' })\n async dataSetHistory(\n @Arg('id') id: string,\n @Arg('timestamp', type => ScalarDate) timestamp: Date,\n @Ctx() context: ResolverContext\n ): Promise<DataSetHistory> {\n const { domain } = context.state\n const domainIds = await getDomainIdsWithAncestors(domain)\n\n return await getRepository(DataSetHistory).findOne({\n where: { domain: { id: In(domainIds) }, originalId: id, updatedAt: timestamp }\n })\n }\n\n @Directive('@privilege(category: \"data-set-history\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => DataSetHistoryList, { description: 'To fetch multiple DataSetHistories' })\n async dataSetHistories(\n @Args(type => ListParam) params: ListParam,\n @Ctx() context: ResolverContext\n ): Promise<DataSetHistoryList> {\n const { domain } = context.state\n const domainIds = await getDomainIdsWithAncestors(domain)\n\n const queryBuilder = getQueryBuilderFromListParams({\n repository: getRepository(DataSetHistory),\n params,\n domain: undefined,\n searchables: ['name', 'description', 'supervisoryRole']\n })\n\n queryBuilder.andWhere(`${queryBuilder.alias}.domain IN (:...ancestorDomainIds)`, {\n ancestorDomainIds: domainIds\n })\n\n const [items, total] = await queryBuilder.getManyAndCount()\n\n return { items, total }\n }\n\n @FieldResolver(type => Role)\n async entryRole(@Root() dataSetHistory: DataSetHistory): Promise<Role> {\n return (\n dataSetHistory.entryRoleId &&\n (await getRepository(Role).findOneBy({\n id: dataSetHistory.entryRoleId\n }))\n )\n }\n\n @FieldResolver(type => Role)\n async supervisoryRole(@Root() dataSetHistory: DataSetHistory): Promise<Role> {\n return (\n dataSetHistory.supervisoryRoleId &&\n (await getRepository(Role).findOneBy({\n id: dataSetHistory.supervisoryRoleId\n }))\n )\n }\n\n @FieldResolver(type => Board, { nullable: true })\n async entryBoard(@Root() dataSetHistory: DataSetHistory) {\n if (dataSetHistory.entryType == 'board' && dataSetHistory.entryView) {\n return await getRepository(Board).findOneBy({ id: dataSetHistory.entryView })\n }\n }\n\n @FieldResolver(type => Board, { nullable: true })\n async monitorBoard(@Root() dataSetHistory: DataSetHistory) {\n if (dataSetHistory.monitorType == 'board' && dataSetHistory.monitorView) {\n return await getRepository(Board).findOneBy({ id: dataSetHistory.monitorView })\n }\n }\n\n @FieldResolver(type => DataKeySet, { nullable: true })\n async dataKeySet(@Root() dataSet: DataSet) {\n return (\n dataSet.dataKeySet ||\n (dataSet.dataKeySetId &&\n (await getRepository(DataKeySet).findOneBy({\n id: dataSet.dataKeySetId\n })))\n )\n }\n\n @FieldResolver(type => User)\n async timestamp(@Root() dataSetHistory: DataSetHistory): Promise<Date> {\n return dataSetHistory.updatedAt\n }\n\n @FieldResolver(type => Domain)\n async domain(@Root() dataSetHistory: DataSetHistory): Promise<Domain> {\n return dataSetHistory.domainId && (await getRepository(Domain).findOneBy({ id: dataSetHistory.domainId }))\n }\n\n @FieldResolver(type => User)\n async updater(@Root() dataSetHistory: DataSetHistory): Promise<User> {\n return dataSetHistory.updaterId && (await getRepository(User).findOneBy({ id: dataSetHistory.updaterId }))\n }\n\n @FieldResolver(type => User)\n async creator(@Root() dataSetHistory: DataSetHistory): Promise<User> {\n return dataSetHistory.creatorId && (await getRepository(User).findOneBy({ id: dataSetHistory.creatorId }))\n }\n\n @FieldResolver(type => String)\n async reportTemplate(@Root() dataSetHistory: DataSetHistory): Promise<string | undefined> {\n const attachment: Attachment = await getRepository(Attachment).findOne({\n where: {\n domain: { id: dataSetHistory.domainId },\n refType: `${DataSet.name}-report-template`,\n refBy: dataSetHistory.originalId\n }\n })\n\n return attachment?.path\n }\n}\n"]}
@@ -12,18 +12,17 @@ const data_set_js_1 = require("../data-set/data-set.js");
12
12
  const data_summary_js_1 = require("./data-summary.js");
13
13
  const data_summary_type_js_1 = require("./data-summary-type.js");
14
14
  const query_data_summary_by_period_js_1 = require("../../controllers/query-data-summary-by-period.js");
15
- const domain_inheritance_js_1 = require("../../utils/domain-inheritance.js");
16
15
  let DataSummaryQuery = class DataSummaryQuery {
17
16
  async dataSummary(id, context) {
18
17
  const { domain } = context.state;
19
- const domainIds = await (0, domain_inheritance_js_1.getDomainIdsWithAncestors)(domain);
18
+ const domainIds = await (0, shell_1.getDomainIdsWithAncestors)(domain);
20
19
  return await (0, shell_1.getRepository)(data_summary_js_1.DataSummary).findOne({
21
20
  where: { domain: { id: (0, typeorm_1.In)(domainIds) }, id }
22
21
  });
23
22
  }
24
23
  async dataSummaries(params, context) {
25
24
  const { domain } = context.state;
26
- const domainIds = await (0, domain_inheritance_js_1.getDomainIdsWithAncestors)(domain);
25
+ const domainIds = await (0, shell_1.getDomainIdsWithAncestors)(domain);
27
26
  const queryBuilder = (0, shell_1.getQueryBuilderFromListParams)({
28
27
  domain: undefined,
29
28
  params,
@@ -41,7 +40,7 @@ let DataSummaryQuery = class DataSummaryQuery {
41
40
  }
42
41
  async dataSummariesByDataSetName(dataSetName, params, context) {
43
42
  const { domain } = context.state;
44
- const domainIds = await (0, domain_inheritance_js_1.getDomainIdsWithAncestors)(domain);
43
+ const domainIds = await (0, shell_1.getDomainIdsWithAncestors)(domain);
45
44
  const dataSet = await (0, shell_1.getRepository)(data_set_js_1.DataSet).findOne({
46
45
  where: { domain: { id: (0, typeorm_1.In)(domainIds) }, name: dataSetName },
47
46
  relations: ['dataKeySet']
@@ -65,7 +64,7 @@ let DataSummaryQuery = class DataSummaryQuery {
65
64
  }
66
65
  async dataSummariesByDataSet(dataSetId, params, context) {
67
66
  const { domain } = context.state;
68
- const domainIds = await (0, domain_inheritance_js_1.getDomainIdsWithAncestors)(domain);
67
+ const domainIds = await (0, shell_1.getDomainIdsWithAncestors)(domain);
69
68
  const dataSet = await (0, shell_1.getRepository)(data_set_js_1.DataSet).findOne({
70
69
  where: { domain: { id: (0, typeorm_1.In)(domainIds) }, id: dataSetId },
71
70
  relations: ['dataKeySet']
@@ -89,7 +88,7 @@ let DataSummaryQuery = class DataSummaryQuery {
89
88
  }
90
89
  async dataSummariesByDataKeySet(dataKeySetId, params, context) {
91
90
  const { domain } = context.state;
92
- const domainIds = await (0, domain_inheritance_js_1.getDomainIdsWithAncestors)(domain);
91
+ const domainIds = await (0, shell_1.getDomainIdsWithAncestors)(domain);
93
92
  const dataKeySet = await (0, shell_1.getRepository)(data_key_set_js_1.DataKeySet).findOneBy({ id: dataKeySetId });
94
93
  const dataKeyItems = dataKeySet?.dataKeyItems || [];
95
94
  const searchables = dataKeyItems.map((item, index) => `key0${index + 1}`);