using Cysharp.Threading.Tasks; using GhostSystem; using System.Collections.Generic; using System; using System.IO; using TMPro; using UnityEngine; using Newtonsoft.Json; using System.Threading.Tasks; // Dieses Script ermöglicht das Einlesen einer Log-Datei, wie sie von der VR-Anwendung im Offline-Modus erstellt wird. // Der Inhalt der Datei wird als Batch in die Datenbank hochgeladen. public class BatchUploader : MonoBehaviour { public TMP_InputField fileNameInput; public TMP_Text logText; private string _offlinePath; public void StartUpload() { string filename = fileNameInput.text + ".jsonl"; _offlinePath = Path.Combine(Application.persistentDataPath, filename); UploadOfflineDataAsync(); } private async UniTask UploadOfflineDataAsync() { if (!File.Exists(_offlinePath)) { logText.text += "\r\n" + "Keine Offline-Datei gefunden."; Debug.Log("Keine Offline-Datei gefunden."); return; } List offlineBatch = new List(); try { // Datei zeilenweise lesen und deserialisieren string[] lines = await File.ReadAllLinesAsync(_offlinePath); foreach (var line in lines) { try { FrameModel model = JsonConvert.DeserializeObject(line); if (model != null) //model.UserId = SupabaseManager.instance.userId; offlineBatch.Add(model); } catch (Exception ex) { logText.text += "\r\n" + $"Fehler beim Deserialisieren einer Zeile: {ex.Message}"; Debug.LogWarning($"Fehler beim Deserialisieren einer Zeile: {ex.Message}"); } } if (offlineBatch.Count == 0) { logText.text += "\r\n" + "Keine gültigen Datensätze zum Hochladen gefunden."; Debug.Log("Keine gültigen Datensätze zum Hochladen gefunden."); return; } // Upload zu Supabase try { var response = await SupabaseManager.instance.supabase .From() .Insert(offlineBatch); if (response != null) { logText.text += "\r\n" + $"Erfolgreich {offlineBatch.Count} Datensätze hochgeladen."; Debug.Log($"Erfolgreich {offlineBatch.Count} Datensätze hochgeladen."); File.Delete(_offlinePath); // Datei löschen nach erfolgreichem Upload } } catch (Exception ex) { logText.text += "\r\n" + $"Fehler beim Hochladen zur Supabase: {ex.Message}"; Debug.LogError($"Fehler beim Hochladen zur Supabase: {ex.Message}"); } } catch (Exception ex) { logText.text += "\r\n" + $"Fehler beim Lesen der Offline-Datei: {ex.Message}"; Debug.LogError($"Fehler beim Lesen der Offline-Datei: {ex.Message}"); } } }