InversifyExpressItemsController.ts 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import { Request, Response } from 'express'
  2. import { inject } from 'inversify'
  3. import { controller, httpGet, httpPost, results } from 'inversify-express-utils'
  4. import TYPES from '../../Bootstrap/Types'
  5. import { Item } from '../../Domain/Item/Item'
  6. import { SyncResponseFactoryResolverInterface } from '../../Domain/Item/SyncResponse/SyncResponseFactoryResolverInterface'
  7. import { CheckIntegrity } from '../../Domain/UseCase/CheckIntegrity/CheckIntegrity'
  8. import { GetItem } from '../../Domain/UseCase/GetItem/GetItem'
  9. import { SyncItems } from '../../Domain/UseCase/SyncItems'
  10. import { ItemProjection } from '../../Projection/ItemProjection'
  11. import { ProjectorInterface } from '../../Projection/ProjectorInterface'
  12. import { HomeServerItemsController } from './HomeServer/HomeServerItemsController'
  13. @controller('/items', TYPES.Sync_AuthMiddleware)
  14. export class InversifyExpressItemsController extends HomeServerItemsController {
  15. constructor(
  16. @inject(TYPES.Sync_SyncItems) override syncItems: SyncItems,
  17. @inject(TYPES.Sync_CheckIntegrity) override checkIntegrity: CheckIntegrity,
  18. @inject(TYPES.Sync_GetItem) override getItem: GetItem,
  19. @inject(TYPES.Sync_ItemProjector) override itemProjector: ProjectorInterface<Item, ItemProjection>,
  20. @inject(TYPES.Sync_SyncResponseFactoryResolver)
  21. override syncResponseFactoryResolver: SyncResponseFactoryResolverInterface,
  22. ) {
  23. super(syncItems, checkIntegrity, getItem, itemProjector, syncResponseFactoryResolver)
  24. }
  25. @httpPost('/sync')
  26. override async sync(request: Request, response: Response): Promise<results.JsonResult> {
  27. return super.sync(request, response)
  28. }
  29. @httpPost('/check-integrity')
  30. override async checkItemsIntegrity(request: Request, response: Response): Promise<results.JsonResult> {
  31. return super.checkItemsIntegrity(request, response)
  32. }
  33. @httpGet('/:uuid')
  34. override async getSingleItem(
  35. request: Request,
  36. response: Response,
  37. ): Promise<results.NotFoundResult | results.JsonResult> {
  38. return super.getSingleItem(request, response)
  39. }
  40. }