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.

60 lines
2.6 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 { LabelApplicationService } from '@/services/application/label.service'
  10. import { MemberApplicationService } from '@/services/application/member.service'
  11. import { UserApplicationService } from '@/services/application/user.service'
  12. import { RoleApplicationService } from '@/services/application/role.service'
  13. import { ProjectApplicationService } from '@/services/application/project.service'
  14. import { CommentApplicationService } from '@/services/application/comment.service'
  15. import { StatisticsApplicationService } from '@/services/application/statistics.service'
  16. export interface Services {
  17. label: LabelApplicationService,
  18. member: MemberApplicationService,
  19. user: UserApplicationService,
  20. role: RoleApplicationService,
  21. project: ProjectApplicationService,
  22. comment: CommentApplicationService,
  23. statistics: StatisticsApplicationService
  24. }
  25. declare module 'vue/types/vue' {
  26. interface Vue {
  27. readonly $services: Services
  28. }
  29. }
  30. const plugin: Plugin = (context, inject) => {
  31. const labelRepository = new FromApiLabelItemListRepository()
  32. const label = new LabelApplicationService(labelRepository)
  33. const memberRepository = new FromApiMemberItemListRepository()
  34. const member = new MemberApplicationService(memberRepository)
  35. const userRepository = new FromApiUserItemListRepository()
  36. const user = new UserApplicationService(userRepository)
  37. const roleRepository = new FromApiRoleItemListRepository()
  38. const role = new RoleApplicationService(roleRepository)
  39. const projectRepository = new FromApiProjectItemListRepository()
  40. const project = new ProjectApplicationService(projectRepository)
  41. const commentRepository = new FromApiCommentItemListRepository()
  42. const comment = new CommentApplicationService(commentRepository)
  43. const statisticsRepository = new FromApiStatisticsRepository()
  44. const statistics = new StatisticsApplicationService(statisticsRepository)
  45. const services: Services = {
  46. label,
  47. member,
  48. user,
  49. role,
  50. project,
  51. comment,
  52. statistics
  53. }
  54. inject('services', services)
  55. }
  56. export default plugin