From 9511f1928b765b1162b69a2f79c645357ecf6b53 Mon Sep 17 00:00:00 2001 From: abdulrahman fikry Date: Sun, 5 Oct 2025 22:25:53 +0300 Subject: [PATCH] Initial commit --- .gitignore | 7 ++ Controllers/WondersController.cs | 105 ++++++++++++++++ Data/AppDbContext.cs | 12 ++ Data/DataSeedingApplication.cs | 22 ++++ Ghaymah.WondersAPI.csproj | 19 +++ Ghaymah.WondersAPI.slnx | 3 + Logs/app-log2025100520251005.json | 194 ++++++++++++++++++++++++++++++ Models/Wonder.cs | 14 +++ Program.cs | 72 +++++++++++ Properties/launchSettings.json | 41 +++++++ appsettings.Development.json | 8 ++ appsettings.json | 9 ++ seed-data.json | 56 +++++++++ 13 files changed, 562 insertions(+) create mode 100644 .gitignore create mode 100644 Controllers/WondersController.cs create mode 100644 Data/AppDbContext.cs create mode 100644 Data/DataSeedingApplication.cs create mode 100644 Ghaymah.WondersAPI.csproj create mode 100644 Ghaymah.WondersAPI.slnx create mode 100644 Logs/app-log2025100520251005.json create mode 100644 Models/Wonder.cs create mode 100644 Program.cs create mode 100644 Properties/launchSettings.json create mode 100644 appsettings.Development.json create mode 100644 appsettings.json create mode 100644 seed-data.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..634490a --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +.vs/ +bin/ +obj/ +*.user +*.suo +*.userosscache +*.sln.docstates diff --git a/Controllers/WondersController.cs b/Controllers/WondersController.cs new file mode 100644 index 0000000..2eae7dd --- /dev/null +++ b/Controllers/WondersController.cs @@ -0,0 +1,105 @@ +using Microsoft.AspNetCore.Mvc; +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Logging; +using WondersAPI.Data; +using WondersAPI.Models; + +namespace Ghaymah.WondersAPI.Controllers +{ + [ApiController] + [Route("api/[controller]")] + public class WondersController : ControllerBase + { + private readonly AppDbContext _context; + private readonly ILogger _logger; + + public WondersController(AppDbContext context, ILogger logger) + { + _context = context; + _logger = logger; + } + + [HttpGet] + public async Task GetAll() + { + var wonders = await _context.Wonders.ToListAsync(); + _logger.LogInformation("Fetched {Count} wonders from database", wonders.Count); + return Ok(wonders); + } + + + [HttpGet("{id}")] + public async Task GetById(int id) + { + var wonder = await _context.Wonders.FindAsync(id); + if (wonder == null) + { + _logger.LogWarning("Wonder with ID {Id} not found", id); + return NotFound(new { message = $"Wonder with ID {id} not found" }); + } + + return Ok(wonder); + } + + [HttpPost] + public async Task Create(Wonder wonder) + { + _context.Wonders.Add(wonder); + await _context.SaveChangesAsync(); + _logger.LogInformation("Created new wonder: {Name}", wonder.Name); + return CreatedAtAction(nameof(GetById), new { id = wonder.Id }, wonder); + } + + + [HttpPut("{id}")] + public async Task Update(int id, Wonder updatedWonder) + { + var existing = await _context.Wonders.FindAsync(id); + if (existing == null) + { + _logger.LogWarning("Update failed: Wonder with ID {Id} not found", id); + return NotFound(); + } + + existing.Name = updatedWonder.Name; + existing.Country = updatedWonder.Country; + existing.Era = updatedWonder.Era; + existing.Type = updatedWonder.Type; + existing.Description = updatedWonder.Description; + existing.DiscoveryYear = updatedWonder.DiscoveryYear; + + await _context.SaveChangesAsync(); + _logger.LogInformation("Updated wonder with ID {Id}", id); + return NoContent(); + } + + [HttpDelete("{id}")] + public async Task Delete(int id) + { + var wonder = await _context.Wonders.FindAsync(id); + if (wonder == null) + { + _logger.LogWarning("Delete failed: Wonder with ID {Id} not found", id); + return NotFound(); + } + + _context.Wonders.Remove(wonder); + await _context.SaveChangesAsync(); + _logger.LogInformation("Deleted wonder with ID {Id}", id); + return NoContent(); + } + + + [HttpGet("random")] + public async Task GetRandom() + { + var wonders = await _context.Wonders.ToListAsync(); + if (!wonders.Any()) + return NotFound(); + + var random = wonders[new Random().Next(wonders.Count)]; + _logger.LogInformation("Returned random wonder: {Name}", random.Name); + return Ok(random); + } + } +} diff --git a/Data/AppDbContext.cs b/Data/AppDbContext.cs new file mode 100644 index 0000000..ce98ccc --- /dev/null +++ b/Data/AppDbContext.cs @@ -0,0 +1,12 @@ +using Microsoft.EntityFrameworkCore; +using WondersAPI.Models; + +namespace WondersAPI.Data +{ + public class AppDbContext : DbContext + { + public DbSet Wonders => Set(); + + public AppDbContext(DbContextOptions options) : base(options) { } + } +} \ No newline at end of file diff --git a/Data/DataSeedingApplication.cs b/Data/DataSeedingApplication.cs new file mode 100644 index 0000000..6fe06b5 --- /dev/null +++ b/Data/DataSeedingApplication.cs @@ -0,0 +1,22 @@ +using System.Text.Json; +using WondersAPI.Models; + +namespace WondersAPI.Data +{ + public static class DataSeedingApplication + { + public static List SeedWonders(string filePath) + { + if (!File.Exists(filePath)) + throw new FileNotFoundException($"Seed data file not found: {filePath}"); + + var json = File.ReadAllText(filePath); + var wonders = JsonSerializer.Deserialize>(json, new JsonSerializerOptions + { + PropertyNameCaseInsensitive = true + }); + + return wonders ?? new List(); + } + } +} \ No newline at end of file diff --git a/Ghaymah.WondersAPI.csproj b/Ghaymah.WondersAPI.csproj new file mode 100644 index 0000000..1f2a810 --- /dev/null +++ b/Ghaymah.WondersAPI.csproj @@ -0,0 +1,19 @@ + + + + net8.0 + enable + enable + + + + + + + + + + + + + diff --git a/Ghaymah.WondersAPI.slnx b/Ghaymah.WondersAPI.slnx new file mode 100644 index 0000000..32dad66 --- /dev/null +++ b/Ghaymah.WondersAPI.slnx @@ -0,0 +1,3 @@ + + + diff --git a/Logs/app-log2025100520251005.json b/Logs/app-log2025100520251005.json new file mode 100644 index 0000000..79fb0e6 --- /dev/null +++ b/Logs/app-log2025100520251005.json @@ -0,0 +1,194 @@ +{"Timestamp":"2025-10-05T19:36:02.8531416+03:00","Level":"Information","MessageTemplate":"Saved {count} entities to in-memory store.","Properties":{"count":6,"EventId":{"Id":30100,"Name":"Microsoft.EntityFrameworkCore.Update.ChangesSaved"},"SourceContext":"Microsoft.EntityFrameworkCore.Update"}} +{"Timestamp":"2025-10-05T19:36:02.8899875+03:00","Level":"Information","MessageTemplate":"🚀 Wonders API application started successfully at {time}","Properties":{"time":"2025-10-05T19:36:02.8884430+03:00","SourceContext":"Program"}} +{"Timestamp":"2025-10-05T19:36:02.9889100+03:00","Level":"Information","MessageTemplate":"Now listening on: {address}","Properties":{"address":"https://localhost:7247","EventId":{"Id":14,"Name":"ListeningOnAddress"},"SourceContext":"Microsoft.Hosting.Lifetime"}} +{"Timestamp":"2025-10-05T19:36:02.9940832+03:00","Level":"Information","MessageTemplate":"Now listening on: {address}","Properties":{"address":"http://localhost:5004","EventId":{"Id":14,"Name":"ListeningOnAddress"},"SourceContext":"Microsoft.Hosting.Lifetime"}} +{"Timestamp":"2025-10-05T19:36:03.0286517+03:00","Level":"Information","MessageTemplate":"Application started. Press Ctrl+C to shut down.","Properties":{"SourceContext":"Microsoft.Hosting.Lifetime"}} +{"Timestamp":"2025-10-05T19:36:03.0318673+03:00","Level":"Information","MessageTemplate":"Hosting environment: {EnvName}","Properties":{"EnvName":"Development","SourceContext":"Microsoft.Hosting.Lifetime"}} +{"Timestamp":"2025-10-05T19:36:03.0334687+03:00","Level":"Information","MessageTemplate":"Content root path: {ContentRoot}","Properties":{"ContentRoot":"D:\\WebApplication1","SourceContext":"Microsoft.Hosting.Lifetime"}} +{"Timestamp":"2025-10-05T19:36:03.2423042+03:00","Level":"Information","MessageTemplate":"Request starting {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {ContentType} {ContentLength}","TraceId":"35acc1a7ef7105acd31f33a3ac8a348d","SpanId":"5e9a885cea878872","Properties":{"Protocol":"HTTP/2","Method":"GET","ContentType":null,"ContentLength":null,"Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/swagger/index.html","QueryString":"","EventId":{"Id":1},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG45L33UCSH:00000001","RequestPath":"/swagger/index.html","ConnectionId":"0HNG45L33UCSH"}} +{"Timestamp":"2025-10-05T19:36:03.3415286+03:00","Level":"Information","MessageTemplate":"Request finished {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {StatusCode} {ContentLength} {ContentType} {ElapsedMilliseconds}ms","TraceId":"35acc1a7ef7105acd31f33a3ac8a348d","SpanId":"5e9a885cea878872","Properties":{"ElapsedMilliseconds":100.0974,"StatusCode":200,"ContentType":"text/html;charset=utf-8","ContentLength":null,"Protocol":"HTTP/2","Method":"GET","Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/swagger/index.html","QueryString":"","EventId":{"Id":2},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG45L33UCSH:00000001","RequestPath":"/swagger/index.html","ConnectionId":"0HNG45L33UCSH"}} +{"Timestamp":"2025-10-05T19:36:03.4167446+03:00","Level":"Information","MessageTemplate":"Request starting {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {ContentType} {ContentLength}","TraceId":"f974586b42c12b04caf14a86b44c1560","SpanId":"e80f1c35b260a8e4","Properties":{"Protocol":"HTTP/2","Method":"GET","ContentType":null,"ContentLength":null,"Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/_framework/aspnetcore-browser-refresh.js","QueryString":"","EventId":{"Id":1},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG45L33UCSH:00000003","RequestPath":"/_framework/aspnetcore-browser-refresh.js","ConnectionId":"0HNG45L33UCSH"}} +{"Timestamp":"2025-10-05T19:36:03.4260460+03:00","Level":"Information","MessageTemplate":"Request finished {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {StatusCode} {ContentLength} {ContentType} {ElapsedMilliseconds}ms","TraceId":"f974586b42c12b04caf14a86b44c1560","SpanId":"e80f1c35b260a8e4","Properties":{"ElapsedMilliseconds":9.2519,"StatusCode":200,"ContentType":"application/javascript; charset=utf-8","ContentLength":16515,"Protocol":"HTTP/2","Method":"GET","Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/_framework/aspnetcore-browser-refresh.js","QueryString":"","EventId":{"Id":2},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG45L33UCSH:00000003","RequestPath":"/_framework/aspnetcore-browser-refresh.js","ConnectionId":"0HNG45L33UCSH"}} +{"Timestamp":"2025-10-05T19:36:03.5236031+03:00","Level":"Information","MessageTemplate":"Request starting {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {ContentType} {ContentLength}","TraceId":"5020635b40c563bb6a73ead50af0198a","SpanId":"d1f11f315eeae498","Properties":{"Protocol":"HTTP/2","Method":"GET","ContentType":null,"ContentLength":null,"Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/_vs/browserLink","QueryString":"","EventId":{"Id":1},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG45L33UCSH:00000005","RequestPath":"/_vs/browserLink","ConnectionId":"0HNG45L33UCSH"}} +{"Timestamp":"2025-10-05T19:36:03.5492992+03:00","Level":"Information","MessageTemplate":"Request finished {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {StatusCode} {ContentLength} {ContentType} {ElapsedMilliseconds}ms","TraceId":"5020635b40c563bb6a73ead50af0198a","SpanId":"d1f11f315eeae498","Properties":{"ElapsedMilliseconds":25.7293,"StatusCode":200,"ContentType":"text/javascript; charset=UTF-8","ContentLength":null,"Protocol":"HTTP/2","Method":"GET","Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/_vs/browserLink","QueryString":"","EventId":{"Id":2},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG45L33UCSH:00000005","RequestPath":"/_vs/browserLink","ConnectionId":"0HNG45L33UCSH"}} +{"Timestamp":"2025-10-05T19:36:03.9302775+03:00","Level":"Information","MessageTemplate":"Request starting {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {ContentType} {ContentLength}","TraceId":"913161755c6cb00fef169c71c09f3cdc","SpanId":"bdedd551d06649bc","Properties":{"Protocol":"HTTP/2","Method":"GET","ContentType":null,"ContentLength":null,"Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/swagger/v1/swagger.json","QueryString":"","EventId":{"Id":1},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG45L33UCSH:00000007","RequestPath":"/swagger/v1/swagger.json","ConnectionId":"0HNG45L33UCSH"}} +{"Timestamp":"2025-10-05T19:36:03.9408565+03:00","Level":"Information","MessageTemplate":"Request finished {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {StatusCode} {ContentLength} {ContentType} {ElapsedMilliseconds}ms","TraceId":"913161755c6cb00fef169c71c09f3cdc","SpanId":"bdedd551d06649bc","Properties":{"ElapsedMilliseconds":10.5719,"StatusCode":200,"ContentType":"application/json;charset=utf-8","ContentLength":null,"Protocol":"HTTP/2","Method":"GET","Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/swagger/v1/swagger.json","QueryString":"","EventId":{"Id":2},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG45L33UCSH:00000007","RequestPath":"/swagger/v1/swagger.json","ConnectionId":"0HNG45L33UCSH"}} +{"Timestamp":"2025-10-05T19:36:07.9317520+03:00","Level":"Information","MessageTemplate":"Request starting {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {ContentType} {ContentLength}","TraceId":"c5fa6182c934d92df2d96e1ef32effc1","SpanId":"1bd29727ef663f91","Properties":{"Protocol":"HTTP/2","Method":"GET","ContentType":null,"ContentLength":null,"Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/swagger/index.html","QueryString":"","EventId":{"Id":1},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG45L33UCSH:00000009","RequestPath":"/swagger/index.html","ConnectionId":"0HNG45L33UCSH"}} +{"Timestamp":"2025-10-05T19:36:07.9454296+03:00","Level":"Information","MessageTemplate":"Request finished {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {StatusCode} {ContentLength} {ContentType} {ElapsedMilliseconds}ms","TraceId":"c5fa6182c934d92df2d96e1ef32effc1","SpanId":"1bd29727ef663f91","Properties":{"ElapsedMilliseconds":13.5054,"StatusCode":200,"ContentType":"text/html;charset=utf-8","ContentLength":null,"Protocol":"HTTP/2","Method":"GET","Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/swagger/index.html","QueryString":"","EventId":{"Id":2},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG45L33UCSH:00000009","RequestPath":"/swagger/index.html","ConnectionId":"0HNG45L33UCSH"}} +{"Timestamp":"2025-10-05T19:36:07.9978445+03:00","Level":"Information","MessageTemplate":"Request starting {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {ContentType} {ContentLength}","TraceId":"2152647d28f968bbf9ba6599ebf01cac","SpanId":"cfe1c3ee84759618","Properties":{"Protocol":"HTTP/2","Method":"GET","ContentType":null,"ContentLength":null,"Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/_framework/aspnetcore-browser-refresh.js","QueryString":"","EventId":{"Id":1},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG45L33UCSH:0000000B","RequestPath":"/_framework/aspnetcore-browser-refresh.js","ConnectionId":"0HNG45L33UCSH"}} +{"Timestamp":"2025-10-05T19:36:07.9979310+03:00","Level":"Information","MessageTemplate":"Request starting {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {ContentType} {ContentLength}","TraceId":"7181bcf37c68b2dfb4105c595a5ae52b","SpanId":"ebf00b338f32a89f","Properties":{"Protocol":"HTTP/2","Method":"GET","ContentType":null,"ContentLength":null,"Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/_vs/browserLink","QueryString":"","EventId":{"Id":1},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG45L33UCSH:0000000D","RequestPath":"/_vs/browserLink","ConnectionId":"0HNG45L33UCSH"}} +{"Timestamp":"2025-10-05T19:36:08.0033851+03:00","Level":"Information","MessageTemplate":"Request finished {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {StatusCode} {ContentLength} {ContentType} {ElapsedMilliseconds}ms","TraceId":"2152647d28f968bbf9ba6599ebf01cac","SpanId":"cfe1c3ee84759618","Properties":{"ElapsedMilliseconds":5.5171,"StatusCode":200,"ContentType":"application/javascript; charset=utf-8","ContentLength":16515,"Protocol":"HTTP/2","Method":"GET","Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/_framework/aspnetcore-browser-refresh.js","QueryString":"","EventId":{"Id":2},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG45L33UCSH:0000000B","RequestPath":"/_framework/aspnetcore-browser-refresh.js","ConnectionId":"0HNG45L33UCSH"}} +{"Timestamp":"2025-10-05T19:36:08.0203502+03:00","Level":"Information","MessageTemplate":"Request finished {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {StatusCode} {ContentLength} {ContentType} {ElapsedMilliseconds}ms","TraceId":"7181bcf37c68b2dfb4105c595a5ae52b","SpanId":"ebf00b338f32a89f","Properties":{"ElapsedMilliseconds":22.376,"StatusCode":200,"ContentType":"text/javascript; charset=UTF-8","ContentLength":null,"Protocol":"HTTP/2","Method":"GET","Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/_vs/browserLink","QueryString":"","EventId":{"Id":2},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG45L33UCSH:0000000D","RequestPath":"/_vs/browserLink","ConnectionId":"0HNG45L33UCSH"}} +{"Timestamp":"2025-10-05T19:36:08.3130585+03:00","Level":"Information","MessageTemplate":"Request starting {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {ContentType} {ContentLength}","TraceId":"7e87e8608159f56dd2aaf6b09115ba52","SpanId":"1f71e2289690feea","Properties":{"Protocol":"HTTP/2","Method":"GET","ContentType":null,"ContentLength":null,"Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/swagger/v1/swagger.json","QueryString":"","EventId":{"Id":1},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG45L33UCSH:0000000F","RequestPath":"/swagger/v1/swagger.json","ConnectionId":"0HNG45L33UCSH"}} +{"Timestamp":"2025-10-05T19:36:08.3374898+03:00","Level":"Information","MessageTemplate":"Request finished {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {StatusCode} {ContentLength} {ContentType} {ElapsedMilliseconds}ms","TraceId":"7e87e8608159f56dd2aaf6b09115ba52","SpanId":"1f71e2289690feea","Properties":{"ElapsedMilliseconds":24.3464,"StatusCode":200,"ContentType":"application/json;charset=utf-8","ContentLength":null,"Protocol":"HTTP/2","Method":"GET","Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/swagger/v1/swagger.json","QueryString":"","EventId":{"Id":2},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG45L33UCSH:0000000F","RequestPath":"/swagger/v1/swagger.json","ConnectionId":"0HNG45L33UCSH"}} +{"Timestamp":"2025-10-05T19:39:16.0418357+03:00","Level":"Information","MessageTemplate":"Saved {count} entities to in-memory store.","Properties":{"count":6,"EventId":{"Id":30100,"Name":"Microsoft.EntityFrameworkCore.Update.ChangesSaved"},"SourceContext":"Microsoft.EntityFrameworkCore.Update"}} +{"Timestamp":"2025-10-05T19:39:16.0877228+03:00","Level":"Information","MessageTemplate":"🚀 Wonders API application started successfully at {time}","Properties":{"time":"2025-10-05T19:39:16.0848639+03:00","SourceContext":"Program"}} +{"Timestamp":"2025-10-05T19:39:16.1893656+03:00","Level":"Information","MessageTemplate":"Now listening on: {address}","Properties":{"address":"https://localhost:7247","EventId":{"Id":14,"Name":"ListeningOnAddress"},"SourceContext":"Microsoft.Hosting.Lifetime"}} +{"Timestamp":"2025-10-05T19:39:16.1903794+03:00","Level":"Information","MessageTemplate":"Now listening on: {address}","Properties":{"address":"http://localhost:5004","EventId":{"Id":14,"Name":"ListeningOnAddress"},"SourceContext":"Microsoft.Hosting.Lifetime"}} +{"Timestamp":"2025-10-05T19:39:16.2194975+03:00","Level":"Information","MessageTemplate":"Application started. Press Ctrl+C to shut down.","Properties":{"SourceContext":"Microsoft.Hosting.Lifetime"}} +{"Timestamp":"2025-10-05T19:39:16.2217609+03:00","Level":"Information","MessageTemplate":"Hosting environment: {EnvName}","Properties":{"EnvName":"Development","SourceContext":"Microsoft.Hosting.Lifetime"}} +{"Timestamp":"2025-10-05T19:39:16.2225178+03:00","Level":"Information","MessageTemplate":"Content root path: {ContentRoot}","Properties":{"ContentRoot":"D:\\WebApplication1","SourceContext":"Microsoft.Hosting.Lifetime"}} +{"Timestamp":"2025-10-05T19:39:38.5306752+03:00","Level":"Information","MessageTemplate":"Saved {count} entities to in-memory store.","Properties":{"count":6,"EventId":{"Id":30100,"Name":"Microsoft.EntityFrameworkCore.Update.ChangesSaved"},"SourceContext":"Microsoft.EntityFrameworkCore.Update"}} +{"Timestamp":"2025-10-05T19:39:38.5595008+03:00","Level":"Information","MessageTemplate":"🚀 Wonders API application started successfully at {time}","Properties":{"time":"2025-10-05T19:39:38.5579514+03:00","SourceContext":"Program"}} +{"Timestamp":"2025-10-05T19:39:38.6616158+03:00","Level":"Information","MessageTemplate":"Now listening on: {address}","Properties":{"address":"https://localhost:7247","EventId":{"Id":14,"Name":"ListeningOnAddress"},"SourceContext":"Microsoft.Hosting.Lifetime"}} +{"Timestamp":"2025-10-05T19:39:38.6632466+03:00","Level":"Information","MessageTemplate":"Now listening on: {address}","Properties":{"address":"http://localhost:5004","EventId":{"Id":14,"Name":"ListeningOnAddress"},"SourceContext":"Microsoft.Hosting.Lifetime"}} +{"Timestamp":"2025-10-05T19:39:38.6897776+03:00","Level":"Information","MessageTemplate":"Application started. Press Ctrl+C to shut down.","Properties":{"SourceContext":"Microsoft.Hosting.Lifetime"}} +{"Timestamp":"2025-10-05T19:39:38.6921689+03:00","Level":"Information","MessageTemplate":"Hosting environment: {EnvName}","Properties":{"EnvName":"Development","SourceContext":"Microsoft.Hosting.Lifetime"}} +{"Timestamp":"2025-10-05T19:39:38.6927100+03:00","Level":"Information","MessageTemplate":"Content root path: {ContentRoot}","Properties":{"ContentRoot":"D:\\WebApplication1","SourceContext":"Microsoft.Hosting.Lifetime"}} +{"Timestamp":"2025-10-05T19:39:39.2954029+03:00","Level":"Information","MessageTemplate":"Request starting {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {ContentType} {ContentLength}","TraceId":"5e8113cd010a28949f738c64b5b50110","SpanId":"220bfcc6fa1488d1","Properties":{"Protocol":"HTTP/2","Method":"GET","ContentType":null,"ContentLength":null,"Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/swagger/index.html","QueryString":"","EventId":{"Id":1},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG45N3EQM0P:00000001","RequestPath":"/swagger/index.html","ConnectionId":"0HNG45N3EQM0P"}} +{"Timestamp":"2025-10-05T19:39:39.4190454+03:00","Level":"Information","MessageTemplate":"Request finished {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {StatusCode} {ContentLength} {ContentType} {ElapsedMilliseconds}ms","TraceId":"5e8113cd010a28949f738c64b5b50110","SpanId":"220bfcc6fa1488d1","Properties":{"ElapsedMilliseconds":124.533,"StatusCode":200,"ContentType":"text/html;charset=utf-8","ContentLength":null,"Protocol":"HTTP/2","Method":"GET","Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/swagger/index.html","QueryString":"","EventId":{"Id":2},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG45N3EQM0P:00000001","RequestPath":"/swagger/index.html","ConnectionId":"0HNG45N3EQM0P"}} +{"Timestamp":"2025-10-05T19:39:39.4413620+03:00","Level":"Information","MessageTemplate":"Request starting {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {ContentType} {ContentLength}","TraceId":"8eaf7f2b538f04a546a16b5399f4bb50","SpanId":"6bb67786d1fd727e","Properties":{"Protocol":"HTTP/2","Method":"GET","ContentType":null,"ContentLength":null,"Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/_framework/aspnetcore-browser-refresh.js","QueryString":"","EventId":{"Id":1},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG45N3EQM0P:00000003","RequestPath":"/_framework/aspnetcore-browser-refresh.js","ConnectionId":"0HNG45N3EQM0P"}} +{"Timestamp":"2025-10-05T19:39:39.4462100+03:00","Level":"Information","MessageTemplate":"Request finished {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {StatusCode} {ContentLength} {ContentType} {ElapsedMilliseconds}ms","TraceId":"8eaf7f2b538f04a546a16b5399f4bb50","SpanId":"6bb67786d1fd727e","Properties":{"ElapsedMilliseconds":4.8007,"StatusCode":200,"ContentType":"application/javascript; charset=utf-8","ContentLength":16515,"Protocol":"HTTP/2","Method":"GET","Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/_framework/aspnetcore-browser-refresh.js","QueryString":"","EventId":{"Id":2},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG45N3EQM0P:00000003","RequestPath":"/_framework/aspnetcore-browser-refresh.js","ConnectionId":"0HNG45N3EQM0P"}} +{"Timestamp":"2025-10-05T19:39:39.5617184+03:00","Level":"Information","MessageTemplate":"Request starting {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {ContentType} {ContentLength}","TraceId":"52ce03b6f3ba4eeb28e9f3089d5b4968","SpanId":"4e7a1df8ab058393","Properties":{"Protocol":"HTTP/2","Method":"GET","ContentType":null,"ContentLength":null,"Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/_vs/browserLink","QueryString":"","EventId":{"Id":1},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG45N3EQM0P:00000005","RequestPath":"/_vs/browserLink","ConnectionId":"0HNG45N3EQM0P"}} +{"Timestamp":"2025-10-05T19:39:39.5832424+03:00","Level":"Information","MessageTemplate":"Request finished {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {StatusCode} {ContentLength} {ContentType} {ElapsedMilliseconds}ms","TraceId":"52ce03b6f3ba4eeb28e9f3089d5b4968","SpanId":"4e7a1df8ab058393","Properties":{"ElapsedMilliseconds":21.559,"StatusCode":200,"ContentType":"text/javascript; charset=UTF-8","ContentLength":null,"Protocol":"HTTP/2","Method":"GET","Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/_vs/browserLink","QueryString":"","EventId":{"Id":2},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG45N3EQM0P:00000005","RequestPath":"/_vs/browserLink","ConnectionId":"0HNG45N3EQM0P"}} +{"Timestamp":"2025-10-05T19:39:39.8503324+03:00","Level":"Information","MessageTemplate":"Request starting {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {ContentType} {ContentLength}","TraceId":"35a723ae4bcc4bd5cdfbecdb706d1c47","SpanId":"53180b4a51e96bae","Properties":{"Protocol":"HTTP/2","Method":"GET","ContentType":null,"ContentLength":null,"Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/swagger/v1/swagger.json","QueryString":"","EventId":{"Id":1},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG45N3EQM0P:00000007","RequestPath":"/swagger/v1/swagger.json","ConnectionId":"0HNG45N3EQM0P"}} +{"Timestamp":"2025-10-05T19:39:39.8605925+03:00","Level":"Information","MessageTemplate":"Request finished {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {StatusCode} {ContentLength} {ContentType} {ElapsedMilliseconds}ms","TraceId":"35a723ae4bcc4bd5cdfbecdb706d1c47","SpanId":"53180b4a51e96bae","Properties":{"ElapsedMilliseconds":10.2206,"StatusCode":200,"ContentType":"application/json;charset=utf-8","ContentLength":null,"Protocol":"HTTP/2","Method":"GET","Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/swagger/v1/swagger.json","QueryString":"","EventId":{"Id":2},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG45N3EQM0P:00000007","RequestPath":"/swagger/v1/swagger.json","ConnectionId":"0HNG45N3EQM0P"}} +{"Timestamp":"2025-10-05T19:40:38.4210839+03:00","Level":"Information","MessageTemplate":"Request starting {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {ContentType} {ContentLength}","TraceId":"3c27fb2b1e9c25361fd0fa0e04d93e00","SpanId":"73142fde40525b16","Properties":{"Protocol":"HTTP/2","Method":"POST","ContentType":"application/json","ContentLength":144,"Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/api/Wonders","QueryString":"","EventId":{"Id":1},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG45N3EQM0Q:00000001","RequestPath":"/api/Wonders","ConnectionId":"0HNG45N3EQM0Q"}} +{"Timestamp":"2025-10-05T19:40:38.4331216+03:00","Level":"Information","MessageTemplate":"Executing endpoint '{EndpointName}'","TraceId":"3c27fb2b1e9c25361fd0fa0e04d93e00","SpanId":"73142fde40525b16","Properties":{"EndpointName":"Ghaymah.WondersAPI.Controllers.WondersController.Create (Ghaymah.WondersAPI)","EventId":{"Name":"ExecutingEndpoint"},"SourceContext":"Microsoft.AspNetCore.Routing.EndpointMiddleware","RequestId":"0HNG45N3EQM0Q:00000001","RequestPath":"/api/Wonders","ConnectionId":"0HNG45N3EQM0Q"}} +{"Timestamp":"2025-10-05T19:40:38.4706216+03:00","Level":"Information","MessageTemplate":"Route matched with {RouteData}. Executing controller action with signature {MethodInfo} on controller {Controller} ({AssemblyName}).","TraceId":"3c27fb2b1e9c25361fd0fa0e04d93e00","SpanId":"73142fde40525b16","Properties":{"RouteData":"{action = \"Create\", controller = \"Wonders\"}","MethodInfo":"System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] Create(WondersAPI.Models.Wonder)","Controller":"Ghaymah.WondersAPI.Controllers.WondersController","AssemblyName":"Ghaymah.WondersAPI","EventId":{"Id":102,"Name":"ControllerActionExecuting"},"SourceContext":"Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker","ActionId":"2142c2bf-8f44-4e73-89a2-642039a2910c","ActionName":"Ghaymah.WondersAPI.Controllers.WondersController.Create (Ghaymah.WondersAPI)","RequestId":"0HNG45N3EQM0Q:00000001","RequestPath":"/api/Wonders","ConnectionId":"0HNG45N3EQM0Q"}} +{"Timestamp":"2025-10-05T19:40:38.5773338+03:00","Level":"Information","MessageTemplate":"Saved {count} entities to in-memory store.","TraceId":"3c27fb2b1e9c25361fd0fa0e04d93e00","SpanId":"73142fde40525b16","Properties":{"count":1,"EventId":{"Id":30100,"Name":"Microsoft.EntityFrameworkCore.Update.ChangesSaved"},"SourceContext":"Microsoft.EntityFrameworkCore.Update","ActionId":"2142c2bf-8f44-4e73-89a2-642039a2910c","ActionName":"Ghaymah.WondersAPI.Controllers.WondersController.Create (Ghaymah.WondersAPI)","RequestId":"0HNG45N3EQM0Q:00000001","RequestPath":"/api/Wonders","ConnectionId":"0HNG45N3EQM0Q"}} +{"Timestamp":"2025-10-05T19:40:38.5811225+03:00","Level":"Information","MessageTemplate":"Created new wonder: {Name}","TraceId":"3c27fb2b1e9c25361fd0fa0e04d93e00","SpanId":"73142fde40525b16","Properties":{"Name":"string","SourceContext":"Ghaymah.WondersAPI.Controllers.WondersController","ActionId":"2142c2bf-8f44-4e73-89a2-642039a2910c","ActionName":"Ghaymah.WondersAPI.Controllers.WondersController.Create (Ghaymah.WondersAPI)","RequestId":"0HNG45N3EQM0Q:00000001","RequestPath":"/api/Wonders","ConnectionId":"0HNG45N3EQM0Q"}} +{"Timestamp":"2025-10-05T19:40:38.5936754+03:00","Level":"Information","MessageTemplate":"Executing {ObjectResultType}, writing value of type '{Type}'.","TraceId":"3c27fb2b1e9c25361fd0fa0e04d93e00","SpanId":"73142fde40525b16","Properties":{"ObjectResultType":"CreatedAtActionResult","Type":"WondersAPI.Models.Wonder","EventId":{"Id":1,"Name":"ObjectResultExecuting"},"SourceContext":"Microsoft.AspNetCore.Mvc.Infrastructure.ObjectResultExecutor","ActionId":"2142c2bf-8f44-4e73-89a2-642039a2910c","ActionName":"Ghaymah.WondersAPI.Controllers.WondersController.Create (Ghaymah.WondersAPI)","RequestId":"0HNG45N3EQM0Q:00000001","RequestPath":"/api/Wonders","ConnectionId":"0HNG45N3EQM0Q"}} +{"Timestamp":"2025-10-05T19:40:38.6257517+03:00","Level":"Information","MessageTemplate":"Executed action {ActionName} in {ElapsedMilliseconds}ms","TraceId":"3c27fb2b1e9c25361fd0fa0e04d93e00","SpanId":"73142fde40525b16","Properties":{"ActionName":"Ghaymah.WondersAPI.Controllers.WondersController.Create (Ghaymah.WondersAPI)","ElapsedMilliseconds":145.8778,"EventId":{"Id":105,"Name":"ActionExecuted"},"SourceContext":"Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker","RequestId":"0HNG45N3EQM0Q:00000001","RequestPath":"/api/Wonders","ConnectionId":"0HNG45N3EQM0Q"}} +{"Timestamp":"2025-10-05T19:40:38.6278114+03:00","Level":"Information","MessageTemplate":"Executed endpoint '{EndpointName}'","TraceId":"3c27fb2b1e9c25361fd0fa0e04d93e00","SpanId":"73142fde40525b16","Properties":{"EndpointName":"Ghaymah.WondersAPI.Controllers.WondersController.Create (Ghaymah.WondersAPI)","EventId":{"Id":1,"Name":"ExecutedEndpoint"},"SourceContext":"Microsoft.AspNetCore.Routing.EndpointMiddleware","RequestId":"0HNG45N3EQM0Q:00000001","RequestPath":"/api/Wonders","ConnectionId":"0HNG45N3EQM0Q"}} +{"Timestamp":"2025-10-05T19:40:38.6313907+03:00","Level":"Information","MessageTemplate":"Request finished {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {StatusCode} {ContentLength} {ContentType} {ElapsedMilliseconds}ms","TraceId":"3c27fb2b1e9c25361fd0fa0e04d93e00","SpanId":"73142fde40525b16","Properties":{"ElapsedMilliseconds":210.2131,"StatusCode":201,"ContentType":"application/json; charset=utf-8","ContentLength":null,"Protocol":"HTTP/2","Method":"POST","Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/api/Wonders","QueryString":"","EventId":{"Id":2},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG45N3EQM0Q:00000001","RequestPath":"/api/Wonders","ConnectionId":"0HNG45N3EQM0Q"}} +{"Timestamp":"2025-10-05T19:50:55.7254068+03:00","Level":"Information","MessageTemplate":"Saved {count} entities to in-memory store.","Properties":{"count":6,"EventId":{"Id":30100,"Name":"Microsoft.EntityFrameworkCore.Update.ChangesSaved"},"SourceContext":"Microsoft.EntityFrameworkCore.Update"}} +{"Timestamp":"2025-10-05T19:50:55.7531725+03:00","Level":"Information","MessageTemplate":"🚀 Wonders API application started successfully at {time}","Properties":{"time":"2025-10-05T19:50:55.7512086+03:00","SourceContext":"Program"}} +{"Timestamp":"2025-10-05T19:50:55.8512403+03:00","Level":"Information","MessageTemplate":"Now listening on: {address}","Properties":{"address":"https://localhost:7247","EventId":{"Id":14,"Name":"ListeningOnAddress"},"SourceContext":"Microsoft.Hosting.Lifetime"}} +{"Timestamp":"2025-10-05T19:50:55.8524598+03:00","Level":"Information","MessageTemplate":"Now listening on: {address}","Properties":{"address":"http://localhost:5004","EventId":{"Id":14,"Name":"ListeningOnAddress"},"SourceContext":"Microsoft.Hosting.Lifetime"}} +{"Timestamp":"2025-10-05T19:50:55.8824534+03:00","Level":"Information","MessageTemplate":"Application started. Press Ctrl+C to shut down.","Properties":{"SourceContext":"Microsoft.Hosting.Lifetime"}} +{"Timestamp":"2025-10-05T19:50:55.8838682+03:00","Level":"Information","MessageTemplate":"Hosting environment: {EnvName}","Properties":{"EnvName":"Development","SourceContext":"Microsoft.Hosting.Lifetime"}} +{"Timestamp":"2025-10-05T19:50:55.8853919+03:00","Level":"Information","MessageTemplate":"Content root path: {ContentRoot}","Properties":{"ContentRoot":"D:\\WebApplication1","SourceContext":"Microsoft.Hosting.Lifetime"}} +{"Timestamp":"2025-10-05T19:50:56.3630120+03:00","Level":"Information","MessageTemplate":"Request starting {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {ContentType} {ContentLength}","TraceId":"de985a92991dbf4a2d13f6ff1ccd516c","SpanId":"9297a7568e08111e","Properties":{"Protocol":"HTTP/2","Method":"GET","ContentType":null,"ContentLength":null,"Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/swagger/index.html","QueryString":"","EventId":{"Id":1},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG45TD92DHJ:00000001","RequestPath":"/swagger/index.html","ConnectionId":"0HNG45TD92DHJ"}} +{"Timestamp":"2025-10-05T19:50:56.4593005+03:00","Level":"Information","MessageTemplate":"Request finished {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {StatusCode} {ContentLength} {ContentType} {ElapsedMilliseconds}ms","TraceId":"de985a92991dbf4a2d13f6ff1ccd516c","SpanId":"9297a7568e08111e","Properties":{"ElapsedMilliseconds":97.0439,"StatusCode":200,"ContentType":"text/html;charset=utf-8","ContentLength":null,"Protocol":"HTTP/2","Method":"GET","Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/swagger/index.html","QueryString":"","EventId":{"Id":2},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG45TD92DHJ:00000001","RequestPath":"/swagger/index.html","ConnectionId":"0HNG45TD92DHJ"}} +{"Timestamp":"2025-10-05T19:50:56.5263219+03:00","Level":"Information","MessageTemplate":"Request starting {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {ContentType} {ContentLength}","TraceId":"64800a976505ccb7cdbd352c4028e692","SpanId":"f6716086ff62e4a2","Properties":{"Protocol":"HTTP/2","Method":"GET","ContentType":null,"ContentLength":null,"Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/_framework/aspnetcore-browser-refresh.js","QueryString":"","EventId":{"Id":1},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG45TD92DHJ:00000003","RequestPath":"/_framework/aspnetcore-browser-refresh.js","ConnectionId":"0HNG45TD92DHJ"}} +{"Timestamp":"2025-10-05T19:50:56.5326333+03:00","Level":"Information","MessageTemplate":"Request finished {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {StatusCode} {ContentLength} {ContentType} {ElapsedMilliseconds}ms","TraceId":"64800a976505ccb7cdbd352c4028e692","SpanId":"f6716086ff62e4a2","Properties":{"ElapsedMilliseconds":6.3228,"StatusCode":200,"ContentType":"application/javascript; charset=utf-8","ContentLength":16515,"Protocol":"HTTP/2","Method":"GET","Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/_framework/aspnetcore-browser-refresh.js","QueryString":"","EventId":{"Id":2},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG45TD92DHJ:00000003","RequestPath":"/_framework/aspnetcore-browser-refresh.js","ConnectionId":"0HNG45TD92DHJ"}} +{"Timestamp":"2025-10-05T19:50:56.6929290+03:00","Level":"Information","MessageTemplate":"Request starting {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {ContentType} {ContentLength}","TraceId":"4febeb2c845c5b1f3f7beecdd67c2759","SpanId":"fcdc5e6e4fa5f0cd","Properties":{"Protocol":"HTTP/2","Method":"GET","ContentType":null,"ContentLength":null,"Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/_vs/browserLink","QueryString":"","EventId":{"Id":1},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG45TD92DHJ:00000005","RequestPath":"/_vs/browserLink","ConnectionId":"0HNG45TD92DHJ"}} +{"Timestamp":"2025-10-05T19:50:56.7265512+03:00","Level":"Information","MessageTemplate":"Request finished {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {StatusCode} {ContentLength} {ContentType} {ElapsedMilliseconds}ms","TraceId":"4febeb2c845c5b1f3f7beecdd67c2759","SpanId":"fcdc5e6e4fa5f0cd","Properties":{"ElapsedMilliseconds":33.6411,"StatusCode":200,"ContentType":"text/javascript; charset=UTF-8","ContentLength":null,"Protocol":"HTTP/2","Method":"GET","Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/_vs/browserLink","QueryString":"","EventId":{"Id":2},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG45TD92DHJ:00000005","RequestPath":"/_vs/browserLink","ConnectionId":"0HNG45TD92DHJ"}} +{"Timestamp":"2025-10-05T19:50:57.1165500+03:00","Level":"Information","MessageTemplate":"Request starting {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {ContentType} {ContentLength}","TraceId":"551e5d06e79152c2ce53ce7de19df0ee","SpanId":"4e10773be917c6d9","Properties":{"Protocol":"HTTP/2","Method":"GET","ContentType":null,"ContentLength":null,"Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/swagger/v1/swagger.json","QueryString":"","EventId":{"Id":1},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG45TD92DHJ:00000007","RequestPath":"/swagger/v1/swagger.json","ConnectionId":"0HNG45TD92DHJ"}} +{"Timestamp":"2025-10-05T19:50:57.1292564+03:00","Level":"Information","MessageTemplate":"Request finished {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {StatusCode} {ContentLength} {ContentType} {ElapsedMilliseconds}ms","TraceId":"551e5d06e79152c2ce53ce7de19df0ee","SpanId":"4e10773be917c6d9","Properties":{"ElapsedMilliseconds":12.6858,"StatusCode":200,"ContentType":"application/json;charset=utf-8","ContentLength":null,"Protocol":"HTTP/2","Method":"GET","Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/swagger/v1/swagger.json","QueryString":"","EventId":{"Id":2},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG45TD92DHJ:00000007","RequestPath":"/swagger/v1/swagger.json","ConnectionId":"0HNG45TD92DHJ"}} +{"Timestamp":"2025-10-05T19:51:06.6320119+03:00","Level":"Information","MessageTemplate":"Request starting {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {ContentType} {ContentLength}","TraceId":"2fb69ebdda814f75ce993cf6346bcdbe","SpanId":"0fe9c1af05fc759b","Properties":{"Protocol":"HTTP/2","Method":"GET","ContentType":null,"ContentLength":null,"Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/api/Wonders/2","QueryString":"","EventId":{"Id":1},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG45TD92DHJ:00000009","RequestPath":"/api/Wonders/2","ConnectionId":"0HNG45TD92DHJ"}} +{"Timestamp":"2025-10-05T19:51:06.6425318+03:00","Level":"Information","MessageTemplate":"Executing endpoint '{EndpointName}'","TraceId":"2fb69ebdda814f75ce993cf6346bcdbe","SpanId":"0fe9c1af05fc759b","Properties":{"EndpointName":"Ghaymah.WondersAPI.Controllers.WondersController.GetById (Ghaymah.WondersAPI)","EventId":{"Name":"ExecutingEndpoint"},"SourceContext":"Microsoft.AspNetCore.Routing.EndpointMiddleware","RequestId":"0HNG45TD92DHJ:00000009","RequestPath":"/api/Wonders/2","ConnectionId":"0HNG45TD92DHJ"}} +{"Timestamp":"2025-10-05T19:51:06.6627862+03:00","Level":"Information","MessageTemplate":"Route matched with {RouteData}. Executing controller action with signature {MethodInfo} on controller {Controller} ({AssemblyName}).","TraceId":"2fb69ebdda814f75ce993cf6346bcdbe","SpanId":"0fe9c1af05fc759b","Properties":{"RouteData":"{action = \"GetById\", controller = \"Wonders\"}","MethodInfo":"System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetById(Int32)","Controller":"Ghaymah.WondersAPI.Controllers.WondersController","AssemblyName":"Ghaymah.WondersAPI","EventId":{"Id":102,"Name":"ControllerActionExecuting"},"SourceContext":"Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker","ActionId":"025dffb0-6990-4224-885f-e2b7b2e738d6","ActionName":"Ghaymah.WondersAPI.Controllers.WondersController.GetById (Ghaymah.WondersAPI)","RequestId":"0HNG45TD92DHJ:00000009","RequestPath":"/api/Wonders/2","ConnectionId":"0HNG45TD92DHJ"}} +{"Timestamp":"2025-10-05T19:51:06.7411656+03:00","Level":"Information","MessageTemplate":"Executing {ObjectResultType}, writing value of type '{Type}'.","TraceId":"2fb69ebdda814f75ce993cf6346bcdbe","SpanId":"0fe9c1af05fc759b","Properties":{"ObjectResultType":"OkObjectResult","Type":"WondersAPI.Models.Wonder","EventId":{"Id":1,"Name":"ObjectResultExecuting"},"SourceContext":"Microsoft.AspNetCore.Mvc.Infrastructure.ObjectResultExecutor","ActionId":"025dffb0-6990-4224-885f-e2b7b2e738d6","ActionName":"Ghaymah.WondersAPI.Controllers.WondersController.GetById (Ghaymah.WondersAPI)","RequestId":"0HNG45TD92DHJ:00000009","RequestPath":"/api/Wonders/2","ConnectionId":"0HNG45TD92DHJ"}} +{"Timestamp":"2025-10-05T19:51:06.7495287+03:00","Level":"Information","MessageTemplate":"Executed action {ActionName} in {ElapsedMilliseconds}ms","TraceId":"2fb69ebdda814f75ce993cf6346bcdbe","SpanId":"0fe9c1af05fc759b","Properties":{"ActionName":"Ghaymah.WondersAPI.Controllers.WondersController.GetById (Ghaymah.WondersAPI)","ElapsedMilliseconds":80.9158,"EventId":{"Id":105,"Name":"ActionExecuted"},"SourceContext":"Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker","RequestId":"0HNG45TD92DHJ:00000009","RequestPath":"/api/Wonders/2","ConnectionId":"0HNG45TD92DHJ"}} +{"Timestamp":"2025-10-05T19:51:06.7539471+03:00","Level":"Information","MessageTemplate":"Executed endpoint '{EndpointName}'","TraceId":"2fb69ebdda814f75ce993cf6346bcdbe","SpanId":"0fe9c1af05fc759b","Properties":{"EndpointName":"Ghaymah.WondersAPI.Controllers.WondersController.GetById (Ghaymah.WondersAPI)","EventId":{"Id":1,"Name":"ExecutedEndpoint"},"SourceContext":"Microsoft.AspNetCore.Routing.EndpointMiddleware","RequestId":"0HNG45TD92DHJ:00000009","RequestPath":"/api/Wonders/2","ConnectionId":"0HNG45TD92DHJ"}} +{"Timestamp":"2025-10-05T19:51:06.7571622+03:00","Level":"Information","MessageTemplate":"Request finished {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {StatusCode} {ContentLength} {ContentType} {ElapsedMilliseconds}ms","TraceId":"2fb69ebdda814f75ce993cf6346bcdbe","SpanId":"0fe9c1af05fc759b","Properties":{"ElapsedMilliseconds":125.1382,"StatusCode":200,"ContentType":"application/json; charset=utf-8","ContentLength":null,"Protocol":"HTTP/2","Method":"GET","Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/api/Wonders/2","QueryString":"","EventId":{"Id":2},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG45TD92DHJ:00000009","RequestPath":"/api/Wonders/2","ConnectionId":"0HNG45TD92DHJ"}} +{"Timestamp":"2025-10-05T19:51:16.3963187+03:00","Level":"Information","MessageTemplate":"Request starting {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {ContentType} {ContentLength}","TraceId":"7e9d2a3af379d2e624d2f546c534f91a","SpanId":"4b97b047295cff7c","Properties":{"Protocol":"HTTP/2","Method":"GET","ContentType":null,"ContentLength":null,"Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/api/Wonders","QueryString":"","EventId":{"Id":1},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG45TD92DHJ:0000000B","RequestPath":"/api/Wonders","ConnectionId":"0HNG45TD92DHJ"}} +{"Timestamp":"2025-10-05T19:51:16.4189329+03:00","Level":"Information","MessageTemplate":"Executing endpoint '{EndpointName}'","TraceId":"7e9d2a3af379d2e624d2f546c534f91a","SpanId":"4b97b047295cff7c","Properties":{"EndpointName":"Ghaymah.WondersAPI.Controllers.WondersController.GetAll (Ghaymah.WondersAPI)","EventId":{"Name":"ExecutingEndpoint"},"SourceContext":"Microsoft.AspNetCore.Routing.EndpointMiddleware","RequestId":"0HNG45TD92DHJ:0000000B","RequestPath":"/api/Wonders","ConnectionId":"0HNG45TD92DHJ"}} +{"Timestamp":"2025-10-05T19:51:16.4276808+03:00","Level":"Information","MessageTemplate":"Route matched with {RouteData}. Executing controller action with signature {MethodInfo} on controller {Controller} ({AssemblyName}).","TraceId":"7e9d2a3af379d2e624d2f546c534f91a","SpanId":"4b97b047295cff7c","Properties":{"RouteData":"{action = \"GetAll\", controller = \"Wonders\"}","MethodInfo":"System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetAll()","Controller":"Ghaymah.WondersAPI.Controllers.WondersController","AssemblyName":"Ghaymah.WondersAPI","EventId":{"Id":102,"Name":"ControllerActionExecuting"},"SourceContext":"Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker","ActionId":"d14fea2a-5264-41aa-8bd5-e7a00bf7e7b6","ActionName":"Ghaymah.WondersAPI.Controllers.WondersController.GetAll (Ghaymah.WondersAPI)","RequestId":"0HNG45TD92DHJ:0000000B","RequestPath":"/api/Wonders","ConnectionId":"0HNG45TD92DHJ"}} +{"Timestamp":"2025-10-05T19:51:16.4491385+03:00","Level":"Information","MessageTemplate":"Fetched {Count} wonders from database","TraceId":"7e9d2a3af379d2e624d2f546c534f91a","SpanId":"4b97b047295cff7c","Properties":{"Count":6,"SourceContext":"Ghaymah.WondersAPI.Controllers.WondersController","ActionId":"d14fea2a-5264-41aa-8bd5-e7a00bf7e7b6","ActionName":"Ghaymah.WondersAPI.Controllers.WondersController.GetAll (Ghaymah.WondersAPI)","RequestId":"0HNG45TD92DHJ:0000000B","RequestPath":"/api/Wonders","ConnectionId":"0HNG45TD92DHJ"}} +{"Timestamp":"2025-10-05T19:51:16.4545480+03:00","Level":"Information","MessageTemplate":"Executing {ObjectResultType}, writing value of type '{Type}'.","TraceId":"7e9d2a3af379d2e624d2f546c534f91a","SpanId":"4b97b047295cff7c","Properties":{"ObjectResultType":"OkObjectResult","Type":"System.Collections.Generic.List`1[[WondersAPI.Models.Wonder, Ghaymah.WondersAPI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]","EventId":{"Id":1,"Name":"ObjectResultExecuting"},"SourceContext":"Microsoft.AspNetCore.Mvc.Infrastructure.ObjectResultExecutor","ActionId":"d14fea2a-5264-41aa-8bd5-e7a00bf7e7b6","ActionName":"Ghaymah.WondersAPI.Controllers.WondersController.GetAll (Ghaymah.WondersAPI)","RequestId":"0HNG45TD92DHJ:0000000B","RequestPath":"/api/Wonders","ConnectionId":"0HNG45TD92DHJ"}} +{"Timestamp":"2025-10-05T19:51:16.4579135+03:00","Level":"Information","MessageTemplate":"Executed action {ActionName} in {ElapsedMilliseconds}ms","TraceId":"7e9d2a3af379d2e624d2f546c534f91a","SpanId":"4b97b047295cff7c","Properties":{"ActionName":"Ghaymah.WondersAPI.Controllers.WondersController.GetAll (Ghaymah.WondersAPI)","ElapsedMilliseconds":25.1811,"EventId":{"Id":105,"Name":"ActionExecuted"},"SourceContext":"Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker","RequestId":"0HNG45TD92DHJ:0000000B","RequestPath":"/api/Wonders","ConnectionId":"0HNG45TD92DHJ"}} +{"Timestamp":"2025-10-05T19:51:16.4596651+03:00","Level":"Information","MessageTemplate":"Executed endpoint '{EndpointName}'","TraceId":"7e9d2a3af379d2e624d2f546c534f91a","SpanId":"4b97b047295cff7c","Properties":{"EndpointName":"Ghaymah.WondersAPI.Controllers.WondersController.GetAll (Ghaymah.WondersAPI)","EventId":{"Id":1,"Name":"ExecutedEndpoint"},"SourceContext":"Microsoft.AspNetCore.Routing.EndpointMiddleware","RequestId":"0HNG45TD92DHJ:0000000B","RequestPath":"/api/Wonders","ConnectionId":"0HNG45TD92DHJ"}} +{"Timestamp":"2025-10-05T19:51:16.4611486+03:00","Level":"Information","MessageTemplate":"Request finished {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {StatusCode} {ContentLength} {ContentType} {ElapsedMilliseconds}ms","TraceId":"7e9d2a3af379d2e624d2f546c534f91a","SpanId":"4b97b047295cff7c","Properties":{"ElapsedMilliseconds":64.912,"StatusCode":200,"ContentType":"application/json; charset=utf-8","ContentLength":null,"Protocol":"HTTP/2","Method":"GET","Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/api/Wonders","QueryString":"","EventId":{"Id":2},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG45TD92DHJ:0000000B","RequestPath":"/api/Wonders","ConnectionId":"0HNG45TD92DHJ"}} +{"Timestamp":"2025-10-05T20:57:56.8768179+03:00","Level":"Information","MessageTemplate":"Saved {count} entities to in-memory store.","Properties":{"count":6,"EventId":{"Id":30100,"Name":"Microsoft.EntityFrameworkCore.Update.ChangesSaved"},"SourceContext":"Microsoft.EntityFrameworkCore.Update"}} +{"Timestamp":"2025-10-05T20:57:56.9059217+03:00","Level":"Information","MessageTemplate":"🚀 Wonders API application started successfully at {time}","Properties":{"time":"2025-10-05T20:57:56.9042125+03:00","SourceContext":"Program"}} +{"Timestamp":"2025-10-05T20:57:57.0107787+03:00","Level":"Information","MessageTemplate":"Now listening on: {address}","Properties":{"address":"https://localhost:7247","EventId":{"Id":14,"Name":"ListeningOnAddress"},"SourceContext":"Microsoft.Hosting.Lifetime"}} +{"Timestamp":"2025-10-05T20:57:57.0121180+03:00","Level":"Information","MessageTemplate":"Now listening on: {address}","Properties":{"address":"http://localhost:5004","EventId":{"Id":14,"Name":"ListeningOnAddress"},"SourceContext":"Microsoft.Hosting.Lifetime"}} +{"Timestamp":"2025-10-05T20:57:57.0421029+03:00","Level":"Information","MessageTemplate":"Application started. Press Ctrl+C to shut down.","Properties":{"SourceContext":"Microsoft.Hosting.Lifetime"}} +{"Timestamp":"2025-10-05T20:57:57.0432514+03:00","Level":"Information","MessageTemplate":"Hosting environment: {EnvName}","Properties":{"EnvName":"Development","SourceContext":"Microsoft.Hosting.Lifetime"}} +{"Timestamp":"2025-10-05T20:57:57.0438703+03:00","Level":"Information","MessageTemplate":"Content root path: {ContentRoot}","Properties":{"ContentRoot":"D:\\WebApplication1","SourceContext":"Microsoft.Hosting.Lifetime"}} +{"Timestamp":"2025-10-05T20:57:58.8927082+03:00","Level":"Information","MessageTemplate":"Request starting {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {ContentType} {ContentLength}","TraceId":"ef0eb24d7ecbaf022f06a7dc03734f53","SpanId":"fffa660c8d93465b","Properties":{"Protocol":"HTTP/2","Method":"GET","ContentType":null,"ContentLength":null,"Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/_framework/aspnetcore-browser-refresh.js","QueryString":"","EventId":{"Id":1},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG472RKMSK8:00000003","RequestPath":"/_framework/aspnetcore-browser-refresh.js","ConnectionId":"0HNG472RKMSK8"}} +{"Timestamp":"2025-10-05T20:57:58.8927137+03:00","Level":"Information","MessageTemplate":"Request starting {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {ContentType} {ContentLength}","TraceId":"2b4770c82fa3ba366b3a3b2d93cd37d5","SpanId":"8941253a39bcceed","Properties":{"Protocol":"HTTP/2","Method":"GET","ContentType":null,"ContentLength":null,"Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/swagger/index.html","QueryString":"","EventId":{"Id":1},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG472RKMSK8:00000001","RequestPath":"/swagger/index.html","ConnectionId":"0HNG472RKMSK8"}} +{"Timestamp":"2025-10-05T20:57:58.9136786+03:00","Level":"Information","MessageTemplate":"Request finished {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {StatusCode} {ContentLength} {ContentType} {ElapsedMilliseconds}ms","TraceId":"ef0eb24d7ecbaf022f06a7dc03734f53","SpanId":"fffa660c8d93465b","Properties":{"ElapsedMilliseconds":22.7483,"StatusCode":200,"ContentType":"application/javascript; charset=utf-8","ContentLength":16520,"Protocol":"HTTP/2","Method":"GET","Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/_framework/aspnetcore-browser-refresh.js","QueryString":"","EventId":{"Id":2},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG472RKMSK8:00000003","RequestPath":"/_framework/aspnetcore-browser-refresh.js","ConnectionId":"0HNG472RKMSK8"}} +{"Timestamp":"2025-10-05T20:57:59.0745837+03:00","Level":"Information","MessageTemplate":"Request finished {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {StatusCode} {ContentLength} {ContentType} {ElapsedMilliseconds}ms","TraceId":"2b4770c82fa3ba366b3a3b2d93cd37d5","SpanId":"8941253a39bcceed","Properties":{"ElapsedMilliseconds":183.9379,"StatusCode":200,"ContentType":"text/html;charset=utf-8","ContentLength":null,"Protocol":"HTTP/2","Method":"GET","Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/swagger/index.html","QueryString":"","EventId":{"Id":2},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG472RKMSK8:00000001","RequestPath":"/swagger/index.html","ConnectionId":"0HNG472RKMSK8"}} +{"Timestamp":"2025-10-05T20:57:59.6538204+03:00","Level":"Information","MessageTemplate":"Request starting {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {ContentType} {ContentLength}","TraceId":"2a0c74eb6a2640a92773a2433074ae29","SpanId":"639a3ca9f38ebc1e","Properties":{"Protocol":"HTTP/2","Method":"GET","ContentType":null,"ContentLength":null,"Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/swagger/v1/swagger.json","QueryString":"","EventId":{"Id":1},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG472RKMSK9:00000001","RequestPath":"/swagger/v1/swagger.json","ConnectionId":"0HNG472RKMSK9"}} +{"Timestamp":"2025-10-05T20:57:59.6694415+03:00","Level":"Information","MessageTemplate":"Request finished {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {StatusCode} {ContentLength} {ContentType} {ElapsedMilliseconds}ms","TraceId":"2a0c74eb6a2640a92773a2433074ae29","SpanId":"639a3ca9f38ebc1e","Properties":{"ElapsedMilliseconds":15.5896,"StatusCode":200,"ContentType":"application/json;charset=utf-8","ContentLength":null,"Protocol":"HTTP/2","Method":"GET","Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/swagger/v1/swagger.json","QueryString":"","EventId":{"Id":2},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG472RKMSK9:00000001","RequestPath":"/swagger/v1/swagger.json","ConnectionId":"0HNG472RKMSK9"}} +{"Timestamp":"2025-10-05T20:58:00.1467834+03:00","Level":"Information","MessageTemplate":"Request starting {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {ContentType} {ContentLength}","TraceId":"27e763f7db10abfa56f29102f8d549f6","SpanId":"a79795d31197bbee","Properties":{"Protocol":"HTTP/2","Method":"GET","ContentType":null,"ContentLength":null,"Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/_framework/aspnetcore-browser-refresh.js","QueryString":"","EventId":{"Id":1},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG472RKMSK9:00000003","RequestPath":"/_framework/aspnetcore-browser-refresh.js","ConnectionId":"0HNG472RKMSK9"}} +{"Timestamp":"2025-10-05T20:58:00.1532243+03:00","Level":"Information","MessageTemplate":"Request finished {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {StatusCode} {ContentLength} {ContentType} {ElapsedMilliseconds}ms","TraceId":"27e763f7db10abfa56f29102f8d549f6","SpanId":"a79795d31197bbee","Properties":{"ElapsedMilliseconds":6.4271,"StatusCode":200,"ContentType":"application/javascript; charset=utf-8","ContentLength":16520,"Protocol":"HTTP/2","Method":"GET","Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/_framework/aspnetcore-browser-refresh.js","QueryString":"","EventId":{"Id":2},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG472RKMSK9:00000003","RequestPath":"/_framework/aspnetcore-browser-refresh.js","ConnectionId":"0HNG472RKMSK9"}} +{"Timestamp":"2025-10-05T20:58:00.1934549+03:00","Level":"Information","MessageTemplate":"Request starting {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {ContentType} {ContentLength}","TraceId":"8c8140c6f4bd0f92574e998fc93e5302","SpanId":"1289f948140ddaa8","Properties":{"Protocol":"HTTP/2","Method":"GET","ContentType":null,"ContentLength":null,"Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/_vs/browserLink","QueryString":"","EventId":{"Id":1},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG472RKMSK9:00000005","RequestPath":"/_vs/browserLink","ConnectionId":"0HNG472RKMSK9"}} +{"Timestamp":"2025-10-05T20:58:00.2550806+03:00","Level":"Information","MessageTemplate":"Request finished {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {StatusCode} {ContentLength} {ContentType} {ElapsedMilliseconds}ms","TraceId":"8c8140c6f4bd0f92574e998fc93e5302","SpanId":"1289f948140ddaa8","Properties":{"ElapsedMilliseconds":61.5956,"StatusCode":200,"ContentType":"text/javascript; charset=UTF-8","ContentLength":null,"Protocol":"HTTP/2","Method":"GET","Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/_vs/browserLink","QueryString":"","EventId":{"Id":2},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG472RKMSK9:00000005","RequestPath":"/_vs/browserLink","ConnectionId":"0HNG472RKMSK9"}} +{"Timestamp":"2025-10-05T20:58:00.4354110+03:00","Level":"Information","MessageTemplate":"Request starting {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {ContentType} {ContentLength}","TraceId":"fc2b51692ee4b42e11add08e4b1b5cc0","SpanId":"faa89d5a4d26aa9a","Properties":{"Protocol":"HTTP/2","Method":"GET","ContentType":null,"ContentLength":null,"Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/swagger/v1/swagger.json","QueryString":"","EventId":{"Id":1},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG472RKMSK9:00000007","RequestPath":"/swagger/v1/swagger.json","ConnectionId":"0HNG472RKMSK9"}} +{"Timestamp":"2025-10-05T20:58:00.4454492+03:00","Level":"Information","MessageTemplate":"Request finished {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {StatusCode} {ContentLength} {ContentType} {ElapsedMilliseconds}ms","TraceId":"fc2b51692ee4b42e11add08e4b1b5cc0","SpanId":"faa89d5a4d26aa9a","Properties":{"ElapsedMilliseconds":10.031,"StatusCode":200,"ContentType":"application/json;charset=utf-8","ContentLength":null,"Protocol":"HTTP/2","Method":"GET","Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/swagger/v1/swagger.json","QueryString":"","EventId":{"Id":2},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG472RKMSK9:00000007","RequestPath":"/swagger/v1/swagger.json","ConnectionId":"0HNG472RKMSK9"}} +{"Timestamp":"2025-10-05T20:58:15.7497395+03:00","Level":"Information","MessageTemplate":"Request starting {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {ContentType} {ContentLength}","TraceId":"b0cc022f4f78f6ce562e021d03a0bf87","SpanId":"e0836188dcb6f657","Properties":{"Protocol":"HTTP/2","Method":"POST","ContentType":"application/json","ContentLength":144,"Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/api/Wonders","QueryString":"","EventId":{"Id":1},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG472RKMSKA:00000001","RequestPath":"/api/Wonders","ConnectionId":"0HNG472RKMSKA"}} +{"Timestamp":"2025-10-05T20:58:15.7626160+03:00","Level":"Information","MessageTemplate":"Executing endpoint '{EndpointName}'","TraceId":"b0cc022f4f78f6ce562e021d03a0bf87","SpanId":"e0836188dcb6f657","Properties":{"EndpointName":"Ghaymah.WondersAPI.Controllers.WondersController.Create (Ghaymah.WondersAPI)","EventId":{"Name":"ExecutingEndpoint"},"SourceContext":"Microsoft.AspNetCore.Routing.EndpointMiddleware","RequestId":"0HNG472RKMSKA:00000001","RequestPath":"/api/Wonders","ConnectionId":"0HNG472RKMSKA"}} +{"Timestamp":"2025-10-05T20:58:15.8060136+03:00","Level":"Information","MessageTemplate":"Route matched with {RouteData}. Executing controller action with signature {MethodInfo} on controller {Controller} ({AssemblyName}).","TraceId":"b0cc022f4f78f6ce562e021d03a0bf87","SpanId":"e0836188dcb6f657","Properties":{"RouteData":"{action = \"Create\", controller = \"Wonders\"}","MethodInfo":"System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] Create(WondersAPI.Models.Wonder)","Controller":"Ghaymah.WondersAPI.Controllers.WondersController","AssemblyName":"Ghaymah.WondersAPI","EventId":{"Id":102,"Name":"ControllerActionExecuting"},"SourceContext":"Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker","ActionId":"46b80cec-c179-42ac-81a8-5b9949a8ad32","ActionName":"Ghaymah.WondersAPI.Controllers.WondersController.Create (Ghaymah.WondersAPI)","RequestId":"0HNG472RKMSKA:00000001","RequestPath":"/api/Wonders","ConnectionId":"0HNG472RKMSKA"}} +{"Timestamp":"2025-10-05T20:58:15.9178715+03:00","Level":"Information","MessageTemplate":"Saved {count} entities to in-memory store.","TraceId":"b0cc022f4f78f6ce562e021d03a0bf87","SpanId":"e0836188dcb6f657","Properties":{"count":1,"EventId":{"Id":30100,"Name":"Microsoft.EntityFrameworkCore.Update.ChangesSaved"},"SourceContext":"Microsoft.EntityFrameworkCore.Update","ActionId":"46b80cec-c179-42ac-81a8-5b9949a8ad32","ActionName":"Ghaymah.WondersAPI.Controllers.WondersController.Create (Ghaymah.WondersAPI)","RequestId":"0HNG472RKMSKA:00000001","RequestPath":"/api/Wonders","ConnectionId":"0HNG472RKMSKA"}} +{"Timestamp":"2025-10-05T20:58:15.9251025+03:00","Level":"Information","MessageTemplate":"Created new wonder: {Name}","TraceId":"b0cc022f4f78f6ce562e021d03a0bf87","SpanId":"e0836188dcb6f657","Properties":{"Name":"string","SourceContext":"Ghaymah.WondersAPI.Controllers.WondersController","ActionId":"46b80cec-c179-42ac-81a8-5b9949a8ad32","ActionName":"Ghaymah.WondersAPI.Controllers.WondersController.Create (Ghaymah.WondersAPI)","RequestId":"0HNG472RKMSKA:00000001","RequestPath":"/api/Wonders","ConnectionId":"0HNG472RKMSKA"}} +{"Timestamp":"2025-10-05T20:58:15.9359447+03:00","Level":"Information","MessageTemplate":"Executing {ObjectResultType}, writing value of type '{Type}'.","TraceId":"b0cc022f4f78f6ce562e021d03a0bf87","SpanId":"e0836188dcb6f657","Properties":{"ObjectResultType":"CreatedAtActionResult","Type":"WondersAPI.Models.Wonder","EventId":{"Id":1,"Name":"ObjectResultExecuting"},"SourceContext":"Microsoft.AspNetCore.Mvc.Infrastructure.ObjectResultExecutor","ActionId":"46b80cec-c179-42ac-81a8-5b9949a8ad32","ActionName":"Ghaymah.WondersAPI.Controllers.WondersController.Create (Ghaymah.WondersAPI)","RequestId":"0HNG472RKMSKA:00000001","RequestPath":"/api/Wonders","ConnectionId":"0HNG472RKMSKA"}} +{"Timestamp":"2025-10-05T20:58:15.9686961+03:00","Level":"Information","MessageTemplate":"Executed action {ActionName} in {ElapsedMilliseconds}ms","TraceId":"b0cc022f4f78f6ce562e021d03a0bf87","SpanId":"e0836188dcb6f657","Properties":{"ActionName":"Ghaymah.WondersAPI.Controllers.WondersController.Create (Ghaymah.WondersAPI)","ElapsedMilliseconds":149.5859,"EventId":{"Id":105,"Name":"ActionExecuted"},"SourceContext":"Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker","RequestId":"0HNG472RKMSKA:00000001","RequestPath":"/api/Wonders","ConnectionId":"0HNG472RKMSKA"}} +{"Timestamp":"2025-10-05T20:58:15.9721406+03:00","Level":"Information","MessageTemplate":"Executed endpoint '{EndpointName}'","TraceId":"b0cc022f4f78f6ce562e021d03a0bf87","SpanId":"e0836188dcb6f657","Properties":{"EndpointName":"Ghaymah.WondersAPI.Controllers.WondersController.Create (Ghaymah.WondersAPI)","EventId":{"Id":1,"Name":"ExecutedEndpoint"},"SourceContext":"Microsoft.AspNetCore.Routing.EndpointMiddleware","RequestId":"0HNG472RKMSKA:00000001","RequestPath":"/api/Wonders","ConnectionId":"0HNG472RKMSKA"}} +{"Timestamp":"2025-10-05T20:58:15.9767099+03:00","Level":"Information","MessageTemplate":"Request finished {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {StatusCode} {ContentLength} {ContentType} {ElapsedMilliseconds}ms","TraceId":"b0cc022f4f78f6ce562e021d03a0bf87","SpanId":"e0836188dcb6f657","Properties":{"ElapsedMilliseconds":226.953,"StatusCode":201,"ContentType":"application/json; charset=utf-8","ContentLength":null,"Protocol":"HTTP/2","Method":"POST","Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/api/Wonders","QueryString":"","EventId":{"Id":2},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG472RKMSKA:00000001","RequestPath":"/api/Wonders","ConnectionId":"0HNG472RKMSKA"}} +{"Timestamp":"2025-10-05T20:58:23.0598520+03:00","Level":"Information","MessageTemplate":"Request starting {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {ContentType} {ContentLength}","TraceId":"ec8eacb4e23eaaef5789b3ec092fec17","SpanId":"8022e7df11e746b6","Properties":{"Protocol":"HTTP/2","Method":"GET","ContentType":null,"ContentLength":null,"Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/api/Wonders","QueryString":"","EventId":{"Id":1},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG472RKMSKA:00000003","RequestPath":"/api/Wonders","ConnectionId":"0HNG472RKMSKA"}} +{"Timestamp":"2025-10-05T20:58:23.0660602+03:00","Level":"Information","MessageTemplate":"Executing endpoint '{EndpointName}'","TraceId":"ec8eacb4e23eaaef5789b3ec092fec17","SpanId":"8022e7df11e746b6","Properties":{"EndpointName":"Ghaymah.WondersAPI.Controllers.WondersController.GetAll (Ghaymah.WondersAPI)","EventId":{"Name":"ExecutingEndpoint"},"SourceContext":"Microsoft.AspNetCore.Routing.EndpointMiddleware","RequestId":"0HNG472RKMSKA:00000003","RequestPath":"/api/Wonders","ConnectionId":"0HNG472RKMSKA"}} +{"Timestamp":"2025-10-05T20:58:23.0799717+03:00","Level":"Information","MessageTemplate":"Route matched with {RouteData}. Executing controller action with signature {MethodInfo} on controller {Controller} ({AssemblyName}).","TraceId":"ec8eacb4e23eaaef5789b3ec092fec17","SpanId":"8022e7df11e746b6","Properties":{"RouteData":"{action = \"GetAll\", controller = \"Wonders\"}","MethodInfo":"System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetAll()","Controller":"Ghaymah.WondersAPI.Controllers.WondersController","AssemblyName":"Ghaymah.WondersAPI","EventId":{"Id":102,"Name":"ControllerActionExecuting"},"SourceContext":"Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker","ActionId":"237a4b08-a318-462a-b195-9a62d87c6a8e","ActionName":"Ghaymah.WondersAPI.Controllers.WondersController.GetAll (Ghaymah.WondersAPI)","RequestId":"0HNG472RKMSKA:00000003","RequestPath":"/api/Wonders","ConnectionId":"0HNG472RKMSKA"}} +{"Timestamp":"2025-10-05T20:58:23.1722557+03:00","Level":"Information","MessageTemplate":"Fetched {Count} wonders from database","TraceId":"ec8eacb4e23eaaef5789b3ec092fec17","SpanId":"8022e7df11e746b6","Properties":{"Count":7,"SourceContext":"Ghaymah.WondersAPI.Controllers.WondersController","ActionId":"237a4b08-a318-462a-b195-9a62d87c6a8e","ActionName":"Ghaymah.WondersAPI.Controllers.WondersController.GetAll (Ghaymah.WondersAPI)","RequestId":"0HNG472RKMSKA:00000003","RequestPath":"/api/Wonders","ConnectionId":"0HNG472RKMSKA"}} +{"Timestamp":"2025-10-05T20:58:23.1771367+03:00","Level":"Information","MessageTemplate":"Executing {ObjectResultType}, writing value of type '{Type}'.","TraceId":"ec8eacb4e23eaaef5789b3ec092fec17","SpanId":"8022e7df11e746b6","Properties":{"ObjectResultType":"OkObjectResult","Type":"System.Collections.Generic.List`1[[WondersAPI.Models.Wonder, Ghaymah.WondersAPI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]","EventId":{"Id":1,"Name":"ObjectResultExecuting"},"SourceContext":"Microsoft.AspNetCore.Mvc.Infrastructure.ObjectResultExecutor","ActionId":"237a4b08-a318-462a-b195-9a62d87c6a8e","ActionName":"Ghaymah.WondersAPI.Controllers.WondersController.GetAll (Ghaymah.WondersAPI)","RequestId":"0HNG472RKMSKA:00000003","RequestPath":"/api/Wonders","ConnectionId":"0HNG472RKMSKA"}} +{"Timestamp":"2025-10-05T20:58:23.1837986+03:00","Level":"Information","MessageTemplate":"Executed action {ActionName} in {ElapsedMilliseconds}ms","TraceId":"ec8eacb4e23eaaef5789b3ec092fec17","SpanId":"8022e7df11e746b6","Properties":{"ActionName":"Ghaymah.WondersAPI.Controllers.WondersController.GetAll (Ghaymah.WondersAPI)","ElapsedMilliseconds":98.0374,"EventId":{"Id":105,"Name":"ActionExecuted"},"SourceContext":"Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker","RequestId":"0HNG472RKMSKA:00000003","RequestPath":"/api/Wonders","ConnectionId":"0HNG472RKMSKA"}} +{"Timestamp":"2025-10-05T20:58:23.1870072+03:00","Level":"Information","MessageTemplate":"Executed endpoint '{EndpointName}'","TraceId":"ec8eacb4e23eaaef5789b3ec092fec17","SpanId":"8022e7df11e746b6","Properties":{"EndpointName":"Ghaymah.WondersAPI.Controllers.WondersController.GetAll (Ghaymah.WondersAPI)","EventId":{"Id":1,"Name":"ExecutedEndpoint"},"SourceContext":"Microsoft.AspNetCore.Routing.EndpointMiddleware","RequestId":"0HNG472RKMSKA:00000003","RequestPath":"/api/Wonders","ConnectionId":"0HNG472RKMSKA"}} +{"Timestamp":"2025-10-05T20:58:23.1897868+03:00","Level":"Information","MessageTemplate":"Request finished {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {StatusCode} {ContentLength} {ContentType} {ElapsedMilliseconds}ms","TraceId":"ec8eacb4e23eaaef5789b3ec092fec17","SpanId":"8022e7df11e746b6","Properties":{"ElapsedMilliseconds":129.9384,"StatusCode":200,"ContentType":"application/json; charset=utf-8","ContentLength":null,"Protocol":"HTTP/2","Method":"GET","Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/api/Wonders","QueryString":"","EventId":{"Id":2},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG472RKMSKA:00000003","RequestPath":"/api/Wonders","ConnectionId":"0HNG472RKMSKA"}} +{"Timestamp":"2025-10-05T20:59:40.7956704+03:00","Level":"Information","MessageTemplate":"Saved {count} entities to in-memory store.","Properties":{"count":6,"EventId":{"Id":30100,"Name":"Microsoft.EntityFrameworkCore.Update.ChangesSaved"},"SourceContext":"Microsoft.EntityFrameworkCore.Update"}} +{"Timestamp":"2025-10-05T20:59:40.8476347+03:00","Level":"Information","MessageTemplate":"🚀 Wonders API application started successfully at {time}","Properties":{"time":"2025-10-05T20:59:40.8437441+03:00","SourceContext":"Program"}} +{"Timestamp":"2025-10-05T20:59:41.0744490+03:00","Level":"Information","MessageTemplate":"Now listening on: {address}","Properties":{"address":"https://localhost:7247","EventId":{"Id":14,"Name":"ListeningOnAddress"},"SourceContext":"Microsoft.Hosting.Lifetime"}} +{"Timestamp":"2025-10-05T20:59:41.0768196+03:00","Level":"Information","MessageTemplate":"Now listening on: {address}","Properties":{"address":"http://localhost:5004","EventId":{"Id":14,"Name":"ListeningOnAddress"},"SourceContext":"Microsoft.Hosting.Lifetime"}} +{"Timestamp":"2025-10-05T20:59:41.1361984+03:00","Level":"Information","MessageTemplate":"Application started. Press Ctrl+C to shut down.","Properties":{"SourceContext":"Microsoft.Hosting.Lifetime"}} +{"Timestamp":"2025-10-05T20:59:41.1379225+03:00","Level":"Information","MessageTemplate":"Hosting environment: {EnvName}","Properties":{"EnvName":"Development","SourceContext":"Microsoft.Hosting.Lifetime"}} +{"Timestamp":"2025-10-05T20:59:41.1391378+03:00","Level":"Information","MessageTemplate":"Content root path: {ContentRoot}","Properties":{"ContentRoot":"D:\\WebApplication1","SourceContext":"Microsoft.Hosting.Lifetime"}} +{"Timestamp":"2025-10-05T21:00:27.9545814+03:00","Level":"Information","MessageTemplate":"Request starting {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {ContentType} {ContentLength}","TraceId":"4ec8ffa8cce1959bc0a202fd897c24dd","SpanId":"99dacb25b930bc8c","Properties":{"Protocol":"HTTP/2","Method":"GET","ContentType":null,"ContentLength":null,"Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/swagger/index.html","QueryString":"","EventId":{"Id":1},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG473QJG7AA:00000001","RequestPath":"/swagger/index.html","ConnectionId":"0HNG473QJG7AA"}} +{"Timestamp":"2025-10-05T21:00:28.1107950+03:00","Level":"Information","MessageTemplate":"Request finished {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {StatusCode} {ContentLength} {ContentType} {ElapsedMilliseconds}ms","TraceId":"4ec8ffa8cce1959bc0a202fd897c24dd","SpanId":"99dacb25b930bc8c","Properties":{"ElapsedMilliseconds":157.4442,"StatusCode":200,"ContentType":"text/html;charset=utf-8","ContentLength":null,"Protocol":"HTTP/2","Method":"GET","Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/swagger/index.html","QueryString":"","EventId":{"Id":2},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG473QJG7AA:00000001","RequestPath":"/swagger/index.html","ConnectionId":"0HNG473QJG7AA"}} +{"Timestamp":"2025-10-05T21:00:28.1295786+03:00","Level":"Information","MessageTemplate":"Request starting {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {ContentType} {ContentLength}","TraceId":"e091e102487e1985cf1e1c6387cf310d","SpanId":"e55551716a0c4914","Properties":{"Protocol":"HTTP/2","Method":"GET","ContentType":null,"ContentLength":null,"Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/_framework/aspnetcore-browser-refresh.js","QueryString":"","EventId":{"Id":1},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG473QJG7AA:00000003","RequestPath":"/_framework/aspnetcore-browser-refresh.js","ConnectionId":"0HNG473QJG7AA"}} +{"Timestamp":"2025-10-05T21:00:28.1373056+03:00","Level":"Information","MessageTemplate":"Request finished {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {StatusCode} {ContentLength} {ContentType} {ElapsedMilliseconds}ms","TraceId":"e091e102487e1985cf1e1c6387cf310d","SpanId":"e55551716a0c4914","Properties":{"ElapsedMilliseconds":7.6582,"StatusCode":200,"ContentType":"application/javascript; charset=utf-8","ContentLength":16520,"Protocol":"HTTP/2","Method":"GET","Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/_framework/aspnetcore-browser-refresh.js","QueryString":"","EventId":{"Id":2},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG473QJG7AA:00000003","RequestPath":"/_framework/aspnetcore-browser-refresh.js","ConnectionId":"0HNG473QJG7AA"}} +{"Timestamp":"2025-10-05T21:00:28.1893202+03:00","Level":"Information","MessageTemplate":"Request starting {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {ContentType} {ContentLength}","TraceId":"11a6cfb8f53dde8255dc9463cabad4b6","SpanId":"1ca8b8037fb28535","Properties":{"Protocol":"HTTP/2","Method":"GET","ContentType":null,"ContentLength":null,"Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/_vs/browserLink","QueryString":"","EventId":{"Id":1},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG473QJG7AA:00000005","RequestPath":"/_vs/browserLink","ConnectionId":"0HNG473QJG7AA"}} +{"Timestamp":"2025-10-05T21:00:28.2283635+03:00","Level":"Information","MessageTemplate":"Request finished {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {StatusCode} {ContentLength} {ContentType} {ElapsedMilliseconds}ms","TraceId":"11a6cfb8f53dde8255dc9463cabad4b6","SpanId":"1ca8b8037fb28535","Properties":{"ElapsedMilliseconds":39.0265,"StatusCode":200,"ContentType":"text/javascript; charset=UTF-8","ContentLength":null,"Protocol":"HTTP/2","Method":"GET","Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/_vs/browserLink","QueryString":"","EventId":{"Id":2},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG473QJG7AA:00000005","RequestPath":"/_vs/browserLink","ConnectionId":"0HNG473QJG7AA"}} +{"Timestamp":"2025-10-05T21:00:28.3716234+03:00","Level":"Information","MessageTemplate":"Request starting {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {ContentType} {ContentLength}","TraceId":"b65192778f6fc182e59eaba5f4055fd2","SpanId":"8495f5327cdad262","Properties":{"Protocol":"HTTP/2","Method":"GET","ContentType":null,"ContentLength":null,"Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/swagger/v1/swagger.json","QueryString":"","EventId":{"Id":1},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG473QJG7AA:00000007","RequestPath":"/swagger/v1/swagger.json","ConnectionId":"0HNG473QJG7AA"}} +{"Timestamp":"2025-10-05T21:00:28.3915291+03:00","Level":"Information","MessageTemplate":"Request finished {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {StatusCode} {ContentLength} {ContentType} {ElapsedMilliseconds}ms","TraceId":"b65192778f6fc182e59eaba5f4055fd2","SpanId":"8495f5327cdad262","Properties":{"ElapsedMilliseconds":19.8827,"StatusCode":200,"ContentType":"application/json;charset=utf-8","ContentLength":null,"Protocol":"HTTP/2","Method":"GET","Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/swagger/v1/swagger.json","QueryString":"","EventId":{"Id":2},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG473QJG7AA:00000007","RequestPath":"/swagger/v1/swagger.json","ConnectionId":"0HNG473QJG7AA"}} +{"Timestamp":"2025-10-05T21:00:44.5882577+03:00","Level":"Information","MessageTemplate":"Request starting {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {ContentType} {ContentLength}","TraceId":"d4826a4a8d0b64cedb0d257d7873d1cf","SpanId":"1eb35172550fa9c9","Properties":{"Protocol":"HTTP/2","Method":"GET","ContentType":null,"ContentLength":null,"Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/api/Wonders","QueryString":"","EventId":{"Id":1},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG473QJG7AA:00000009","RequestPath":"/api/Wonders","ConnectionId":"0HNG473QJG7AA"}} +{"Timestamp":"2025-10-05T21:00:44.6013384+03:00","Level":"Information","MessageTemplate":"Executing endpoint '{EndpointName}'","TraceId":"d4826a4a8d0b64cedb0d257d7873d1cf","SpanId":"1eb35172550fa9c9","Properties":{"EndpointName":"Ghaymah.WondersAPI.Controllers.WondersController.GetAll (Ghaymah.WondersAPI)","EventId":{"Name":"ExecutingEndpoint"},"SourceContext":"Microsoft.AspNetCore.Routing.EndpointMiddleware","RequestId":"0HNG473QJG7AA:00000009","RequestPath":"/api/Wonders","ConnectionId":"0HNG473QJG7AA"}} +{"Timestamp":"2025-10-05T21:00:44.6198501+03:00","Level":"Information","MessageTemplate":"Route matched with {RouteData}. Executing controller action with signature {MethodInfo} on controller {Controller} ({AssemblyName}).","TraceId":"d4826a4a8d0b64cedb0d257d7873d1cf","SpanId":"1eb35172550fa9c9","Properties":{"RouteData":"{action = \"GetAll\", controller = \"Wonders\"}","MethodInfo":"System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetAll()","Controller":"Ghaymah.WondersAPI.Controllers.WondersController","AssemblyName":"Ghaymah.WondersAPI","EventId":{"Id":102,"Name":"ControllerActionExecuting"},"SourceContext":"Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker","ActionId":"e5649039-ffd3-46d6-b2b3-97007b8e5d9c","ActionName":"Ghaymah.WondersAPI.Controllers.WondersController.GetAll (Ghaymah.WondersAPI)","RequestId":"0HNG473QJG7AA:00000009","RequestPath":"/api/Wonders","ConnectionId":"0HNG473QJG7AA"}} +{"Timestamp":"2025-10-05T21:00:44.7288992+03:00","Level":"Information","MessageTemplate":"Fetched {Count} wonders from database","TraceId":"d4826a4a8d0b64cedb0d257d7873d1cf","SpanId":"1eb35172550fa9c9","Properties":{"Count":6,"SourceContext":"Ghaymah.WondersAPI.Controllers.WondersController","ActionId":"e5649039-ffd3-46d6-b2b3-97007b8e5d9c","ActionName":"Ghaymah.WondersAPI.Controllers.WondersController.GetAll (Ghaymah.WondersAPI)","RequestId":"0HNG473QJG7AA:00000009","RequestPath":"/api/Wonders","ConnectionId":"0HNG473QJG7AA"}} +{"Timestamp":"2025-10-05T21:00:44.7411351+03:00","Level":"Information","MessageTemplate":"Executing {ObjectResultType}, writing value of type '{Type}'.","TraceId":"d4826a4a8d0b64cedb0d257d7873d1cf","SpanId":"1eb35172550fa9c9","Properties":{"ObjectResultType":"OkObjectResult","Type":"System.Collections.Generic.List`1[[WondersAPI.Models.Wonder, Ghaymah.WondersAPI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]","EventId":{"Id":1,"Name":"ObjectResultExecuting"},"SourceContext":"Microsoft.AspNetCore.Mvc.Infrastructure.ObjectResultExecutor","ActionId":"e5649039-ffd3-46d6-b2b3-97007b8e5d9c","ActionName":"Ghaymah.WondersAPI.Controllers.WondersController.GetAll (Ghaymah.WondersAPI)","RequestId":"0HNG473QJG7AA:00000009","RequestPath":"/api/Wonders","ConnectionId":"0HNG473QJG7AA"}} +{"Timestamp":"2025-10-05T21:00:44.7587123+03:00","Level":"Information","MessageTemplate":"Executed action {ActionName} in {ElapsedMilliseconds}ms","TraceId":"d4826a4a8d0b64cedb0d257d7873d1cf","SpanId":"1eb35172550fa9c9","Properties":{"ActionName":"Ghaymah.WondersAPI.Controllers.WondersController.GetAll (Ghaymah.WondersAPI)","ElapsedMilliseconds":130.6212,"EventId":{"Id":105,"Name":"ActionExecuted"},"SourceContext":"Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker","RequestId":"0HNG473QJG7AA:00000009","RequestPath":"/api/Wonders","ConnectionId":"0HNG473QJG7AA"}} +{"Timestamp":"2025-10-05T21:00:44.7649075+03:00","Level":"Information","MessageTemplate":"Executed endpoint '{EndpointName}'","TraceId":"d4826a4a8d0b64cedb0d257d7873d1cf","SpanId":"1eb35172550fa9c9","Properties":{"EndpointName":"Ghaymah.WondersAPI.Controllers.WondersController.GetAll (Ghaymah.WondersAPI)","EventId":{"Id":1,"Name":"ExecutedEndpoint"},"SourceContext":"Microsoft.AspNetCore.Routing.EndpointMiddleware","RequestId":"0HNG473QJG7AA:00000009","RequestPath":"/api/Wonders","ConnectionId":"0HNG473QJG7AA"}} +{"Timestamp":"2025-10-05T21:00:44.7742250+03:00","Level":"Information","MessageTemplate":"Request finished {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {StatusCode} {ContentLength} {ContentType} {ElapsedMilliseconds}ms","TraceId":"d4826a4a8d0b64cedb0d257d7873d1cf","SpanId":"1eb35172550fa9c9","Properties":{"ElapsedMilliseconds":185.9149,"StatusCode":200,"ContentType":"application/json; charset=utf-8","ContentLength":null,"Protocol":"HTTP/2","Method":"GET","Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/api/Wonders","QueryString":"","EventId":{"Id":2},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG473QJG7AA:00000009","RequestPath":"/api/Wonders","ConnectionId":"0HNG473QJG7AA"}} +{"Timestamp":"2025-10-05T21:01:11.1392013+03:00","Level":"Information","MessageTemplate":"Request starting {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {ContentType} {ContentLength}","TraceId":"f6c60b2db401843ed02131a6ef85956a","SpanId":"79203bc503890871","Properties":{"Protocol":"HTTP/2","Method":"POST","ContentType":"application/json","ContentLength":144,"Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/api/Wonders","QueryString":"","EventId":{"Id":1},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG473QJG7AA:0000000B","RequestPath":"/api/Wonders","ConnectionId":"0HNG473QJG7AA"}} +{"Timestamp":"2025-10-05T21:01:11.1508342+03:00","Level":"Information","MessageTemplate":"Executing endpoint '{EndpointName}'","TraceId":"f6c60b2db401843ed02131a6ef85956a","SpanId":"79203bc503890871","Properties":{"EndpointName":"Ghaymah.WondersAPI.Controllers.WondersController.Create (Ghaymah.WondersAPI)","EventId":{"Name":"ExecutingEndpoint"},"SourceContext":"Microsoft.AspNetCore.Routing.EndpointMiddleware","RequestId":"0HNG473QJG7AA:0000000B","RequestPath":"/api/Wonders","ConnectionId":"0HNG473QJG7AA"}} +{"Timestamp":"2025-10-05T21:01:11.1656030+03:00","Level":"Information","MessageTemplate":"Route matched with {RouteData}. Executing controller action with signature {MethodInfo} on controller {Controller} ({AssemblyName}).","TraceId":"f6c60b2db401843ed02131a6ef85956a","SpanId":"79203bc503890871","Properties":{"RouteData":"{action = \"Create\", controller = \"Wonders\"}","MethodInfo":"System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] Create(WondersAPI.Models.Wonder)","Controller":"Ghaymah.WondersAPI.Controllers.WondersController","AssemblyName":"Ghaymah.WondersAPI","EventId":{"Id":102,"Name":"ControllerActionExecuting"},"SourceContext":"Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker","ActionId":"b416f871-295f-4949-897f-73a28da9d202","ActionName":"Ghaymah.WondersAPI.Controllers.WondersController.Create (Ghaymah.WondersAPI)","RequestId":"0HNG473QJG7AA:0000000B","RequestPath":"/api/Wonders","ConnectionId":"0HNG473QJG7AA"}} +{"Timestamp":"2025-10-05T21:01:11.2686836+03:00","Level":"Information","MessageTemplate":"Saved {count} entities to in-memory store.","TraceId":"f6c60b2db401843ed02131a6ef85956a","SpanId":"79203bc503890871","Properties":{"count":1,"EventId":{"Id":30100,"Name":"Microsoft.EntityFrameworkCore.Update.ChangesSaved"},"SourceContext":"Microsoft.EntityFrameworkCore.Update","ActionId":"b416f871-295f-4949-897f-73a28da9d202","ActionName":"Ghaymah.WondersAPI.Controllers.WondersController.Create (Ghaymah.WondersAPI)","RequestId":"0HNG473QJG7AA:0000000B","RequestPath":"/api/Wonders","ConnectionId":"0HNG473QJG7AA"}} +{"Timestamp":"2025-10-05T21:01:11.2757308+03:00","Level":"Information","MessageTemplate":"Created new wonder: {Name}","TraceId":"f6c60b2db401843ed02131a6ef85956a","SpanId":"79203bc503890871","Properties":{"Name":"string","SourceContext":"Ghaymah.WondersAPI.Controllers.WondersController","ActionId":"b416f871-295f-4949-897f-73a28da9d202","ActionName":"Ghaymah.WondersAPI.Controllers.WondersController.Create (Ghaymah.WondersAPI)","RequestId":"0HNG473QJG7AA:0000000B","RequestPath":"/api/Wonders","ConnectionId":"0HNG473QJG7AA"}} +{"Timestamp":"2025-10-05T21:01:11.2834768+03:00","Level":"Information","MessageTemplate":"Executing {ObjectResultType}, writing value of type '{Type}'.","TraceId":"f6c60b2db401843ed02131a6ef85956a","SpanId":"79203bc503890871","Properties":{"ObjectResultType":"CreatedAtActionResult","Type":"WondersAPI.Models.Wonder","EventId":{"Id":1,"Name":"ObjectResultExecuting"},"SourceContext":"Microsoft.AspNetCore.Mvc.Infrastructure.ObjectResultExecutor","ActionId":"b416f871-295f-4949-897f-73a28da9d202","ActionName":"Ghaymah.WondersAPI.Controllers.WondersController.Create (Ghaymah.WondersAPI)","RequestId":"0HNG473QJG7AA:0000000B","RequestPath":"/api/Wonders","ConnectionId":"0HNG473QJG7AA"}} +{"Timestamp":"2025-10-05T21:01:11.3107925+03:00","Level":"Information","MessageTemplate":"Executed action {ActionName} in {ElapsedMilliseconds}ms","TraceId":"f6c60b2db401843ed02131a6ef85956a","SpanId":"79203bc503890871","Properties":{"ActionName":"Ghaymah.WondersAPI.Controllers.WondersController.Create (Ghaymah.WondersAPI)","ElapsedMilliseconds":123.3948,"EventId":{"Id":105,"Name":"ActionExecuted"},"SourceContext":"Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker","RequestId":"0HNG473QJG7AA:0000000B","RequestPath":"/api/Wonders","ConnectionId":"0HNG473QJG7AA"}} +{"Timestamp":"2025-10-05T21:01:11.3239564+03:00","Level":"Information","MessageTemplate":"Executed endpoint '{EndpointName}'","TraceId":"f6c60b2db401843ed02131a6ef85956a","SpanId":"79203bc503890871","Properties":{"EndpointName":"Ghaymah.WondersAPI.Controllers.WondersController.Create (Ghaymah.WondersAPI)","EventId":{"Id":1,"Name":"ExecutedEndpoint"},"SourceContext":"Microsoft.AspNetCore.Routing.EndpointMiddleware","RequestId":"0HNG473QJG7AA:0000000B","RequestPath":"/api/Wonders","ConnectionId":"0HNG473QJG7AA"}} +{"Timestamp":"2025-10-05T21:01:11.3309465+03:00","Level":"Information","MessageTemplate":"Request finished {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {StatusCode} {ContentLength} {ContentType} {ElapsedMilliseconds}ms","TraceId":"f6c60b2db401843ed02131a6ef85956a","SpanId":"79203bc503890871","Properties":{"ElapsedMilliseconds":191.7228,"StatusCode":201,"ContentType":"application/json; charset=utf-8","ContentLength":null,"Protocol":"HTTP/2","Method":"POST","Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/api/Wonders","QueryString":"","EventId":{"Id":2},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG473QJG7AA:0000000B","RequestPath":"/api/Wonders","ConnectionId":"0HNG473QJG7AA"}} +{"Timestamp":"2025-10-05T21:01:16.1024702+03:00","Level":"Information","MessageTemplate":"Request starting {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {ContentType} {ContentLength}","TraceId":"ce42f6fc4ad4b5391519dd321493e31b","SpanId":"cfc41d8d15871841","Properties":{"Protocol":"HTTP/2","Method":"POST","ContentType":"application/json","ContentLength":144,"Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/api/Wonders","QueryString":"","EventId":{"Id":1},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG473QJG7AA:0000000D","RequestPath":"/api/Wonders","ConnectionId":"0HNG473QJG7AA"}} +{"Timestamp":"2025-10-05T21:01:16.1082817+03:00","Level":"Information","MessageTemplate":"Executing endpoint '{EndpointName}'","TraceId":"ce42f6fc4ad4b5391519dd321493e31b","SpanId":"cfc41d8d15871841","Properties":{"EndpointName":"Ghaymah.WondersAPI.Controllers.WondersController.Create (Ghaymah.WondersAPI)","EventId":{"Name":"ExecutingEndpoint"},"SourceContext":"Microsoft.AspNetCore.Routing.EndpointMiddleware","RequestId":"0HNG473QJG7AA:0000000D","RequestPath":"/api/Wonders","ConnectionId":"0HNG473QJG7AA"}} +{"Timestamp":"2025-10-05T21:01:16.1103586+03:00","Level":"Information","MessageTemplate":"Route matched with {RouteData}. Executing controller action with signature {MethodInfo} on controller {Controller} ({AssemblyName}).","TraceId":"ce42f6fc4ad4b5391519dd321493e31b","SpanId":"cfc41d8d15871841","Properties":{"RouteData":"{action = \"Create\", controller = \"Wonders\"}","MethodInfo":"System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] Create(WondersAPI.Models.Wonder)","Controller":"Ghaymah.WondersAPI.Controllers.WondersController","AssemblyName":"Ghaymah.WondersAPI","EventId":{"Id":102,"Name":"ControllerActionExecuting"},"SourceContext":"Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker","ActionId":"b416f871-295f-4949-897f-73a28da9d202","ActionName":"Ghaymah.WondersAPI.Controllers.WondersController.Create (Ghaymah.WondersAPI)","RequestId":"0HNG473QJG7AA:0000000D","RequestPath":"/api/Wonders","ConnectionId":"0HNG473QJG7AA"}} +{"Timestamp":"2025-10-05T21:01:16.1454135+03:00","Level":"Error","MessageTemplate":"An exception occurred in the database while saving changes for context type '{contextType}'.{newline}{error}","TraceId":"ce42f6fc4ad4b5391519dd321493e31b","SpanId":"cfc41d8d15871841","Exception":"System.ArgumentException: An item with the same key has already been added. Key: 7\r\n at System.Collections.Generic.Dictionary`2.TryInsert(TKey key, TValue value, InsertionBehavior behavior)\r\n at System.Collections.Generic.Dictionary`2.Add(TKey key, TValue value)\r\n at Microsoft.EntityFrameworkCore.InMemory.Storage.Internal.InMemoryTable`1.Create(IUpdateEntry entry, IDiagnosticsLogger`1 updateLogger)\r\n at Microsoft.EntityFrameworkCore.InMemory.Storage.Internal.InMemoryStore.ExecuteTransaction(IList`1 entries, IDiagnosticsLogger`1 updateLogger)\r\n at Microsoft.EntityFrameworkCore.InMemory.Storage.Internal.InMemoryDatabase.SaveChangesAsync(IList`1 entries, CancellationToken cancellationToken)\r\n at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.SaveChangesAsync(IList`1 entriesToSave, CancellationToken cancellationToken)\r\n at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.SaveChangesAsync(StateManager stateManager, Boolean acceptAllChangesOnSuccess, CancellationToken cancellationToken)\r\n at Microsoft.EntityFrameworkCore.DbContext.SaveChangesAsync(Boolean acceptAllChangesOnSuccess, CancellationToken cancellationToken)","Properties":{"contextType":"WondersAPI.Data.AppDbContext","newline":"\r\n","error":"System.ArgumentException: An item with the same key has already been added. Key: 7\r\n at System.Collections.Generic.Dictionary`2.TryInsert(TKey key, TValue value, InsertionBehavior behavior)\r\n at System.Collections.Generic.Dictionary`2.Add(TKey key, TValue value)\r\n at Microsoft.EntityFrameworkCore.InMemory.Storage.Internal.InMemoryTable`1.Create(IUpdateEntry entry, IDiagnosticsLogger`1 updateLogger)\r\n at Microsoft.EntityFrameworkCore.InMemory.Storage.Internal.InMemoryStore.ExecuteTransaction(IList`1 entries, IDiagnosticsLogger`1 updateLogger)\r\n at Microsoft.EntityFrameworkCore.InMemory.Storage.Internal.InMemoryDatabase.SaveChangesAsync(IList`1 entries, CancellationToken cancellationToken)\r\n at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.SaveChangesAsync(IList`1 entriesToSave, CancellationToken cancellationToken)\r\n at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.SaveChangesAsync(StateManager stateManager, Boolean acceptAllChangesOnSuccess, CancellationToken cancellationToken)\r\n at Microsoft.EntityFrameworkCore.DbContext.SaveChangesAsync(Boolean acceptAllChangesOnSuccess, CancellationToken cancellationToken)","EventId":{"Id":10000,"Name":"Microsoft.EntityFrameworkCore.Update.SaveChangesFailed"},"SourceContext":"Microsoft.EntityFrameworkCore.Update","ActionId":"b416f871-295f-4949-897f-73a28da9d202","ActionName":"Ghaymah.WondersAPI.Controllers.WondersController.Create (Ghaymah.WondersAPI)","RequestId":"0HNG473QJG7AA:0000000D","RequestPath":"/api/Wonders","ConnectionId":"0HNG473QJG7AA"}} +{"Timestamp":"2025-10-05T21:01:16.1580676+03:00","Level":"Information","MessageTemplate":"Executed action {ActionName} in {ElapsedMilliseconds}ms","TraceId":"ce42f6fc4ad4b5391519dd321493e31b","SpanId":"cfc41d8d15871841","Properties":{"ActionName":"Ghaymah.WondersAPI.Controllers.WondersController.Create (Ghaymah.WondersAPI)","ElapsedMilliseconds":43.9989,"EventId":{"Id":105,"Name":"ActionExecuted"},"SourceContext":"Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker","RequestId":"0HNG473QJG7AA:0000000D","RequestPath":"/api/Wonders","ConnectionId":"0HNG473QJG7AA"}} +{"Timestamp":"2025-10-05T21:01:16.1613150+03:00","Level":"Information","MessageTemplate":"Executed endpoint '{EndpointName}'","TraceId":"ce42f6fc4ad4b5391519dd321493e31b","SpanId":"cfc41d8d15871841","Properties":{"EndpointName":"Ghaymah.WondersAPI.Controllers.WondersController.Create (Ghaymah.WondersAPI)","EventId":{"Id":1,"Name":"ExecutedEndpoint"},"SourceContext":"Microsoft.AspNetCore.Routing.EndpointMiddleware","RequestId":"0HNG473QJG7AA:0000000D","RequestPath":"/api/Wonders","ConnectionId":"0HNG473QJG7AA"}} +{"Timestamp":"2025-10-05T21:01:16.1657554+03:00","Level":"Error","MessageTemplate":"An unhandled exception has occurred while executing the request.","TraceId":"ce42f6fc4ad4b5391519dd321493e31b","SpanId":"cfc41d8d15871841","Exception":"System.ArgumentException: An item with the same key has already been added. Key: 7\r\n at System.Collections.Generic.Dictionary`2.TryInsert(TKey key, TValue value, InsertionBehavior behavior)\r\n at System.Collections.Generic.Dictionary`2.Add(TKey key, TValue value)\r\n at Microsoft.EntityFrameworkCore.InMemory.Storage.Internal.InMemoryTable`1.Create(IUpdateEntry entry, IDiagnosticsLogger`1 updateLogger)\r\n at Microsoft.EntityFrameworkCore.InMemory.Storage.Internal.InMemoryStore.ExecuteTransaction(IList`1 entries, IDiagnosticsLogger`1 updateLogger)\r\n at Microsoft.EntityFrameworkCore.InMemory.Storage.Internal.InMemoryDatabase.SaveChangesAsync(IList`1 entries, CancellationToken cancellationToken)\r\n at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.SaveChangesAsync(IList`1 entriesToSave, CancellationToken cancellationToken)\r\n at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.SaveChangesAsync(StateManager stateManager, Boolean acceptAllChangesOnSuccess, CancellationToken cancellationToken)\r\n at Microsoft.EntityFrameworkCore.DbContext.SaveChangesAsync(Boolean acceptAllChangesOnSuccess, CancellationToken cancellationToken)\r\n at Microsoft.EntityFrameworkCore.DbContext.SaveChangesAsync(Boolean acceptAllChangesOnSuccess, CancellationToken cancellationToken)\r\n at Ghaymah.WondersAPI.Controllers.WondersController.Create(Wonder wonder) in D:\\WebApplication1\\Controllers\\WondersController.cs:line 48\r\n at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.TaskOfIActionResultExecutor.Execute(ActionContext actionContext, IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)\r\n at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask`1 actionResultValueTask)\r\n at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)\r\n at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)\r\n at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)\r\n at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync()\r\n--- End of stack trace from previous location ---\r\n at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Awaited|20_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)\r\n at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Logged|17_1(ResourceInvoker invoker)\r\n at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Logged|17_1(ResourceInvoker invoker)\r\n at Microsoft.AspNetCore.Routing.EndpointMiddleware.g__AwaitRequestTask|7_0(Endpoint endpoint, Task requestTask, ILogger logger)\r\n at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)\r\n at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext)\r\n at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)\r\n at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)\r\n at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddlewareImpl.Invoke(HttpContext context)","Properties":{"EventId":{"Id":1,"Name":"UnhandledException"},"SourceContext":"Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware","RequestId":"0HNG473QJG7AA:0000000D","RequestPath":"/api/Wonders","ConnectionId":"0HNG473QJG7AA"}} +{"Timestamp":"2025-10-05T21:01:16.2057327+03:00","Level":"Information","MessageTemplate":"Request finished {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {StatusCode} {ContentLength} {ContentType} {ElapsedMilliseconds}ms","TraceId":"ce42f6fc4ad4b5391519dd321493e31b","SpanId":"cfc41d8d15871841","Properties":{"ElapsedMilliseconds":103.2548,"StatusCode":500,"ContentType":"text/plain; charset=utf-8","ContentLength":null,"Protocol":"HTTP/2","Method":"POST","Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/api/Wonders","QueryString":"","EventId":{"Id":2},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG473QJG7AA:0000000D","RequestPath":"/api/Wonders","ConnectionId":"0HNG473QJG7AA"}} +{"Timestamp":"2025-10-05T21:01:37.8453900+03:00","Level":"Information","MessageTemplate":"Request starting {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {ContentType} {ContentLength}","TraceId":"57e63c1823f8ed4afb0037c0f1de724f","SpanId":"7643fe61c05efc89","Properties":{"Protocol":"HTTP/2","Method":"POST","ContentType":"application/json","ContentLength":144,"Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/api/Wonders","QueryString":"","EventId":{"Id":1},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG473QJG7AA:0000000F","RequestPath":"/api/Wonders","ConnectionId":"0HNG473QJG7AA"}} +{"Timestamp":"2025-10-05T21:01:37.8527952+03:00","Level":"Information","MessageTemplate":"Executing endpoint '{EndpointName}'","TraceId":"57e63c1823f8ed4afb0037c0f1de724f","SpanId":"7643fe61c05efc89","Properties":{"EndpointName":"Ghaymah.WondersAPI.Controllers.WondersController.Create (Ghaymah.WondersAPI)","EventId":{"Name":"ExecutingEndpoint"},"SourceContext":"Microsoft.AspNetCore.Routing.EndpointMiddleware","RequestId":"0HNG473QJG7AA:0000000F","RequestPath":"/api/Wonders","ConnectionId":"0HNG473QJG7AA"}} +{"Timestamp":"2025-10-05T21:01:37.8552276+03:00","Level":"Information","MessageTemplate":"Route matched with {RouteData}. Executing controller action with signature {MethodInfo} on controller {Controller} ({AssemblyName}).","TraceId":"57e63c1823f8ed4afb0037c0f1de724f","SpanId":"7643fe61c05efc89","Properties":{"RouteData":"{action = \"Create\", controller = \"Wonders\"}","MethodInfo":"System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] Create(WondersAPI.Models.Wonder)","Controller":"Ghaymah.WondersAPI.Controllers.WondersController","AssemblyName":"Ghaymah.WondersAPI","EventId":{"Id":102,"Name":"ControllerActionExecuting"},"SourceContext":"Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker","ActionId":"b416f871-295f-4949-897f-73a28da9d202","ActionName":"Ghaymah.WondersAPI.Controllers.WondersController.Create (Ghaymah.WondersAPI)","RequestId":"0HNG473QJG7AA:0000000F","RequestPath":"/api/Wonders","ConnectionId":"0HNG473QJG7AA"}} +{"Timestamp":"2025-10-05T21:01:37.8624653+03:00","Level":"Information","MessageTemplate":"Saved {count} entities to in-memory store.","TraceId":"57e63c1823f8ed4afb0037c0f1de724f","SpanId":"7643fe61c05efc89","Properties":{"count":1,"EventId":{"Id":30100,"Name":"Microsoft.EntityFrameworkCore.Update.ChangesSaved"},"SourceContext":"Microsoft.EntityFrameworkCore.Update","ActionId":"b416f871-295f-4949-897f-73a28da9d202","ActionName":"Ghaymah.WondersAPI.Controllers.WondersController.Create (Ghaymah.WondersAPI)","RequestId":"0HNG473QJG7AA:0000000F","RequestPath":"/api/Wonders","ConnectionId":"0HNG473QJG7AA"}} +{"Timestamp":"2025-10-05T21:01:37.8689369+03:00","Level":"Information","MessageTemplate":"Created new wonder: {Name}","TraceId":"57e63c1823f8ed4afb0037c0f1de724f","SpanId":"7643fe61c05efc89","Properties":{"Name":"string","SourceContext":"Ghaymah.WondersAPI.Controllers.WondersController","ActionId":"b416f871-295f-4949-897f-73a28da9d202","ActionName":"Ghaymah.WondersAPI.Controllers.WondersController.Create (Ghaymah.WondersAPI)","RequestId":"0HNG473QJG7AA:0000000F","RequestPath":"/api/Wonders","ConnectionId":"0HNG473QJG7AA"}} +{"Timestamp":"2025-10-05T21:01:37.8714147+03:00","Level":"Information","MessageTemplate":"Executing {ObjectResultType}, writing value of type '{Type}'.","TraceId":"57e63c1823f8ed4afb0037c0f1de724f","SpanId":"7643fe61c05efc89","Properties":{"ObjectResultType":"CreatedAtActionResult","Type":"WondersAPI.Models.Wonder","EventId":{"Id":1,"Name":"ObjectResultExecuting"},"SourceContext":"Microsoft.AspNetCore.Mvc.Infrastructure.ObjectResultExecutor","ActionId":"b416f871-295f-4949-897f-73a28da9d202","ActionName":"Ghaymah.WondersAPI.Controllers.WondersController.Create (Ghaymah.WondersAPI)","RequestId":"0HNG473QJG7AA:0000000F","RequestPath":"/api/Wonders","ConnectionId":"0HNG473QJG7AA"}} +{"Timestamp":"2025-10-05T21:01:37.8773574+03:00","Level":"Information","MessageTemplate":"Executed action {ActionName} in {ElapsedMilliseconds}ms","TraceId":"57e63c1823f8ed4afb0037c0f1de724f","SpanId":"7643fe61c05efc89","Properties":{"ActionName":"Ghaymah.WondersAPI.Controllers.WondersController.Create (Ghaymah.WondersAPI)","ElapsedMilliseconds":15.6178,"EventId":{"Id":105,"Name":"ActionExecuted"},"SourceContext":"Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker","RequestId":"0HNG473QJG7AA:0000000F","RequestPath":"/api/Wonders","ConnectionId":"0HNG473QJG7AA"}} +{"Timestamp":"2025-10-05T21:01:37.8821295+03:00","Level":"Information","MessageTemplate":"Executed endpoint '{EndpointName}'","TraceId":"57e63c1823f8ed4afb0037c0f1de724f","SpanId":"7643fe61c05efc89","Properties":{"EndpointName":"Ghaymah.WondersAPI.Controllers.WondersController.Create (Ghaymah.WondersAPI)","EventId":{"Id":1,"Name":"ExecutedEndpoint"},"SourceContext":"Microsoft.AspNetCore.Routing.EndpointMiddleware","RequestId":"0HNG473QJG7AA:0000000F","RequestPath":"/api/Wonders","ConnectionId":"0HNG473QJG7AA"}} +{"Timestamp":"2025-10-05T21:01:37.8873911+03:00","Level":"Information","MessageTemplate":"Request finished {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {StatusCode} {ContentLength} {ContentType} {ElapsedMilliseconds}ms","TraceId":"57e63c1823f8ed4afb0037c0f1de724f","SpanId":"7643fe61c05efc89","Properties":{"ElapsedMilliseconds":41.9692,"StatusCode":201,"ContentType":"application/json; charset=utf-8","ContentLength":null,"Protocol":"HTTP/2","Method":"POST","Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/api/Wonders","QueryString":"","EventId":{"Id":2},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG473QJG7AA:0000000F","RequestPath":"/api/Wonders","ConnectionId":"0HNG473QJG7AA"}} +{"Timestamp":"2025-10-05T21:01:43.6647773+03:00","Level":"Information","MessageTemplate":"Request starting {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {ContentType} {ContentLength}","TraceId":"d8be60b5c779a912db141c0ff3e4813e","SpanId":"d09bb3bf5f7e0ee3","Properties":{"Protocol":"HTTP/2","Method":"POST","ContentType":"application/json","ContentLength":144,"Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/api/Wonders","QueryString":"","EventId":{"Id":1},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG473QJG7AA:00000011","RequestPath":"/api/Wonders","ConnectionId":"0HNG473QJG7AA"}} +{"Timestamp":"2025-10-05T21:01:43.6750739+03:00","Level":"Information","MessageTemplate":"Executing endpoint '{EndpointName}'","TraceId":"d8be60b5c779a912db141c0ff3e4813e","SpanId":"d09bb3bf5f7e0ee3","Properties":{"EndpointName":"Ghaymah.WondersAPI.Controllers.WondersController.Create (Ghaymah.WondersAPI)","EventId":{"Name":"ExecutingEndpoint"},"SourceContext":"Microsoft.AspNetCore.Routing.EndpointMiddleware","RequestId":"0HNG473QJG7AA:00000011","RequestPath":"/api/Wonders","ConnectionId":"0HNG473QJG7AA"}} +{"Timestamp":"2025-10-05T21:01:43.6779267+03:00","Level":"Information","MessageTemplate":"Route matched with {RouteData}. Executing controller action with signature {MethodInfo} on controller {Controller} ({AssemblyName}).","TraceId":"d8be60b5c779a912db141c0ff3e4813e","SpanId":"d09bb3bf5f7e0ee3","Properties":{"RouteData":"{action = \"Create\", controller = \"Wonders\"}","MethodInfo":"System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] Create(WondersAPI.Models.Wonder)","Controller":"Ghaymah.WondersAPI.Controllers.WondersController","AssemblyName":"Ghaymah.WondersAPI","EventId":{"Id":102,"Name":"ControllerActionExecuting"},"SourceContext":"Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker","ActionId":"b416f871-295f-4949-897f-73a28da9d202","ActionName":"Ghaymah.WondersAPI.Controllers.WondersController.Create (Ghaymah.WondersAPI)","RequestId":"0HNG473QJG7AA:00000011","RequestPath":"/api/Wonders","ConnectionId":"0HNG473QJG7AA"}} +{"Timestamp":"2025-10-05T21:01:43.6832312+03:00","Level":"Error","MessageTemplate":"An exception occurred in the database while saving changes for context type '{contextType}'.{newline}{error}","TraceId":"d8be60b5c779a912db141c0ff3e4813e","SpanId":"d09bb3bf5f7e0ee3","Exception":"System.ArgumentException: An item with the same key has already been added. Key: 8\r\n at System.Collections.Generic.Dictionary`2.TryInsert(TKey key, TValue value, InsertionBehavior behavior)\r\n at System.Collections.Generic.Dictionary`2.Add(TKey key, TValue value)\r\n at Microsoft.EntityFrameworkCore.InMemory.Storage.Internal.InMemoryTable`1.Create(IUpdateEntry entry, IDiagnosticsLogger`1 updateLogger)\r\n at Microsoft.EntityFrameworkCore.InMemory.Storage.Internal.InMemoryStore.ExecuteTransaction(IList`1 entries, IDiagnosticsLogger`1 updateLogger)\r\n at Microsoft.EntityFrameworkCore.InMemory.Storage.Internal.InMemoryDatabase.SaveChangesAsync(IList`1 entries, CancellationToken cancellationToken)\r\n at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.SaveChangesAsync(IList`1 entriesToSave, CancellationToken cancellationToken)\r\n at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.SaveChangesAsync(StateManager stateManager, Boolean acceptAllChangesOnSuccess, CancellationToken cancellationToken)\r\n at Microsoft.EntityFrameworkCore.DbContext.SaveChangesAsync(Boolean acceptAllChangesOnSuccess, CancellationToken cancellationToken)","Properties":{"contextType":"WondersAPI.Data.AppDbContext","newline":"\r\n","error":"System.ArgumentException: An item with the same key has already been added. Key: 8\r\n at System.Collections.Generic.Dictionary`2.TryInsert(TKey key, TValue value, InsertionBehavior behavior)\r\n at System.Collections.Generic.Dictionary`2.Add(TKey key, TValue value)\r\n at Microsoft.EntityFrameworkCore.InMemory.Storage.Internal.InMemoryTable`1.Create(IUpdateEntry entry, IDiagnosticsLogger`1 updateLogger)\r\n at Microsoft.EntityFrameworkCore.InMemory.Storage.Internal.InMemoryStore.ExecuteTransaction(IList`1 entries, IDiagnosticsLogger`1 updateLogger)\r\n at Microsoft.EntityFrameworkCore.InMemory.Storage.Internal.InMemoryDatabase.SaveChangesAsync(IList`1 entries, CancellationToken cancellationToken)\r\n at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.SaveChangesAsync(IList`1 entriesToSave, CancellationToken cancellationToken)\r\n at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.SaveChangesAsync(StateManager stateManager, Boolean acceptAllChangesOnSuccess, CancellationToken cancellationToken)\r\n at Microsoft.EntityFrameworkCore.DbContext.SaveChangesAsync(Boolean acceptAllChangesOnSuccess, CancellationToken cancellationToken)","EventId":{"Id":10000,"Name":"Microsoft.EntityFrameworkCore.Update.SaveChangesFailed"},"SourceContext":"Microsoft.EntityFrameworkCore.Update","ActionId":"b416f871-295f-4949-897f-73a28da9d202","ActionName":"Ghaymah.WondersAPI.Controllers.WondersController.Create (Ghaymah.WondersAPI)","RequestId":"0HNG473QJG7AA:00000011","RequestPath":"/api/Wonders","ConnectionId":"0HNG473QJG7AA"}} +{"Timestamp":"2025-10-05T21:01:43.6893276+03:00","Level":"Information","MessageTemplate":"Executed action {ActionName} in {ElapsedMilliseconds}ms","TraceId":"d8be60b5c779a912db141c0ff3e4813e","SpanId":"d09bb3bf5f7e0ee3","Properties":{"ActionName":"Ghaymah.WondersAPI.Controllers.WondersController.Create (Ghaymah.WondersAPI)","ElapsedMilliseconds":7.2606,"EventId":{"Id":105,"Name":"ActionExecuted"},"SourceContext":"Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker","RequestId":"0HNG473QJG7AA:00000011","RequestPath":"/api/Wonders","ConnectionId":"0HNG473QJG7AA"}} +{"Timestamp":"2025-10-05T21:01:43.6917256+03:00","Level":"Information","MessageTemplate":"Executed endpoint '{EndpointName}'","TraceId":"d8be60b5c779a912db141c0ff3e4813e","SpanId":"d09bb3bf5f7e0ee3","Properties":{"EndpointName":"Ghaymah.WondersAPI.Controllers.WondersController.Create (Ghaymah.WondersAPI)","EventId":{"Id":1,"Name":"ExecutedEndpoint"},"SourceContext":"Microsoft.AspNetCore.Routing.EndpointMiddleware","RequestId":"0HNG473QJG7AA:00000011","RequestPath":"/api/Wonders","ConnectionId":"0HNG473QJG7AA"}} +{"Timestamp":"2025-10-05T21:01:43.6938124+03:00","Level":"Error","MessageTemplate":"An unhandled exception has occurred while executing the request.","TraceId":"d8be60b5c779a912db141c0ff3e4813e","SpanId":"d09bb3bf5f7e0ee3","Exception":"System.ArgumentException: An item with the same key has already been added. Key: 8\r\n at System.Collections.Generic.Dictionary`2.TryInsert(TKey key, TValue value, InsertionBehavior behavior)\r\n at System.Collections.Generic.Dictionary`2.Add(TKey key, TValue value)\r\n at Microsoft.EntityFrameworkCore.InMemory.Storage.Internal.InMemoryTable`1.Create(IUpdateEntry entry, IDiagnosticsLogger`1 updateLogger)\r\n at Microsoft.EntityFrameworkCore.InMemory.Storage.Internal.InMemoryStore.ExecuteTransaction(IList`1 entries, IDiagnosticsLogger`1 updateLogger)\r\n at Microsoft.EntityFrameworkCore.InMemory.Storage.Internal.InMemoryDatabase.SaveChangesAsync(IList`1 entries, CancellationToken cancellationToken)\r\n at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.SaveChangesAsync(IList`1 entriesToSave, CancellationToken cancellationToken)\r\n at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.SaveChangesAsync(StateManager stateManager, Boolean acceptAllChangesOnSuccess, CancellationToken cancellationToken)\r\n at Microsoft.EntityFrameworkCore.DbContext.SaveChangesAsync(Boolean acceptAllChangesOnSuccess, CancellationToken cancellationToken)\r\n at Microsoft.EntityFrameworkCore.DbContext.SaveChangesAsync(Boolean acceptAllChangesOnSuccess, CancellationToken cancellationToken)\r\n at Ghaymah.WondersAPI.Controllers.WondersController.Create(Wonder wonder) in D:\\WebApplication1\\Controllers\\WondersController.cs:line 48\r\n at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.TaskOfIActionResultExecutor.Execute(ActionContext actionContext, IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)\r\n at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask`1 actionResultValueTask)\r\n at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)\r\n at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)\r\n at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)\r\n at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync()\r\n--- End of stack trace from previous location ---\r\n at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Awaited|20_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)\r\n at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Logged|17_1(ResourceInvoker invoker)\r\n at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Logged|17_1(ResourceInvoker invoker)\r\n at Microsoft.AspNetCore.Routing.EndpointMiddleware.g__AwaitRequestTask|7_0(Endpoint endpoint, Task requestTask, ILogger logger)\r\n at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)\r\n at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext)\r\n at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)\r\n at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)\r\n at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddlewareImpl.Invoke(HttpContext context)","Properties":{"EventId":{"Id":1,"Name":"UnhandledException"},"SourceContext":"Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware","RequestId":"0HNG473QJG7AA:00000011","RequestPath":"/api/Wonders","ConnectionId":"0HNG473QJG7AA"}} +{"Timestamp":"2025-10-05T21:01:43.7049442+03:00","Level":"Information","MessageTemplate":"Request finished {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {StatusCode} {ContentLength} {ContentType} {ElapsedMilliseconds}ms","TraceId":"d8be60b5c779a912db141c0ff3e4813e","SpanId":"d09bb3bf5f7e0ee3","Properties":{"ElapsedMilliseconds":40.152,"StatusCode":500,"ContentType":"text/plain; charset=utf-8","ContentLength":null,"Protocol":"HTTP/2","Method":"POST","Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/api/Wonders","QueryString":"","EventId":{"Id":2},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG473QJG7AA:00000011","RequestPath":"/api/Wonders","ConnectionId":"0HNG473QJG7AA"}} +{"Timestamp":"2025-10-05T21:01:50.7734550+03:00","Level":"Information","MessageTemplate":"Request starting {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {ContentType} {ContentLength}","TraceId":"25864c94a4197fc727d63a7e95cfeac9","SpanId":"d223f923d8b85a0d","Properties":{"Protocol":"HTTP/2","Method":"GET","ContentType":null,"ContentLength":null,"Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/api/Wonders","QueryString":"","EventId":{"Id":1},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG473QJG7AA:00000013","RequestPath":"/api/Wonders","ConnectionId":"0HNG473QJG7AA"}} +{"Timestamp":"2025-10-05T21:01:50.7780523+03:00","Level":"Information","MessageTemplate":"Executing endpoint '{EndpointName}'","TraceId":"25864c94a4197fc727d63a7e95cfeac9","SpanId":"d223f923d8b85a0d","Properties":{"EndpointName":"Ghaymah.WondersAPI.Controllers.WondersController.GetAll (Ghaymah.WondersAPI)","EventId":{"Name":"ExecutingEndpoint"},"SourceContext":"Microsoft.AspNetCore.Routing.EndpointMiddleware","RequestId":"0HNG473QJG7AA:00000013","RequestPath":"/api/Wonders","ConnectionId":"0HNG473QJG7AA"}} +{"Timestamp":"2025-10-05T21:01:50.7798667+03:00","Level":"Information","MessageTemplate":"Route matched with {RouteData}. Executing controller action with signature {MethodInfo} on controller {Controller} ({AssemblyName}).","TraceId":"25864c94a4197fc727d63a7e95cfeac9","SpanId":"d223f923d8b85a0d","Properties":{"RouteData":"{action = \"GetAll\", controller = \"Wonders\"}","MethodInfo":"System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetAll()","Controller":"Ghaymah.WondersAPI.Controllers.WondersController","AssemblyName":"Ghaymah.WondersAPI","EventId":{"Id":102,"Name":"ControllerActionExecuting"},"SourceContext":"Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker","ActionId":"e5649039-ffd3-46d6-b2b3-97007b8e5d9c","ActionName":"Ghaymah.WondersAPI.Controllers.WondersController.GetAll (Ghaymah.WondersAPI)","RequestId":"0HNG473QJG7AA:00000013","RequestPath":"/api/Wonders","ConnectionId":"0HNG473QJG7AA"}} +{"Timestamp":"2025-10-05T21:01:50.7876686+03:00","Level":"Information","MessageTemplate":"Fetched {Count} wonders from database","TraceId":"25864c94a4197fc727d63a7e95cfeac9","SpanId":"d223f923d8b85a0d","Properties":{"Count":8,"SourceContext":"Ghaymah.WondersAPI.Controllers.WondersController","ActionId":"e5649039-ffd3-46d6-b2b3-97007b8e5d9c","ActionName":"Ghaymah.WondersAPI.Controllers.WondersController.GetAll (Ghaymah.WondersAPI)","RequestId":"0HNG473QJG7AA:00000013","RequestPath":"/api/Wonders","ConnectionId":"0HNG473QJG7AA"}} +{"Timestamp":"2025-10-05T21:01:50.7902925+03:00","Level":"Information","MessageTemplate":"Executing {ObjectResultType}, writing value of type '{Type}'.","TraceId":"25864c94a4197fc727d63a7e95cfeac9","SpanId":"d223f923d8b85a0d","Properties":{"ObjectResultType":"OkObjectResult","Type":"System.Collections.Generic.List`1[[WondersAPI.Models.Wonder, Ghaymah.WondersAPI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]","EventId":{"Id":1,"Name":"ObjectResultExecuting"},"SourceContext":"Microsoft.AspNetCore.Mvc.Infrastructure.ObjectResultExecutor","ActionId":"e5649039-ffd3-46d6-b2b3-97007b8e5d9c","ActionName":"Ghaymah.WondersAPI.Controllers.WondersController.GetAll (Ghaymah.WondersAPI)","RequestId":"0HNG473QJG7AA:00000013","RequestPath":"/api/Wonders","ConnectionId":"0HNG473QJG7AA"}} +{"Timestamp":"2025-10-05T21:01:50.7925284+03:00","Level":"Information","MessageTemplate":"Executed action {ActionName} in {ElapsedMilliseconds}ms","TraceId":"25864c94a4197fc727d63a7e95cfeac9","SpanId":"d223f923d8b85a0d","Properties":{"ActionName":"Ghaymah.WondersAPI.Controllers.WondersController.GetAll (Ghaymah.WondersAPI)","ElapsedMilliseconds":9.9947,"EventId":{"Id":105,"Name":"ActionExecuted"},"SourceContext":"Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker","RequestId":"0HNG473QJG7AA:00000013","RequestPath":"/api/Wonders","ConnectionId":"0HNG473QJG7AA"}} +{"Timestamp":"2025-10-05T21:01:50.7949020+03:00","Level":"Information","MessageTemplate":"Executed endpoint '{EndpointName}'","TraceId":"25864c94a4197fc727d63a7e95cfeac9","SpanId":"d223f923d8b85a0d","Properties":{"EndpointName":"Ghaymah.WondersAPI.Controllers.WondersController.GetAll (Ghaymah.WondersAPI)","EventId":{"Id":1,"Name":"ExecutedEndpoint"},"SourceContext":"Microsoft.AspNetCore.Routing.EndpointMiddleware","RequestId":"0HNG473QJG7AA:00000013","RequestPath":"/api/Wonders","ConnectionId":"0HNG473QJG7AA"}} +{"Timestamp":"2025-10-05T21:01:50.7968049+03:00","Level":"Information","MessageTemplate":"Request finished {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {StatusCode} {ContentLength} {ContentType} {ElapsedMilliseconds}ms","TraceId":"25864c94a4197fc727d63a7e95cfeac9","SpanId":"d223f923d8b85a0d","Properties":{"ElapsedMilliseconds":23.4101,"StatusCode":200,"ContentType":"application/json; charset=utf-8","ContentLength":null,"Protocol":"HTTP/2","Method":"GET","Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/api/Wonders","QueryString":"","EventId":{"Id":2},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG473QJG7AA:00000013","RequestPath":"/api/Wonders","ConnectionId":"0HNG473QJG7AA"}} +{"Timestamp":"2025-10-05T21:02:15.2710105+03:00","Level":"Information","MessageTemplate":"Request starting {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {ContentType} {ContentLength}","TraceId":"bc1a1941a3f5665181256569f425d784","SpanId":"c92119d25df98d03","Properties":{"Protocol":"HTTP/2","Method":"POST","ContentType":"application/json","ContentLength":145,"Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/api/Wonders","QueryString":"","EventId":{"Id":1},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG473QJG7AA:00000015","RequestPath":"/api/Wonders","ConnectionId":"0HNG473QJG7AA"}} +{"Timestamp":"2025-10-05T21:02:15.2748379+03:00","Level":"Information","MessageTemplate":"Executing endpoint '{EndpointName}'","TraceId":"bc1a1941a3f5665181256569f425d784","SpanId":"c92119d25df98d03","Properties":{"EndpointName":"Ghaymah.WondersAPI.Controllers.WondersController.Create (Ghaymah.WondersAPI)","EventId":{"Name":"ExecutingEndpoint"},"SourceContext":"Microsoft.AspNetCore.Routing.EndpointMiddleware","RequestId":"0HNG473QJG7AA:00000015","RequestPath":"/api/Wonders","ConnectionId":"0HNG473QJG7AA"}} +{"Timestamp":"2025-10-05T21:02:15.2758451+03:00","Level":"Information","MessageTemplate":"Route matched with {RouteData}. Executing controller action with signature {MethodInfo} on controller {Controller} ({AssemblyName}).","TraceId":"bc1a1941a3f5665181256569f425d784","SpanId":"c92119d25df98d03","Properties":{"RouteData":"{action = \"Create\", controller = \"Wonders\"}","MethodInfo":"System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] Create(WondersAPI.Models.Wonder)","Controller":"Ghaymah.WondersAPI.Controllers.WondersController","AssemblyName":"Ghaymah.WondersAPI","EventId":{"Id":102,"Name":"ControllerActionExecuting"},"SourceContext":"Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker","ActionId":"b416f871-295f-4949-897f-73a28da9d202","ActionName":"Ghaymah.WondersAPI.Controllers.WondersController.Create (Ghaymah.WondersAPI)","RequestId":"0HNG473QJG7AA:00000015","RequestPath":"/api/Wonders","ConnectionId":"0HNG473QJG7AA"}} +{"Timestamp":"2025-10-05T21:02:15.2788088+03:00","Level":"Information","MessageTemplate":"Saved {count} entities to in-memory store.","TraceId":"bc1a1941a3f5665181256569f425d784","SpanId":"c92119d25df98d03","Properties":{"count":1,"EventId":{"Id":30100,"Name":"Microsoft.EntityFrameworkCore.Update.ChangesSaved"},"SourceContext":"Microsoft.EntityFrameworkCore.Update","ActionId":"b416f871-295f-4949-897f-73a28da9d202","ActionName":"Ghaymah.WondersAPI.Controllers.WondersController.Create (Ghaymah.WondersAPI)","RequestId":"0HNG473QJG7AA:00000015","RequestPath":"/api/Wonders","ConnectionId":"0HNG473QJG7AA"}} +{"Timestamp":"2025-10-05T21:02:15.2802682+03:00","Level":"Information","MessageTemplate":"Created new wonder: {Name}","TraceId":"bc1a1941a3f5665181256569f425d784","SpanId":"c92119d25df98d03","Properties":{"Name":"string","SourceContext":"Ghaymah.WondersAPI.Controllers.WondersController","ActionId":"b416f871-295f-4949-897f-73a28da9d202","ActionName":"Ghaymah.WondersAPI.Controllers.WondersController.Create (Ghaymah.WondersAPI)","RequestId":"0HNG473QJG7AA:00000015","RequestPath":"/api/Wonders","ConnectionId":"0HNG473QJG7AA"}} +{"Timestamp":"2025-10-05T21:02:15.2816853+03:00","Level":"Information","MessageTemplate":"Executing {ObjectResultType}, writing value of type '{Type}'.","TraceId":"bc1a1941a3f5665181256569f425d784","SpanId":"c92119d25df98d03","Properties":{"ObjectResultType":"CreatedAtActionResult","Type":"WondersAPI.Models.Wonder","EventId":{"Id":1,"Name":"ObjectResultExecuting"},"SourceContext":"Microsoft.AspNetCore.Mvc.Infrastructure.ObjectResultExecutor","ActionId":"b416f871-295f-4949-897f-73a28da9d202","ActionName":"Ghaymah.WondersAPI.Controllers.WondersController.Create (Ghaymah.WondersAPI)","RequestId":"0HNG473QJG7AA:00000015","RequestPath":"/api/Wonders","ConnectionId":"0HNG473QJG7AA"}} +{"Timestamp":"2025-10-05T21:02:15.2858617+03:00","Level":"Information","MessageTemplate":"Executed action {ActionName} in {ElapsedMilliseconds}ms","TraceId":"bc1a1941a3f5665181256569f425d784","SpanId":"c92119d25df98d03","Properties":{"ActionName":"Ghaymah.WondersAPI.Controllers.WondersController.Create (Ghaymah.WondersAPI)","ElapsedMilliseconds":7.9125,"EventId":{"Id":105,"Name":"ActionExecuted"},"SourceContext":"Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker","RequestId":"0HNG473QJG7AA:00000015","RequestPath":"/api/Wonders","ConnectionId":"0HNG473QJG7AA"}} +{"Timestamp":"2025-10-05T21:02:15.2893868+03:00","Level":"Information","MessageTemplate":"Executed endpoint '{EndpointName}'","TraceId":"bc1a1941a3f5665181256569f425d784","SpanId":"c92119d25df98d03","Properties":{"EndpointName":"Ghaymah.WondersAPI.Controllers.WondersController.Create (Ghaymah.WondersAPI)","EventId":{"Id":1,"Name":"ExecutedEndpoint"},"SourceContext":"Microsoft.AspNetCore.Routing.EndpointMiddleware","RequestId":"0HNG473QJG7AA:00000015","RequestPath":"/api/Wonders","ConnectionId":"0HNG473QJG7AA"}} +{"Timestamp":"2025-10-05T21:02:15.2981489+03:00","Level":"Information","MessageTemplate":"Request finished {Protocol} {Method} {Scheme}://{Host}{PathBase}{Path}{QueryString} - {StatusCode} {ContentLength} {ContentType} {ElapsedMilliseconds}ms","TraceId":"bc1a1941a3f5665181256569f425d784","SpanId":"c92119d25df98d03","Properties":{"ElapsedMilliseconds":27.0407,"StatusCode":201,"ContentType":"application/json; charset=utf-8","ContentLength":null,"Protocol":"HTTP/2","Method":"POST","Scheme":"https","Host":"localhost:7247","PathBase":"","Path":"/api/Wonders","QueryString":"","EventId":{"Id":2},"SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics","RequestId":"0HNG473QJG7AA:00000015","RequestPath":"/api/Wonders","ConnectionId":"0HNG473QJG7AA"}} diff --git a/Models/Wonder.cs b/Models/Wonder.cs new file mode 100644 index 0000000..d598b19 --- /dev/null +++ b/Models/Wonder.cs @@ -0,0 +1,14 @@ +namespace WondersAPI.Models +{ + public class Wonder + { + public int Id { get; set; } + public string Name { get; set; } = string.Empty; + public string Country { get; set; } = string.Empty; + public string Era { get; set; } = string.Empty; + public string Type { get; set; } = string.Empty; + public int DiscoveryYear { get; set; } + + public string Description { get; set; } = string.Empty; + } +} \ No newline at end of file diff --git a/Program.cs b/Program.cs new file mode 100644 index 0000000..dde90e2 --- /dev/null +++ b/Program.cs @@ -0,0 +1,72 @@ +using Microsoft.EntityFrameworkCore; +using WondersAPI.Data; +using WondersAPI.Models; +using Serilog; +using Serilog.Formatting.Json; + +var builder = WebApplication.CreateBuilder(args); + +builder.Logging.ClearProviders(); +builder.Logging.AddSimpleConsole(options => +{ + options.IncludeScopes = true; + options.SingleLine = true; + options.TimestampFormat = "yyyy-MM-dd HH:mm:ss "; +}); + + +var logFilePath = Path.Combine(Directory.GetCurrentDirectory(), "Logs", $"app-log{DateTime.Now:yyyyMMdd}.json"); +Directory.CreateDirectory(Path.GetDirectoryName(logFilePath)!); + + +Log.Logger = new LoggerConfiguration() + .WriteTo.Console() + .WriteTo.File(new JsonFormatter(), logFilePath, rollingInterval: RollingInterval.Day) + .CreateLogger(); + +builder.Host.UseSerilog(); + +builder.Services.AddDbContext(options => + options.UseInMemoryDatabase("WondersDb")); + + +builder.Services.AddControllers(); +builder.Services.AddEndpointsApiExplorer(); +builder.Services.AddSwaggerGen(); + +var app = builder.Build(); + +using (var scope = app.Services.CreateScope()) +{ + var db = scope.ServiceProvider.GetRequiredService(); + if (!db.Wonders.Any()) + { + var jsonPath = Path.Combine(Directory.GetCurrentDirectory(), "seed-data.json"); + if (File.Exists(jsonPath)) + { + var json = File.ReadAllText(jsonPath); + var wonders = System.Text.Json.JsonSerializer.Deserialize>(json) ?? new(); + db.Wonders.AddRange(wonders); + db.SaveChanges(); + } + else + { + Console.WriteLine(" seed-data.json not found. No data was seeded."); + } + } +} + +var logger = app.Services.GetRequiredService>(); +logger.LogInformation(" Wonders API application started successfully at {time}", DateTime.Now); + +if (app.Environment.IsDevelopment()) +{ + app.UseSwagger(); + app.UseSwaggerUI(); +} + +app.UseHttpsRedirection(); +app.UseAuthorization(); +app.MapControllers(); + +app.Run(); diff --git a/Properties/launchSettings.json b/Properties/launchSettings.json new file mode 100644 index 0000000..b26e187 --- /dev/null +++ b/Properties/launchSettings.json @@ -0,0 +1,41 @@ +{ + "$schema": "http://json.schemastore.org/launchsettings.json", + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:45234", + "sslPort": 44341 + } + }, + "profiles": { + "http": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "launchUrl": "swagger", + "applicationUrl": "http://localhost:5004", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "https": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "launchUrl": "swagger", + "applicationUrl": "https://localhost:7247;http://localhost:5004", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "launchUrl": "swagger", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} diff --git a/appsettings.Development.json b/appsettings.Development.json new file mode 100644 index 0000000..0c208ae --- /dev/null +++ b/appsettings.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/appsettings.json b/appsettings.json new file mode 100644 index 0000000..10f68b8 --- /dev/null +++ b/appsettings.json @@ -0,0 +1,9 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*" +} diff --git a/seed-data.json b/seed-data.json new file mode 100644 index 0000000..65e6b12 --- /dev/null +++ b/seed-data.json @@ -0,0 +1,56 @@ +[ + { + "Id": 1, + "Name": "Great Pyramid of Giza", + "Country": "Egypt", + "Era": "Ancient Egypt", + "Type": "Pyramid", + "DiscoveryYear": -2560, + "Description": "The only surviving wonder of the original Seven Wonders of the Ancient World." + }, + { + "Id": 2, + "Name": "Parthenon", + "Country": "Greece", + "Era": "Classical Greece", + "Type": "Temple", + "DiscoveryYear": -447, + "Description": "A temple on the Athenian Acropolis dedicated to the goddess Athena." + }, + { + "Id": 3, + "Name": "Colosseum", + "Country": "Italy", + "Era": "Roman Empire", + "Type": "Amphitheater", + "DiscoveryYear": 80, + "Description": "An iconic amphitheater in Rome used for gladiatorial contests and public spectacles." + }, + { + "Id": 4, + "Name": "Hanging Gardens of Babylon", + "Country": "Iraq", + "Era": "Mesopotamia", + "Type": "Garden", + "DiscoveryYear": -600, + "Description": "Legendary terraced gardens built in the ancient city of Babylon." + }, + { + "Id": 5, + "Name": "Taj Mahal", + "Country": "India", + "Era": "Mughal Empire", + "Type": "Palace", + "DiscoveryYear": 1653, + "Description": "A white marble mausoleum built by Emperor Shah Jahan in memory of his wife Mumtaz Mahal." + }, + { + "Id": 6, + "Name": "Great Wall of China", + "Country": "China", + "Era": "Han Dynasty", + "Type": "Wall", + "DiscoveryYear": -200, + "Description": "A vast series of fortifications built to protect China from invasions." + } +]