Пример #1
0
        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);
        }
Пример #2
0
        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);
        }