/// <summary> /// Updates a single Tag with one or more values /// </summary> /// <param name="updatedTag">The new data for the Tag you wish to update</param> /// <returns>Returns a result indicating if the operation succeeded</returns> public async Task <Result> UpdateTag(TagPatch updatedTag) { try { using (var con = new Npgsql.NpgsqlConnection(settings.Connection.DatabaseConnectionString)) { var sqlPatchOperations = new StringBuilder(); var obj = updatedTag; var operationCount = 0; if (obj.TagName != null) { sqlPatchOperations.AppendLine(obj.TagName.Operation == OperationKind.Remove ? "tagName = NULL," : "tagName = @TagName," ); operationCount++; } var patchOperations = sqlPatchOperations.ToString(); if (operationCount > 0) { // Remove final ", " from StringBuilder to ensure query is valid patchOperations = patchOperations.TrimEnd(System.Environment.NewLine.ToCharArray()); patchOperations = patchOperations.TrimEnd(','); } await con.ExecuteAsync($"UPDATE \"Tag\" SET {patchOperations} WHERE tagId = @ResourceId", new { ResourceId = obj.ResourceId, TagName = (string)(obj.TagName == default ? default : obj.TagName.Value) }).ConfigureAwait(false); return(Result.Ok()); }
public void Patch([FromRoute(Name = "tag-code")] string tagCode, [FromBody] TagPatch patch) { }