using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using Newtonsoft.Json;
namespace DesktopBot.Models
{
///
/// Gestisce la persistenza delle istanze di bot in un file JSON locale.
/// Percorso: %AppData%\TradingBot\bots.json
///
public static class BotInstanceStore
{
private static readonly string StorePath = Path.Combine(
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),
"TradingBot",
"bots.json"
);
/// Carica tutti i bot salvati dal disco. Ritorna lista vuota se il file non esiste.
public static List Load()
{
try
{
if (!File.Exists(StorePath))
return new List();
var json = File.ReadAllText(StorePath, Encoding.UTF8);
return JsonConvert.DeserializeObject>(json) ?? new List();
}
catch
{
return new List();
}
}
/// Salva tutti i bot su disco.
public static void Save(IEnumerable bots)
{
try
{
var dir = Path.GetDirectoryName(StorePath);
if (!Directory.Exists(dir))
Directory.CreateDirectory(dir);
var json = JsonConvert.SerializeObject(new List(bots), Formatting.Indented);
File.WriteAllText(StorePath, json, Encoding.UTF8);
}
catch
{
// Logging silenzioso: non bloccare la UI per errori di I/O
}
}
}
}