using System.IO;
using System.Text;
using IniParser;
using IniParser.Model;

namespace Elwig.Helpers {
    public class Config {

        private readonly string FileName;
        public string DatabaseFile = App.DataPath + "database.sqlite3";

        public Config(string filename) {
            FileName = filename;
            Read();
        }

        public void Read() {
            var parser = new FileIniDataParser();
            IniData? ini = null;
            try {
                ini = parser.ReadFile(FileName, Encoding.UTF8);
            } catch {}

            if (ini == null || !ini.TryGetKey("database.file", out string db)) {
                DatabaseFile = App.DataPath + "database.sqlite3";
            } else if (db.Length > 1 && (db[1] == ':' || db[0] == '/' || db[0] == '\\')) {
                DatabaseFile = db;
            } else {
                DatabaseFile = App.DataPath + db;
            }
        }

        public void Write() {
            using var file = new StreamWriter(FileName, false, Encoding.UTF8);
            file.Write($"\n[database]\nfile = {DatabaseFile}\n");
        }
    }
}