139 lines
3.8 KiB
C#
139 lines
3.8 KiB
C#
|
||
List<Authors> authors = new()
|
||
{
|
||
new Authors() { Uuid= Guid.NewGuid(), Number = "1", Name = "Programming Basics", IdBook = Guid.Parse("6a1b4a72-5669-41fe-8d5b-106dc86f58bd") },
|
||
new Authors() { Uuid= Guid.NewGuid(), Number = "2", Name = "Advanced Algorithms", IdBook = Guid.Parse("f8692bea-b7e6-4164-b564-a921f16c35c9") },
|
||
new Authors() { Uuid= Guid.NewGuid(), Number = "3", Name = "Romantic Journey", IdBook = Guid.Parse("464bbdb8-39c0-4644-b9c0-3df1c484ea7e") },
|
||
new Authors() { Uuid= Guid.NewGuid(), Number = "3А", Name = "Mystery Island", IdBook = Guid.Parse("464bbdb8-39c0-4644-b9c0-3df1c484ea7e") },
|
||
};
|
||
|
||
var builder = WebApplication.CreateBuilder(args);
|
||
|
||
builder.Services.AddEndpointsApiExplorer();
|
||
builder.Services.AddSwaggerGen();
|
||
|
||
var app = builder.Build();
|
||
|
||
if (app.Environment.IsDevelopment())
|
||
{
|
||
app.UseSwagger();
|
||
app.UseSwaggerUI();
|
||
}
|
||
|
||
app.UseHttpsRedirection();
|
||
|
||
app.MapGet("/", () =>
|
||
{
|
||
return authors.Select(r => new AuthorEntityDto()
|
||
{
|
||
Uuid = r.Uuid,
|
||
Number = r.Number,
|
||
Name = r.Name,
|
||
IdBook = r.IdBook,
|
||
});
|
||
})
|
||
.WithName("GetAuthors")
|
||
.WithOpenApi();
|
||
|
||
app.MapGet("/{uuid}", (Guid uuid) =>
|
||
{
|
||
var author = authors.FirstOrDefault(r => r.Uuid == uuid);
|
||
if (author == null)
|
||
return Results.NotFound();
|
||
return Results.Json(new AuthorEntityDto()
|
||
{
|
||
Uuid = author.Uuid,
|
||
Number = author.Number,
|
||
Name = author.Name,
|
||
IdBook = author.IdBook,
|
||
});
|
||
})
|
||
.WithName("GetAuthorByGUID")
|
||
.WithOpenApi();
|
||
|
||
app.MapPost("/{number}/{name}/{IdBook}", (string? Number, string Name, Guid IdBook) =>
|
||
{
|
||
Guid NewGuid = Guid.NewGuid();
|
||
authors.Add(new Authors() { Uuid = NewGuid, Number = (string)Number, Name = (string)Name, IdBook = (Guid)IdBook });
|
||
|
||
var author = authors.FirstOrDefault(r => r.Uuid == NewGuid);
|
||
if (author == null)
|
||
return Results.NotFound();
|
||
return Results.Json(new AuthorEntityDto()
|
||
{
|
||
Uuid = author.Uuid,
|
||
Number = author.Number,
|
||
Name = author.Name,
|
||
IdBook = author.IdBook,
|
||
});
|
||
})
|
||
.WithName("PostAuthor")
|
||
.WithOpenApi();
|
||
|
||
app.MapPatch("/{uuid}/{number}/{name}/{IdBook}", (Guid uuid, string ?number, string name, Guid IdBook) =>
|
||
{
|
||
var author = authors.FirstOrDefault(r => r.Uuid == uuid);
|
||
if (author == null)
|
||
return Results.NotFound();
|
||
if (number != ",") author.Number = number;
|
||
if (name != author.Name) author.Name = name;
|
||
if (IdBook != author.IdBook) author.IdBook = IdBook;
|
||
|
||
return Results.Json(new AuthorEntityDto()
|
||
{
|
||
Uuid = author.Uuid,
|
||
Number = author.Number,
|
||
Name = author.Name,
|
||
IdBook = author.IdBook,
|
||
});
|
||
})
|
||
.WithName("UpdateAuthor")
|
||
.WithOpenApi();
|
||
|
||
app.MapDelete("/{uuid}", (Guid uuid) =>
|
||
{
|
||
var author = authors.FirstOrDefault(r => r.Uuid == uuid);
|
||
if (author == null)
|
||
return Results.NotFound();
|
||
authors.Remove(author);
|
||
return Results.Json(new AuthorEntityDto()
|
||
{
|
||
Uuid = author.Uuid,
|
||
Number = author.Number,
|
||
Name = author.Name,
|
||
IdBook = author.IdBook,
|
||
});
|
||
})
|
||
.WithName("DeleteAuthor")
|
||
.WithOpenApi();
|
||
|
||
app.MapGet("/Authors/", async () =>
|
||
{
|
||
var httpClient = new HttpClient();
|
||
var secondWorkerResponse = await httpClient.GetStringAsync("http://worker-1:8080/");
|
||
|
||
return secondWorkerResponse.ToArray();
|
||
})
|
||
.WithName("GetBooks")
|
||
.WithOpenApi();
|
||
|
||
app.Run();
|
||
|
||
public class Authors
|
||
{
|
||
public Guid Uuid { get; set; }
|
||
public string Number { get; set; } = string.Empty;
|
||
public string Name { get; set; } = string.Empty;
|
||
public Guid IdBook { get; set; }
|
||
}
|
||
|
||
public class AuthorEntityDto : Authors { }
|
||
|
||
public class Books
|
||
{
|
||
public Guid Uuid { get; set; }
|
||
public string Title { get; set; } = string.Empty;
|
||
public string Genre { get; set; } = string.Empty;
|
||
}
|
||
|
||
public class BookEntityDto : Books { } |