public static void CheckAttribute(DataServiceRestClient client, EntityDto entity, ushort key, string description, AttributeTypeDto type) { var configuration = client.GetConfiguration().Result; var definition = configuration.GetDefinition(key); if (definition == null) { client.CreateAttributeDefinition(entity, new AttributeDefinitionDto { Key = key, Description = description, Type = type }); } else if (configuration.GetTypeForKey(key) != entity || definition.Description != description || (definition as AttributeDefinitionDto)?.Type != type) { //Don't do this, in case the PiWeb database is already in use. Changing the configuration will cause data-loss!!! client.UpdateAttributeDefinitions(entity, new AbstractAttributeDefinitionDto[] { new AttributeDefinitionDto { Key = key, Description = description, Type = type } }); } }
public static void CheckCatalogAttribute(DataServiceRestClient client, EntityDto entity, ushort key, string description, Guid catalog) { var configuration = client.GetConfiguration().Result; var definition = configuration.GetDefinition(key); if (definition == null) { client.CreateAttributeDefinition(entity, new CatalogAttributeDefinitionDto { Key = key, Description = description, Catalog = catalog }); } else if (configuration.GetTypeForKey(key) != entity || definition.Description != description || (definition as CatalogAttributeDefinitionDto)?.Catalog != catalog) { client.UpdateAttributeDefinitions(entity, new AbstractAttributeDefinitionDto[] { new CatalogAttributeDefinitionDto { Key = key, Description = description, Catalog = catalog } }); } }
/// <summary> /// Shows how to work with the attribute configuration. /// </summary> /// <param name="client">The client.</param> public static async Task Lesson(DataServiceRestClient client) { //Create attributes await client.CreateAttributeDefinition(Entity.Part, AttributeDefinition); //This will create an attribute which can be used by catalogs. Don't be confused, this is no catalog attribute await client.CreateAttributeDefinition(Entity.Catalog, CatalogColumnAttributeDefinition); //Create a catalog which we can use for our catalog attribute await client.CreateCatalogs(new[] { Catalog }); //Create the catalog attribute definition. await client.CreateAttributeDefinition(Entity.Part, CatalogAttributeDefinition); //Notes: - you can't create catalog attributes for catalogs (Entity.Catalog) //Notes: - you must obey the shown order of commands! //You can update everything except the key, which is the identifier. //To change the key, you must delete and recreate the attribute, but be aware: all data stored for this attribute will be lost! CatalogAttributeDefinition.Description = "Characteristic catalog attribute"; await client.UpdateAttributeDefinitions(Entity.Characteristic, new[] { CatalogAttributeDefinition }); //Get all attributes var configuration = await client.GetConfiguration(); //Attributes are assigned to an entity: part, characteristic, measurement, value or catalog. Console.WriteLine($"Attributes for part: {configuration.PartAttributes.Length}"); Console.WriteLine($"Attributes for characteristic: {configuration.CharacteristicAttributes.Length}"); Console.WriteLine($"Attributes for measurement: {configuration.MeasurementAttributes.Length}"); Console.WriteLine($"Attributes for value: {configuration.ValueAttributes.Length}"); Console.WriteLine($"Attributes for catalog: {configuration.CatalogAttributes.Length}"); }