func()

in controller/ad/ad.go [198:224]


func (c controller) CreateAnomalyDetector(ctx context.Context, r entity.CreateDetectorRequest) (*string, error) {

	if err := validateCreateRequest(r); err != nil {
		return nil, err
	}
	payload, err := admapper.MapToCreateDetector(r)
	if err != nil {
		return nil, err
	}
	response, err := c.gateway.CreateDetector(ctx, payload)
	if err != nil {
		return nil, processEntityError(err)
	}
	var data map[string]interface{}
	_ = json.Unmarshal(response, &data)

	detectorID := fmt.Sprintf("%s", data["_id"])
	if !r.Start {
		return mapper.StringToStringPtr(detectorID), nil
	}

	err = c.StartDetector(ctx, detectorID)
	if err != nil {
		return nil, fmt.Errorf("detector is created with id: %s, but failed to start due to %v", detectorID, err)
	}
	return mapper.StringToStringPtr(detectorID), nil
}