public async Task <Server> UpdateConfiguration(int id, ServerConfigurationModel configurationModel) { var server = await Get(id); var existingProperties = ServerPropertiesSerializer.Deserialize(server.SerializedProperties); var mergedProperties = ServerPropertiesSerializer.Merge(existingProperties, configurationModel.Properties); server.SerializedProperties = ServerPropertiesSerializer.Serialize(mergedProperties); server.MainPort = configurationModel.ServerPort; server.MemoryAllocationMB = configurationModel.MemoryAllocationMB; server.Description = configurationModel.Description; server.World = _context.Worlds.FirstOrDefault(w => w.ID == configurationModel.WorldID); server.Image = _context.Images.FirstOrDefault(i => i.ID == configurationModel.ImageID); if (server.Image.SupportsMods && configurationModel.ModIDs != null) { server.Mods = configurationModel.ModIDs.Select(i => _context.Mods.FirstOrDefault(m => m.ID == i)).ToList(); } server.NeedsRecreate = true; _context.Update(server); await _context.SaveChangesAsync(); return(server); }
public void PropertiesAreMergedCorrectly() { var a = new ServerProperties(); var b = new ServerProperties(); b.Server_Port = 1000; b.Allow_Flight = true; b.Motd = "test"; ServerPropertiesSerializer.Merge(a, b); Assert.NotEqual(a.Server_Port, b.Server_Port); Assert.Equal(a.Allow_Flight, b.Allow_Flight); Assert.Equal(a.Motd, b.Motd); }