You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

80 lines
3.8 KiB

  1. import { Plugin } from '@nuxt/types'
  2. import { FromApiLabelItemListRepository } from '@/repositories/label/api'
  3. import { FromApiMemberItemListRepository } from '@/repositories/member/api'
  4. import { FromApiUserItemListRepository } from '@/repositories/user/api'
  5. import { FromApiRoleItemListRepository } from '@/repositories/role/api'
  6. import { FromApiProjectItemListRepository } from '@/repositories/project/api'
  7. import { FromApiCommentItemListRepository } from '@/repositories/comment/api'
  8. import { FromApiStatisticsRepository } from '@/repositories/statistics/api'
  9. import { FromApiDocumentItemListRepository } from '@/repositories/document/api'
  10. import { FromApiTextClassificationRepository } from '@/repositories/tasks/text-classification/api'
  11. import { LocalStorageOptionRepository} from '@/repositories/option/api'
  12. import { LabelApplicationService } from '@/services/application/label.service'
  13. import { MemberApplicationService } from '@/services/application/member.service'
  14. import { UserApplicationService } from '@/services/application/user.service'
  15. import { RoleApplicationService } from '@/services/application/role.service'
  16. import { ProjectApplicationService } from '@/services/application/project.service'
  17. import { CommentApplicationService } from '@/services/application/comment.service'
  18. import { StatisticsApplicationService } from '@/services/application/statistics.service'
  19. import { DocumentApplicationService } from '@/services/application/document.service'
  20. import { TextClassificationApplicationService } from '@/services/application/tasks/text.classification.service'
  21. import { OptionApplicationService } from '@/services/application/option.service'
  22. export interface Services {
  23. label: LabelApplicationService,
  24. member: MemberApplicationService,
  25. user: UserApplicationService,
  26. role: RoleApplicationService,
  27. project: ProjectApplicationService,
  28. comment: CommentApplicationService,
  29. statistics: StatisticsApplicationService,
  30. document: DocumentApplicationService,
  31. textClassification: TextClassificationApplicationService,
  32. option: OptionApplicationService
  33. }
  34. declare module 'vue/types/vue' {
  35. interface Vue {
  36. readonly $services: Services
  37. }
  38. }
  39. const plugin: Plugin = (context, inject) => {
  40. const labelRepository = new FromApiLabelItemListRepository()
  41. const memberRepository = new FromApiMemberItemListRepository()
  42. const userRepository = new FromApiUserItemListRepository()
  43. const roleRepository = new FromApiRoleItemListRepository()
  44. const projectRepository = new FromApiProjectItemListRepository()
  45. const commentRepository = new FromApiCommentItemListRepository()
  46. const statisticsRepository = new FromApiStatisticsRepository()
  47. const documentRepository = new FromApiDocumentItemListRepository()
  48. const textClassificationRepository = new FromApiTextClassificationRepository()
  49. const optionRepository = new LocalStorageOptionRepository()
  50. const label = new LabelApplicationService(labelRepository)
  51. const member = new MemberApplicationService(memberRepository)
  52. const user = new UserApplicationService(userRepository)
  53. const role = new RoleApplicationService(roleRepository)
  54. const project = new ProjectApplicationService(projectRepository)
  55. const comment = new CommentApplicationService(commentRepository)
  56. const statistics = new StatisticsApplicationService(statisticsRepository)
  57. const document = new DocumentApplicationService(documentRepository)
  58. const textClassification = new TextClassificationApplicationService(textClassificationRepository)
  59. const option = new OptionApplicationService(optionRepository)
  60. const services: Services = {
  61. label,
  62. member,
  63. user,
  64. role,
  65. project,
  66. comment,
  67. statistics,
  68. document,
  69. textClassification,
  70. option
  71. }
  72. inject('services', services)
  73. }
  74. export default plugin