using LiteDB; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Tango.DataStore.Lite { public class LiteDBDataStoreManager : IDataStoreManager { private bool _disposed; private LiteDatabase _database; public String DatabasePath { get; private set; } public LiteDBDataStoreManager(String databasePath) { DatabasePath = databasePath; Directory.CreateDirectory(Path.GetDirectoryName(DatabasePath)); _database = new LiteDatabase($"Filename={DatabasePath}"); _database.Pragma("TIMEOUT", 10); //Read Timeout _database.Pragma("UTC_DATE", true); //Keep time as UTC when getting data _database.Commit(); } public IDataStoreCollection GetCollection(string name) { return new LiteDBDataStoreCollection(_database.GetCollection(name)); } public List GetCollectionNames() { return _database.GetCollectionNames().ToList(); } public void Dispose() { if (!_disposed) { _disposed = true; _database.Dispose(); } } } }