Bladeren bron

Fixed handling of LiteDB object IDs

Lukas Angerer 3 jaren geleden
bovenliggende
commit
d3f871f126

+ 1 - 1
src/RunnersMeet.Client/src/app/pages/tracks-page/tracks-page.component.html

@@ -1,4 +1,4 @@
 Tracks:
 <ul>
-	<li *ngFor="let track of tracks | async">{{ track.displayName }}</li>
+	<li *ngFor="let track of tracks | async">{{ track.trackId }} - {{ track.displayName }}</li>
 </ul>

+ 1 - 1
src/RunnersMeet.Client/src/app/track.ts

@@ -1,5 +1,5 @@
 export class Track {
-	//public trackId: string = '';
+	public trackId: string = '';
 	public owner: string = '';
 	public fileHash: string = '';
 	public displayName: string = '';

+ 4 - 1
src/RunnersMeet.Server/AppServer.cs

@@ -9,7 +9,10 @@ public class AppServer
 		var builder = WebApplication.CreateBuilder(args);
 
 		ConfigureServices(builder.Services, builder.Configuration);
-		builder.Services.AddControllers();
+		builder.Services.AddControllers().AddJsonOptions(options =>
+		{
+			options.JsonSerializerOptions.Converters.Add(new ObjectIdConverter());
+		});
 		// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
 		builder.Services.AddEndpointsApiExplorer();
 		builder.Services.AddSwaggerGen();

+ 19 - 0
src/RunnersMeet.Server/ObjectIdConverter.cs

@@ -0,0 +1,19 @@
+using System.Text.Json;
+using System.Text.Json.Serialization;
+using LiteDB;
+
+namespace RunnersMeet.Server;
+
+public class ObjectIdConverter : JsonConverter<ObjectId>
+{
+	public override ObjectId? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
+	{
+		var id = reader.GetString();
+		return String.IsNullOrEmpty(id) ? null : new ObjectId(id);
+	}
+
+	public override void Write(Utf8JsonWriter writer, ObjectId value, JsonSerializerOptions options)
+	{
+		writer.WriteStringValue(value.ToString());
+	}
+}