C# Database

Local File Database

Litedb dotnet7 tarafından desteklenmediğini gördüm ve artık vakti geldi dedim. İhtiyaç olduğunda kullanmak üzere kendime not olarak basit düzeyde nesneleri dosyada saklamak üzere kurgulanmış küçük bir sınıf paylaşacağım.

public class FileDb {
        string filename;
        public FileDb(string filename) {
            this.filename = filename;
        }
        public List<T> Get<T>() {
            try {
                var source = File.ReadAllLines(filename);
                var result = new List<T>();
                foreach (string line in source) {
                    result.Add(JsonConvert.DeserializeObject<T>(line));
                }
                return result;
            }
            catch { return default; }
        }
        public T Get<T>(string key) {
            try {
                var flines = File.ReadAllLines(filename);
                foreach (var line in flines) {
                    if (line.Contains(key)) {
                        return JsonConvert.DeserializeObject<T>(line);
                    }
                }
                return default;
            }
            catch { return default; }
        }
        public bool Add(object obj) {
            try {
                File.AppendAllLines(filename, new List<string> { JsonConvert.SerializeObject(obj) });
                return true;
            }
            catch { return false; }
        }
        public void Update(string key, object newobj) {
            var flines = File.ReadAllLines(filename);
            var rlines = new StringBuilder();
            foreach (var line in flines) {
                if (line.Contains(key)) {
                    rlines.AppendLine(JsonConvert.SerializeObject(newobj));
                } else {
                    rlines.AppendLine(line);
                }
            }
            File.WriteAllText(filename, rlines.ToString());
        }
        public void Delete(string key) {
            var flines = File.ReadAllLines(filename);
            var rlines = new StringBuilder();
            foreach (var line in flines) {
                if (!line.Contains(key)) {
                    rlines.AppendLine(line);
                }
            }
            File.WriteAllText(filename, rlines.ToString());
        }
    }