using AutoMapper;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Misc
{
    public class JsonDbHelper<T, J>
    {
        public Mapper Mapper { get; protected set; }

        public JsonDbHelper()
        {
            Mapper = new AutoMapper.Mapper(new MapperConfiguration(c =>
            {
                c.CreateMap<T, J>().ReverseMap();
            }));
        }

        public bool Save(string file_path, T src)
        {
            try
            {
                var p = Mapper.Map<J>(src);
                File.WriteAllText(file_path, JsonConvert.SerializeObject(p, Formatting.Indented));
                return true;
            }
            catch
            {
                //异常，没有json 编码失败

            }
            return false;
        }
        public bool Load(string file_path, T src)
        {
            try
            {
                if (File.Exists(file_path))
                {
                    string json = File.ReadAllText(file_path);
                    var p = JsonConvert.DeserializeObject<J>(json);
                    Mapper.Map(p, src);
                    return true;
                }
            }
            catch
            {
                //异常，没有json 解码失败

            }
            return false;
        }
    }
}
