aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Tango.Telemetry/TelemetryPendingStorageManager.cs
diff options
context:
space:
mode:
authorRoy Ben Shabat <Roy.mail.net@gmail.com>2025-07-29 00:54:47 +0300
committerRoy Ben Shabat <Roy.mail.net@gmail.com>2025-07-29 00:54:47 +0300
commit70f9f4dcbe3d4537ff2bd503f18288b9a7b0e19e (patch)
treeab7c70dbe23c04e9e6ea9a165b6840e0b2ed1df7 /Software/Visual_Studio/Tango.Telemetry/TelemetryPendingStorageManager.cs
parentd70056692f43b2a39dbaefebe7c6e096a1205fb4 (diff)
downloadTango-70f9f4dcbe3d4537ff2bd503f18288b9a7b0e19e.tar.gz
Tango-70f9f4dcbe3d4537ff2bd503f18288b9a7b0e19e.zip
Tango.Telemetry v1
Diffstat (limited to 'Software/Visual_Studio/Tango.Telemetry/TelemetryPendingStorageManager.cs')
-rw-r--r--Software/Visual_Studio/Tango.Telemetry/TelemetryPendingStorageManager.cs80
1 files changed, 80 insertions, 0 deletions
diff --git a/Software/Visual_Studio/Tango.Telemetry/TelemetryPendingStorageManager.cs b/Software/Visual_Studio/Tango.Telemetry/TelemetryPendingStorageManager.cs
new file mode 100644
index 000000000..70903b833
--- /dev/null
+++ b/Software/Visual_Studio/Tango.Telemetry/TelemetryPendingStorageManager.cs
@@ -0,0 +1,80 @@
+using LiteDB;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Tango.Telemetry
+{
+ public class TelemetryPendingStorageManager
+ {
+ private bool _disposed;
+ private LiteDatabase _database;
+
+ public String DatabasePath { get; private set; }
+
+ public TelemetryPendingStorageManager()
+ {
+ DatabasePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Twine", "Tango", "Telemetry", Path.GetFileNameWithoutExtension(AppDomain.CurrentDomain.FriendlyName) + ".telemetry");
+ 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 virtual void Dispose()
+ {
+ if (_database != null)
+ {
+ try
+ {
+ _disposed = true;
+ _database.Dispose();
+ _database = null;
+ }
+ catch { }
+ }
+ }
+
+ ~TelemetryPendingStorageManager()
+ {
+ Dispose();
+ }
+
+ private ILiteCollection<T> GetCollection<T>() where T : ITelemetry
+ {
+ return _database.GetCollection<T>();
+ }
+
+ public void InsertOrUpdateTelemetryObject<T>(T telemetry) where T : ITelemetry
+ {
+ var collection = GetCollection<T>();
+ collection.Upsert(telemetry);
+ }
+
+ public void DeleteTelemetryObject<T>(T telemetry) where T : ITelemetry
+ {
+ var collection = GetCollection<T>();
+ collection.Delete(telemetry.Id);
+ }
+
+ public List<ITelemetry> GetTelemetryAll()
+ {
+ var names = _database.GetCollectionNames();
+
+ List<ITelemetry> telemetryAll = new List<ITelemetry>();
+
+ foreach (var name in names)
+ {
+ var collection = _database.GetCollection<ITelemetry>(name);
+ telemetryAll.AddRange(collection.FindAll().ToList());
+ }
+
+ return telemetryAll.OrderBy(x => x.Time).ToList();
+ }
+ }
+}