processor.resolver.ts 835 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. import { Resolver, ObjectType, Field, Subscription, Root } from 'type-graphql'
  2. import { TOPICS } from './pubsub'
  3. @ObjectType()
  4. export class ProcessorState {
  5. @Field()
  6. lastCompleteBlock!: number
  7. @Field()
  8. lastProcessedEvent!: string
  9. @Field()
  10. indexerHead!: number
  11. @Field()
  12. chainHead!: number
  13. }
  14. @Resolver()
  15. export class ProcessorStateResolver {
  16. @Subscription({ topics: TOPICS.processorState })
  17. stateSubscription(
  18. @Root()
  19. state: {
  20. lastScannedBlock?: number
  21. lastProcessedEvent?: string
  22. indexerHead?: number
  23. chainHead?: number
  24. }
  25. ): ProcessorState {
  26. return {
  27. lastCompleteBlock: state.lastScannedBlock || -1,
  28. lastProcessedEvent: state.lastProcessedEvent || 'NO_EVENTS',
  29. indexerHead: state.indexerHead || -1,
  30. chainHead: state.chainHead || -1,
  31. }
  32. }
  33. }