class EventStoreClient::GRPC::Commands::Projections::Create

Public Instance Methods

call(name, streams) click to toggle source
# File lib/event_store_client/adapters/grpc/commands/projections/create.rb, line 17
          def call(name, streams)
            data = <<~STRING
              fromStreams(#{streams})
              .when({
                $any: function(s,e) {
                  linkTo("#{name}", e)
                }
              })
            STRING

            options =
              {
                query: data,
                continuous: {
                  name: name,
                  track_emitted_streams: true
                }
              }

            res = Try do
              service.create(request.new(options: options), metadata: metadata)
            end

            res.error? ? res.to_result : Success()
          rescue ::GRPC::Unknown => e
            Failure(:conflict) if e.message.include?('Conflict')
          end