topic.ts 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. import {
  2. Topic,
  3. TopicDetails,
  4. TopicConfig,
  5. TopicCreation,
  6. GetTopicMessagesRequest,
  7. ConsumerGroup,
  8. TopicColumnsToSort,
  9. TopicMessage,
  10. TopicMessageConsuming,
  11. TopicMessageSchema,
  12. SortOrder,
  13. } from 'generated-sources';
  14. export type TopicName = Topic['name'];
  15. export type CleanupPolicy = 'delete' | 'compact';
  16. export interface TopicConfigByName {
  17. byName: TopicConfigParams;
  18. }
  19. export interface TopicConfigParams {
  20. [paramName: string]: TopicConfig;
  21. }
  22. export interface TopicConfigValue {
  23. name: TopicConfig['name'];
  24. value: TopicConfig['value'];
  25. }
  26. export interface TopicMessageQueryParams {
  27. q: GetTopicMessagesRequest['q'];
  28. limit: GetTopicMessagesRequest['limit'];
  29. seekType: GetTopicMessagesRequest['seekType'];
  30. seekTo: GetTopicMessagesRequest['seekTo'];
  31. seekDirection: GetTopicMessagesRequest['seekDirection'];
  32. }
  33. export interface TopicFormCustomParams {
  34. byIndex: TopicConfigParams;
  35. allIndexes: TopicName[];
  36. }
  37. export interface TopicWithDetailedInfo extends Topic, TopicDetails {
  38. config?: TopicConfig[];
  39. consumerGroups?: ConsumerGroup[];
  40. messageSchema?: TopicMessageSchema;
  41. }
  42. export interface TopicsState {
  43. byName: { [topicName: string]: TopicWithDetailedInfo };
  44. allNames: TopicName[];
  45. totalPages: number;
  46. search: string;
  47. orderBy: TopicColumnsToSort | null;
  48. sortOrder: SortOrder;
  49. consumerGroups: ConsumerGroup[];
  50. }
  51. export type TopicFormFormattedParams = TopicCreation['configs'];
  52. export interface TopicFormDataRaw {
  53. name: string;
  54. partitions: number;
  55. replicationFactor: number;
  56. minInsyncReplicas: number;
  57. cleanupPolicy: string;
  58. retentionMs: number;
  59. retentionBytes: number;
  60. maxMessageBytes: number;
  61. customParams: TopicFormCustomParams;
  62. }
  63. export interface TopicFormData {
  64. name: string;
  65. partitions: number;
  66. replicationFactor: number;
  67. minInsyncReplicas: number;
  68. cleanupPolicy: string;
  69. retentionMs: number;
  70. retentionBytes: number;
  71. maxMessageBytes: number;
  72. customParams: {
  73. name: string;
  74. value: string;
  75. }[];
  76. }
  77. export interface TopicMessagesState {
  78. messages: TopicMessage[];
  79. phase?: string;
  80. meta: TopicMessageConsuming;
  81. isFetching: boolean;
  82. }