CreateContinuousAsync - no emitEnabled option

Hello Community!

There is no way to set emitEnabled to true in the CreateContinuousAsync method. Additionally - not in accordance with its name - the method not only creates, but also starts the projection. Only the UpdateAsync method has the emitEnabled option. So, to create and run a projection with emitEnabled == true, you need to create a “do nothing” projection and update it later. Is this the recommended way?

var nonExistentStreamName = Guid.NewGuid();
var doNothingBody = "fromStream('"+nonExistentStreamName+"').when({foo: function(state, event){}})";               
projectionManagementClient.CreateContinuousAsync(projectionName, doNothingBody).Wait();
projectionManagementClient.DisableAsync(projectionName).Wait();
projectionManagementClient.UpdateAsync(projectionName, originalBody, emitEnabled: true).Wait();
projectionManagementClient.EnableAsync(projectionName).Wait();

Hi @invenisso,

The CreateContinuousAsync method sets the EmitEnabled option to true.

So you should be able to just create the projection with no need to perform further updates, unless you wanted to explicitly disable EmitEnabled.

There are some discrepancies between the Client API and the HTTP API for projections, which are detailed in this issue here: https://github.com/EventStore/EventStore/issues/2702

Unfortunately, I checked again just to be sure - emit enabled is set to false by default. So a workaround is still necessary. I am using the nuget 20.6.0 package.