Class: Polyn::Cli::ConsumerGenerator

Inherits:
Thor::Group
  • Object
show all
Includes:
Thor::Actions
Defined in:
lib/polyn/cli/consumer_generator.rb

Overview

Generates a new NATS Consumer configuration for a stream

Instance Method Summary collapse

Instance Method Details

#check_namesObject



20
21
22
23
24
# File 'lib/polyn/cli/consumer_generator.rb', line 20

def check_names
  Polyn::Cli::Naming.validate_stream_name!(stream_name)
  Polyn::Cli::Naming.validate_destination_name!(destination_name)
  Polyn::Cli::Naming.validate_message_name!(message_name)
end

#check_schemaObject

Raises:



34
35
36
37
38
39
# File 'lib/polyn/cli/consumer_generator.rb', line 34

def check_schema
  return if File.exist?(File.join(options.dir, "schemas", "#{message_name}.json"))

  raise Polyn::Cli::Error,
    "You must first create a schema with `polyn gen:schema #{message_name}`"
end

#check_stream_existanceObject

Raises:



26
27
28
29
30
31
32
# File 'lib/polyn/cli/consumer_generator.rb', line 26

def check_stream_existance
  return if File.exist?(file_path)

  raise Polyn::Cli::Error,
    "You must first create a stream configuration with "\
    "`polyn gen:stream #{format_stream_name}`"
end

#consumer_nameObject



45
46
47
48
49
50
# File 'lib/polyn/cli/consumer_generator.rb', line 45

def consumer_name
  dest = Polyn::Cli::Naming.colon_to_underscore(destination_name)
  dest = Polyn::Cli::Naming.dot_to_underscore(dest)
  name = Polyn::Cli::Naming.dot_to_underscore(message_name)
  "#{dest}_#{name}"
end

#createObject



60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/polyn/cli/consumer_generator.rb', line 60

def create
  say "Creating new consumer config #{consumer_name} for stream #{stream_name}"
  consumer_config = "\n    resource \"jetstream_consumer\" \"\#{consumer_name}\" {\n      stream_id = jetstream_stream.\#{stream_name}.id\n      durable_name = \"\#{consumer_name}\"\n      deliver_all = true\n      filter_subject = \"\#{message_name}\"\n      sample_freq = 100\n    }\n  TF\n  append_to_file(file_path, consumer_config)\nend\n"

#file_nameObject



52
53
54
# File 'lib/polyn/cli/consumer_generator.rb', line 52

def file_name
  @file_name ||= "tf/#{stream_name.downcase}.tf"
end

#file_pathObject



56
57
58
# File 'lib/polyn/cli/consumer_generator.rb', line 56

def file_path
  File.join(options.dir, file_name)
end

#format_stream_nameObject



41
42
43
# File 'lib/polyn/cli/consumer_generator.rb', line 41

def format_stream_name
  @stream_name = stream_name.upcase
end