func resourceWatchRead()

in internal/elasticsearch/watcher/watch.go [171:253]


func resourceWatchRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
	client, diags := clients.NewApiClientFromSDKResource(d, meta)
	if diags.HasError() {
		return diags
	}
	resourceID, diags := clients.ResourceIDFromStr(d.Id())
	if diags.HasError() {
		return diags
	}

	watch, diags := elasticsearch.GetWatch(ctx, client, resourceID)
	if watch == nil && diags == nil {
		tflog.Warn(ctx, fmt.Sprintf(`Watch "%s" not found, removing from state`, resourceID))
		d.SetId("")
		return diags
	}
	if diags.HasError() {
		return diags
	}

	if err := d.Set("watch_id", watch.WatchID); err != nil {
		return diag.FromErr(err)
	}
	if err := d.Set("active", watch.Status.State.Active); err != nil {
		return diag.FromErr(err)
	}

	trigger, err := json.Marshal(watch.Body.Trigger)
	if err != nil {
		return diag.FromErr(err)
	}
	if err := d.Set("trigger", string(trigger)); err != nil {
		return diag.FromErr(err)
	}

	input, err := json.Marshal(watch.Body.Input)
	if err != nil {
		return diag.FromErr(err)
	}
	if err := d.Set("input", string(input)); err != nil {
		return diag.FromErr(err)
	}

	condition, err := json.Marshal(watch.Body.Condition)
	if err != nil {
		return diag.FromErr(err)
	}
	if err := d.Set("condition", string(condition)); err != nil {
		return diag.FromErr(err)
	}

	actions, err := json.Marshal(watch.Body.Actions)
	if err != nil {
		return diag.FromErr(err)
	}
	if err := d.Set("actions", string(actions)); err != nil {
		return diag.FromErr(err)
	}

	metadata, err := json.Marshal(watch.Body.Metadata)
	if err != nil {
		return diag.FromErr(err)
	}
	if err := d.Set("metadata", string(metadata)); err != nil {
		return diag.FromErr(err)
	}

	if watch.Body.Transform != nil {
		transform, err := json.Marshal(watch.Body.Transform)
		if err != nil {
			return diag.FromErr(err)
		}
		if err := d.Set("transform", string(transform)); err != nil {
			return diag.FromErr(err)
		}
	}

	if err := d.Set("throttle_period_in_millis", watch.Body.Throttle_period_in_millis); err != nil {
		return diag.FromErr(err)
	}

	return nil
}