public bool AddFieldToRecordType(string entityName, string fieldName, [FromBody] RecordFieldMetadata field) { DataService service = new DataService() { data = new Postgres(connectionString), }; IFieldType createdField = DeserializeFieldMetadata(field); createdField.Name = fieldName; AddFieldToRecordTypeCommand command = new AddFieldToRecordTypeCommand() { RecordType = entityName, Field = createdField, }; service.Execute(command); return(true); }
private IFieldType DeserializeFieldMetadata(RecordFieldMetadata field) { Dictionary <string, Type> fieldList = new Dictionary <string, Type>() { ["BinaryField"] = typeof(BinaryField), ["BooleanField"] = typeof(BooleanField), ["DateField"] = typeof(DateField), ["DateTimeField"] = typeof(DateTimeField), ["LookupField"] = typeof(LookupField), ["GuidField"] = typeof(GuidField), ["NumberField"] = typeof(NumberField), ["PrimaryField"] = typeof(PrimaryField), ["TextField"] = typeof(TextField), }; var fieldType = fieldList[field.Type]; var createdField = (IFieldType)Activator.CreateInstance(fieldType); foreach (var f in field.Metadata) { fieldType.GetField(f.Key).SetValue(createdField, ConvertFromString(fieldType.GetField(f.Key).FieldType, f.Value)); } createdField.Nullable = field.Nullable; return(createdField); }