Example #1
0
        public async Task DeleteDataModel(int id, bool validateRelatedModel = true, CancellationToken cancellationToken = default(CancellationToken))
        {
            cancellationToken.ThrowIfCancellationRequested();

            if (validateRelatedModel)
            {
                var model = await _dataModelRepository.GetById(id, cancellationToken);

                var relatedDataModelsSpec = new ProjectDataModelFilterSpecification(model.ProjectId, id);
                var relatedDataModels     = await _dataModelRepository.GetBySpec(relatedDataModelsSpec, cancellationToken);

                if (relatedDataModels.Any())
                {
                    throw new RelatedProjectDataModelException(model.Name, relatedDataModels.Select(m => m.Name).ToArray());
                }
            }

            var propertyByDataModelSpec = new ProjectDataModelPropertyFilterSpecification(id);
            var properties = await _dataModelPropertyRepository.GetBySpec(propertyByDataModelSpec, cancellationToken);

            foreach (var property in properties.ToList())
            {
                await DeleteDataModelProperty(property.Id, cancellationToken);
            }

            await _dataModelRepository.Delete(id, cancellationToken);
        }
        public async Task DeleteDataModel(int id, CancellationToken cancellationToken = default(CancellationToken))
        {
            cancellationToken.ThrowIfCancellationRequested();

            var propertyByDataModelSpec = new ProjectDataModelPropertyFilterSpecification(id);
            var properties = await _dataModelPropertyRepository.GetBySpec(propertyByDataModelSpec, cancellationToken);

            foreach (var property in properties.ToList())
            {
                await DeleteDataModelProperty(property.Id, cancellationToken);
            }

            await _dataModelRepository.Delete(id, cancellationToken);
        }