diff --git a/gaseous-server/Controllers/SystemController.cs b/gaseous-server/Controllers/SystemController.cs new file mode 100644 index 0000000..e4f285d --- /dev/null +++ b/gaseous-server/Controllers/SystemController.cs @@ -0,0 +1,48 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Threading.Tasks; +using gaseous_tools; +using Microsoft.AspNetCore.Mvc; + +namespace gaseous_server.Controllers +{ + [ApiController] + [Route("api/v1/[controller]")] + public class SystemController : Controller + { + [HttpGet] + [ProducesResponseType(StatusCodes.Status200OK)] + public Dictionary GetSystemStatus() + { + Database db = new gaseous_tools.Database(Database.databaseType.MySql, Config.DatabaseConfiguration.ConnectionString); + + Dictionary ReturnValue = new Dictionary(); + + // disk size + List> Disks = new List>(); + //Disks.Add(GetDisk(gaseous_tools.Config.ConfigurationPath)); + Disks.Add(GetDisk(gaseous_tools.Config.LibraryConfiguration.LibraryRootDirectory)); + ReturnValue.Add("Paths", Disks); + + // database size + string sql = "SELECT table_schema, SUM(data_length + index_length) FROM information_schema.tables WHERE table_schema = '" + Config.DatabaseConfiguration.DatabaseName + "'"; + DataTable dbResponse = db.ExecuteCMD(sql); + ReturnValue.Add("DatabaseSize", dbResponse.Rows[0][1]); + + return ReturnValue; + } + + private Dictionary GetDisk(string Path) + { + Dictionary DiskValues = new Dictionary(); + DiskValues.Add("LibraryPath", Path); + DiskValues.Add("SpaceUsed", gaseous_tools.Common.DirSize(new DirectoryInfo(Path))); + DiskValues.Add("SpaceAvailable", new DriveInfo(Path).AvailableFreeSpace); + DiskValues.Add("TotalSpace", new DriveInfo(Path).TotalSize); + + return DiskValues; + } + } +} \ No newline at end of file diff --git a/gaseous-server/ProcessQueue.cs b/gaseous-server/ProcessQueue.cs index 4057ced..8158105 100644 --- a/gaseous-server/ProcessQueue.cs +++ b/gaseous-server/ProcessQueue.cs @@ -74,6 +74,11 @@ namespace gaseous_server Logging.Log(Logging.LogType.Information, "Timered Event", "Starting Metadata Refresher"); Classes.MetadataManagement.RefreshMetadata(true); break; + + case QueueItemType.OrganiseLibrary: + Logging.Log(Logging.LogType.Information, "Timered Event", "Starting Library Organiser"); + Classes.ImportGame.OrganiseLibrary(); + break; } } catch (Exception ex) @@ -101,7 +106,8 @@ namespace gaseous_server NotConfigured, SignatureIngestor, TitleIngestor, - MetadataRefresh + MetadataRefresh, + OrganiseLibrary } public enum QueueItemState diff --git a/gaseous-server/Program.cs b/gaseous-server/Program.cs index 28ed3cd..51612db 100644 --- a/gaseous-server/Program.cs +++ b/gaseous-server/Program.cs @@ -94,6 +94,7 @@ gaseous_server.Classes.Metadata.Platforms.GetPlatform(0); ProcessQueue.QueueItems.Add(new ProcessQueue.QueueItem(ProcessQueue.QueueItemType.SignatureIngestor, 60)); ProcessQueue.QueueItems.Add(new ProcessQueue.QueueItem(ProcessQueue.QueueItemType.TitleIngestor, 1)); ProcessQueue.QueueItems.Add(new ProcessQueue.QueueItem(ProcessQueue.QueueItemType.MetadataRefresh, 360)); +ProcessQueue.QueueItems.Add(new ProcessQueue.QueueItem(ProcessQueue.QueueItemType.OrganiseLibrary, 1440)); // start the app app.Run(); diff --git a/gaseous-server/wwwroot/images/cog.jpg b/gaseous-server/wwwroot/images/cog.jpg new file mode 100644 index 0000000..4b0b01e Binary files /dev/null and b/gaseous-server/wwwroot/images/cog.jpg differ diff --git a/gaseous-server/wwwroot/index.html b/gaseous-server/wwwroot/index.html index b9c225b..3599d04 100644 --- a/gaseous-server/wwwroot/index.html +++ b/gaseous-server/wwwroot/index.html @@ -4,6 +4,7 @@ + @@ -14,12 +15,15 @@ Gaseous Games -