private void MigrateCreatedPackageFilesToDb() { // Load data from file IEnumerable <PackageDefinition> packages = _packagesRepository.GetAll().WhereNotNull(); var createdPackageDtos = new List <CreatedPackageSchemaDto>(); foreach (PackageDefinition package in packages) { // Create dto from xmlDocument var dto = new CreatedPackageSchemaDto { Name = package.Name, Value = _xmlParser.ToXml(package).ToString(), UpdateDate = DateTime.Now, PackageId = Guid.NewGuid(), }; createdPackageDtos.Add(dto); } _packagesRepository.DeleteLocalRepositoryFiles(); if (createdPackageDtos.Any()) { // Insert dto into CreatedPackage table Database.InsertBulk(createdPackageDtos); } }
public PackageDefinition?GetById(int id) { Sql <ISqlContext> query = new Sql <ISqlContext>(_umbracoDatabase !.SqlContext) .Select <CreatedPackageSchemaDto>() .From <CreatedPackageSchemaDto>() .Where <CreatedPackageSchemaDto>(x => x.Id == id); List <CreatedPackageSchemaDto> schemaDtos = _umbracoDatabase.Fetch <CreatedPackageSchemaDto>(query); if (schemaDtos.IsCollectionEmpty()) { return(null); } CreatedPackageSchemaDto packageSchema = schemaDtos.First(); var packageDefinition = _xmlParser.ToPackageDefinition(XElement.Parse(packageSchema.Value)); if (packageDefinition is not null) { packageDefinition.Id = packageSchema.Id; packageDefinition.Name = packageSchema.Name; packageDefinition.PackageId = packageSchema.PackageId; } return(packageDefinition); }
public bool SavePackage(PackageDefinition definition) { if (definition == null) { throw new NullReferenceException("PackageDefinition cannot be null when saving"); } if (definition.Name == null || string.IsNullOrEmpty(definition.Name) || definition.PackagePath == null) { return(false); } // Ensure it's valid ValidatePackage(definition); if (definition.Id == default) { // Create dto from definition var dto = new CreatedPackageSchemaDto() { Name = definition.Name, Value = _xmlParser.ToXml(definition).ToString(), UpdateDate = DateTime.Now, PackageId = Guid.NewGuid() }; // Set the ids, we have to save in database first to get the Id definition.PackageId = dto.PackageId; var result = _umbracoDatabase.Insert(dto); var decimalResult = result.SafeCast <decimal>(); definition.Id = decimal.ToInt32(decimalResult); } // Save snapshot locally, we do this to the updated packagePath ExportPackage(definition); // Create dto from definition var updatedDto = new CreatedPackageSchemaDto() { Name = definition.Name, Value = _xmlParser.ToXml(definition).ToString(), Id = definition.Id, PackageId = definition.PackageId, UpdateDate = DateTime.Now }; _umbracoDatabase.Update(updatedDto); return(true); }