Converting to Async

This commit is contained in:
2026-01-29 20:22:30 -06:00
parent 0dd597ee4e
commit 30236924a0
5 changed files with 148 additions and 124 deletions

View File

@@ -1,4 +1,6 @@
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using SzCore;
using SzCore.DataObjects;
using SzCore.Defaults;
@@ -8,11 +10,12 @@ namespace SzCli;
public class Program
{
private static readonly DefaultLocalFileManager FileManager = new();
private static readonly Logger Logger = new();
private static readonly Logger Logger = new(FileManager);
private static readonly DefaultDatabaseHandler DbHandler = new();
private static readonly SzEvaluator Evaluator = new();
private static SzDataHandler _dataHandler;
public static void Main(string[] args)
public static async Task Main(string[] args)
{
SZ.Init(FileManager, Logger, DbHandler);
_dataHandler = SZ.DataHandler;
@@ -32,21 +35,21 @@ public class Program
switch (Console.ReadLine())
{
case "1": HandleCreateTemplate(); break;
case "2": HandleDeleteTemplate(); break;
case "3": HandleCreateDataset(); break;
case "4": HandleDeleteDataset(); break;
case "1": await HandleCreateTemplate(); break;
case "2": await HandleDeleteTemplate(); break;
case "3": await HandleCreateDataset(); break;
case "4": await HandleDeleteDataset(); break;
case "5": running = false; break;
default: Console.WriteLine("Invalid option."); break;
}
}
}
private static void HandleCreateTemplate()
private static async Task HandleCreateTemplate()
{
Console.Write("Enter Template Name: ");
string name = Console.ReadLine() ?? "";
Console.Write("Enter Data Object Type (e.g., Item, Character): ");
Console.Write("Enter Data Object Type: ");
string type = Console.ReadLine() ?? "";
var fields = new List<SzTemplateField>();
@@ -59,7 +62,6 @@ public class Program
Console.Write(" Field ID: ");
string fId = Console.ReadLine() ?? "";
// Display Enum Options
Console.WriteLine(" Select Field Type:");
var types = Enum.GetValues<SzFieldType>();
for (int i = 0; i < types.Length; i++)
@@ -70,63 +72,54 @@ public class Program
Console.Write(" Enter number: ");
if (!int.TryParse(Console.ReadLine(), out int choice) || choice < 0 || choice >= types.Length)
{
Console.WriteLine(" Invalid selection. Defaulting to Text.");
choice = 0; // Default to Text
choice = 0;
}
SzFieldType selectedType = types[choice];
var fieldResult = _dataHandler.CreateTemplateField(fId, selectedType);
var fieldResult = _dataHandler.CreateTemplateField(fId, types[choice]);
if (fieldResult.IsSuccess)
{
fields.Add(fieldResult.Value);
Console.WriteLine($" Added {selectedType} field: {fId}");
}
else
{
Console.WriteLine($" Error creating field: {fieldResult.Error}");
}
}
var result = _dataHandler.CreateDataObjectTemplate(name, type, fields: fields);
if (result.IsSuccess)
{
_dataHandler.SaveTemplate(result.Value);
Console.WriteLine($"\nTemplate '{result.Value.Id}' saved successfully!");
await _dataHandler.SaveTemplateAsync(result.Value);
Console.WriteLine($"\nTemplate '{result.Value.Id}' saved!");
}
}
private static void HandleDeleteTemplate()
private static async Task HandleDeleteTemplate()
{
Console.Write("Enter Template ID to delete: ");
string id = Console.ReadLine() ?? "";
var result = _dataHandler.DeleteTemplate(id);
var result = await _dataHandler.DeleteTemplateAsync(id);
Console.WriteLine(result.IsSuccess ? "Deleted." : $"Error: {result.Error}");
}
private static void HandleCreateDataset()
private static async Task HandleCreateDataset()
{
Console.Write("Enter Dataset Name: ");
string name = Console.ReadLine() ?? "";
Console.Write("Enter Template ID to use: ");
string tId = Console.ReadLine() ?? "";
var templateResult = _dataHandler.LoadTemplate<SzDataObjectTemplate>(tId);
var templateResult = await _dataHandler.LoadTemplateAsync<SzDataObjectTemplate>(tId);
if (!templateResult.IsSuccess)
{
Console.WriteLine($"Error: {templateResult.Error}");
return;
}
var datasetResult = _dataHandler.CreateDataset(name, tId);
var datasetResult = await _dataHandler.CreateDatasetAsync(name, tId);
if (!datasetResult.IsSuccess) return;
var dataset = datasetResult.Value;
bool addingObjects = true;
while (addingObjects)
while (true)
{
Console.Write("Add a DataObject to this dataset? (y/n): ");
Console.Write("Add a DataObject? (y/n): ");
if (Console.ReadLine()?.ToLower() != "y") break;
Console.Write(" Object Name: ");
@@ -137,24 +130,33 @@ public class Program
{
foreach (var field in objResult.Value.Fields.Values)
{
Console.Write($" Value for {field.Id}: ");
Console.Write($" Value for {field.Id} ({field.FieldType}): ");
field.Value = Console.ReadLine() ?? "";
}
// Assume SzDataset has a way to hold these objects in your actual implementation
dataset.DataObjects.Add(objResult.Value.Id, objResult.Value);
Console.WriteLine(" Object added to dataset draft.");
}
}
_dataHandler.SaveDataset(dataset);
Console.WriteLine("\nValidating dataset...");
var evalResult = await Evaluator.EvaluateDatasetAsync(dataset);
if (!evalResult.IsSuccess)
{
Console.WriteLine("Validation Failed:");
Console.WriteLine(evalResult.Error);
Console.Write("Save anyway? (y/n): ");
if (Console.ReadLine()?.ToLower() != "y") return;
}
await _dataHandler.SaveDatasetAsync(dataset);
Console.WriteLine("Dataset saved!");
}
private static void HandleDeleteDataset()
private static async Task HandleDeleteDataset()
{
Console.Write("Enter Dataset ID to delete: ");
string id = Console.ReadLine() ?? "";
var result = _dataHandler.DeleteDataset(id);
var result = await _dataHandler.DeleteDatasetAsync(id);
Console.WriteLine(result.IsSuccess ? "Deleted." : $"Error: {result.Error}");
}
}