Setpoint API #1

Merged
on.nemtina merged 10 commits from Setpoint into master 2024-11-25 10:33:36 +05:00
Collaborator
No description provided.
rs.efremov added 3 commits 2024-11-18 11:34:44 +05:00
rs.efremov requested review from on.nemtina 2024-11-18 11:35:02 +05:00
rs.efremov added 1 commit 2024-11-18 11:39:32 +05:00
rs.efremov added 1 commit 2024-11-18 15:05:24 +05:00
rs.efremov added 1 commit 2024-11-18 15:35:00 +05:00
on.nemtina requested changes 2024-11-19 13:43:53 +05:00
@ -0,0 +15,4 @@
this.setpointRepository = setpointRepository;
}
[HttpPost("current")]
Owner

Здесь метод [HttpGet]

Здесь метод [HttpGet]
@ -0,0 +23,4 @@
return Ok(result);
}
[HttpPost("history")]
Owner

Здесь метод [HttpGet]

Здесь метод [HttpGet]
@ -0,0 +31,4 @@
return Ok(result);
}
[HttpPost("log")]
Owner

Здесь метод [HttpGet]

Здесь метод [HttpGet]
@ -0,0 +39,4 @@
return Ok(result);
}
[HttpPost("save")]
Owner

Здесь можно просто [HttpPost]

Здесь можно просто [HttpPost]
@ -0,0 +42,4 @@
[HttpPost("save")]
public async Task<ActionResult<int>> Save(Guid setpointKey, object newValue, CancellationToken token)
{
var result = await setpointRepository.Save(setpointKey, newValue, 0, token);
Owner

Добавить todo, что необходимо решить вопрос с получением пользователя и авторизацией

Добавить todo, что необходимо решить вопрос с получением пользователя и авторизацией
@ -0,0 +13,4 @@
[Column(TypeName = "jsonb"), Comment("Значение уставки")]
public required object Value { get; set; }
[Comment("Дата изменения уставки")]
Owner

Должно быть "Дата создания уставки"

Должно быть "Дата создания уставки"
@ -0,0 +4,4 @@
namespace Persistence.Database.Model
{
public class SetpointDictionary
Owner

Этот класс решено удалить

Этот класс решено удалить
@ -0,0 +5,4 @@
{
public interface ISetpointClient
{
[Post("/current")]
Owner

Заголовки методов запроса должны соответствовать тем, что в контроллере (там часть нужно поменять с post на get)

Заголовки методов запроса должны соответствовать тем, что в контроллере (там часть нужно поменять с post на get)
@ -0,0 +16,4 @@
}
public SetpointControllerTest(WebAppFactoryFixture factory) : base(factory)
{
factory.ClientOptions.BaseAddress = new Uri($"http://localhost/api/Setpoint");
Owner

Эту строчку лучше убрать, а в интерфейсе ISetpointClient прописать так:

private const string BaseRoute = "/api/setpoint";

 [Post($"{BaseRoute}/current")]
	Task<IApiResponse<IEnumerable<SetpointValueDto>>> GetCurrent(IEnumerable<Guid> setpointKeys);```
Эту строчку лучше убрать, а в интерфейсе ISetpointClient прописать так: ``` private const string BaseRoute = "/api/setpoint"; [Post($"{BaseRoute}/current")] Task<IApiResponse<IEnumerable<SetpointValueDto>>> GetCurrent(IEnumerable<Guid> setpointKeys);```
@ -0,0 +99,4 @@
}
[Fact]
public async Task General_test_success()
Owner

General_test_success не нужен, вместо него нужно для каждого кейса написать свой тест.
Данные тесты должны быть аналогичны GetCurrent_returns_success, GetHistory_returns_success, GetLog_returns_success, только внутри блока //arrange вызвать метод Save.
Метод Save сделать отдельным приватным методом.

General_test_success не нужен, вместо него нужно для каждого кейса написать свой тест. Данные тесты должны быть аналогичны GetCurrent_returns_success, GetHistory_returns_success, GetLog_returns_success, только внутри блока //arrange вызвать метод Save. Метод Save сделать отдельным приватным методом.
@ -0,0 +1,10 @@
namespace Persistence.Repository.Data
{
public class SetpointDto
Owner

Решили, что для всех protected и public классов (а также для интерфейсов) нужно писать комментарии

Решили, что для всех protected и public классов (а также для интерфейсов) нужно писать комментарии
@ -0,0 +31,4 @@
{
var query = GetQueryReadOnly();
var entities = await query
.Where(e => setpointKeys.Contains(e.Key) && e.Created.Date == historyMoment.Date)
Owner

Здесь не строгое равенство дат.
Нужно отсортировать уставки по возрастанию дат.
Взять те, у которых Created меньше historyMoment
Из отсортированного и отфильтрованного списка взять последнюю

Здесь не строгое равенство дат. Нужно отсортировать уставки по возрастанию дат. Взять те, у которых Created меньше historyMoment Из отсортированного и отфильтрованного списка взять последнюю
@ -0,0 +44,4 @@
var entities = await query
.Where(e => setpointKeys.Contains(e.Key))
.ToArrayAsync(token);
var dtos = entities
Owner

Лучше так:
var dtos = entities
.GroupBy(e => e.Key)
.ToDictionary(e => e.Key, v => v.Select(z => z.Adapt()))

Лучше так: var dtos = entities .GroupBy(e => e.Key) .ToDictionary(e => e.Key, v => v.Select(z => z.Adapt<SetpointLogDto>()))
@ -0,0 +63,4 @@
Key = setpointKey,
Value = newValue,
IdUser = idUser,
Created = DateTimeOffset.Now.ToUniversalTime()
Owner

Можно так: Created = DateTimeOffset.UtcNow

Можно так: Created = DateTimeOffset.UtcNow
@ -0,0 +71,4 @@
return result;
}
catch (Exception)
Owner

Пока try catch решили убрать

Пока try catch решили убрать
@ -41,3 +41,3 @@
/// <param name="token"></param>
/// <returns></returns>
Task<ActionResult<int>> SaveAsync(Guid setpointKey, object newValue, CancellationToken token);
Task<ActionResult<int>> Save(Guid setpointKey, object newValue, CancellationToken token);
Owner

Решили, что метод Save не должен ничего возвращать

Решили, что метод Save не должен ничего возвращать
rs.efremov added 2 commits 2024-11-20 15:31:11 +05:00
on.nemtina requested changes 2024-11-21 12:17:27 +05:00
@ -0,0 +122,4 @@
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
Assert.NotNull(response.Content);
Assert.NotEmpty(response.Content);
Assert.Equal(response.Content.FirstOrDefault().Value.FirstOrDefault()?.Key, setpointKey);
Owner

Assert.Equal(expected, actual)

Assert.Equal(expected, actual)
@ -0,0 +35,4 @@
.ToArrayAsync(token);
var filteredEntities = entities
.GroupBy(e => e.Key)
.Select(e => e.Where(e => e.Created <= historyMoment).Last());
Owner

Здесь нужно еще просортировать, чтобы гарантированно взять нужную близлежайшую к historyMoment уставку

Здесь нужно еще просортировать, чтобы гарантированно взять нужную близлежайшую к historyMoment уставку
rs.efremov added 1 commit 2024-11-25 10:12:25 +05:00
rs.efremov added 1 commit 2024-11-25 10:30:42 +05:00
on.nemtina merged commit afe7310f73 into master 2024-11-25 10:33:36 +05:00
on.nemtina deleted branch Setpoint 2024-11-25 10:33:36 +05:00
Sign in to join this conversation.
No reviewers
No Label
No Milestone
No project
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: on.nemtina/persistence#1
No description provided.