From c193061fe30346080d083e54ff12f400c956bde3 Mon Sep 17 00:00:00 2001 From: RuKira Date: Thu, 2 Apr 2026 13:45:58 -0400 Subject: [PATCH] Updateded --- .../Services/Dataa/ClientKeyService.cs | 61 +++++++++++++++++++ RelayServer/Services/Dataa/SurrealService.cs | 21 +++++++ 2 files changed, 82 insertions(+) create mode 100644 RelayServer/Services/Dataa/ClientKeyService.cs create mode 100644 RelayServer/Services/Dataa/SurrealService.cs diff --git a/RelayServer/Services/Dataa/ClientKeyService.cs b/RelayServer/Services/Dataa/ClientKeyService.cs new file mode 100644 index 0000000..8f2ab2f --- /dev/null +++ b/RelayServer/Services/Dataa/ClientKeyService.cs @@ -0,0 +1,61 @@ +using RelayServer.Models; +using SurrealDb.Net; + +namespace RelayServer.Services; + +public sealed class ClientKeyService +{ + private readonly SurrealDbClient _db; + + public ClientKeyService(SurrealDbClient db) + { + _db = db; + } + + public async Task RegisterOrUpdateKeyAsync(string username, string publicKey) + { + var allKeys = await _db.Select("client_public_keys"); + + var existing = allKeys.FirstOrDefault(x => x.Username == username); + + if (existing is null) + { + await _db.Create("client_public_keys", new ClientPublicKeys + { + Username = username, + PublicKey = publicKey, + CreatedAt = DateTime.UtcNow, + UpdatedAt = DateTime.UtcNow + }); + + Console.WriteLine($"Stored public key for {username}"); + return; + } + + existing.PublicKey = publicKey; + existing.UpdatedAt = DateTime.UtcNow; + + await _db.Merge(new ClientPublicKeys + { + Id = existing.Id, + Username = existing.Username, + PublicKey = existing.PublicKey, + CreatedAt = existing.CreatedAt, + UpdatedAt = existing.UpdatedAt + }); + + Console.WriteLine($"Updated public key for {username}"); + } + + public async Task GetByUsernameAsync(string username) + { + var allKeys = await _db.Select("client_public_keys"); + return allKeys.FirstOrDefault(x => x.Username == username); + } + + public async Task> GetAllAsync() + { + var allKeys = await _db.Select("client_public_keys"); + return allKeys.ToList(); + } +} \ No newline at end of file diff --git a/RelayServer/Services/Dataa/SurrealService.cs b/RelayServer/Services/Dataa/SurrealService.cs new file mode 100644 index 0000000..9efb2fd --- /dev/null +++ b/RelayServer/Services/Dataa/SurrealService.cs @@ -0,0 +1,21 @@ +using SurrealDb.Net; +using SurrealDb.Net.Models.Auth; + +namespace RelayServer.Services; + +public sealed class SurrealService +{ + public async Task ConnectAsync() + { + var db = new SurrealDbClient("ws://127.0.0.1:8000/rpc"); + + await db.SignIn(new RootAuth + { + Username = "root", + Password = "secret" + }); + + await db.Use("test", "test"); + return db; + } +} \ No newline at end of file