Merge from dev
This commit is contained in:
commit
2ef3efed33
25
.docker/appsettings.json
Normal file
25
.docker/appsettings.json
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
{
|
||||||
|
"Logging": {
|
||||||
|
"LogLevel": {
|
||||||
|
"Default": "Information",
|
||||||
|
"Microsoft.AspNetCore": "Warning"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ConnectionStrings": {
|
||||||
|
"DefaultConnection": "Host=db:5432;Database=persistence;Username=postgres;Password=postgres;Persist Security Info=True"
|
||||||
|
},
|
||||||
|
"AllowedHosts": "*",
|
||||||
|
"NeedUseKeyCloak": false,
|
||||||
|
"KeyCloakAuthentication": {
|
||||||
|
"Audience": "account",
|
||||||
|
"Host": "http://192.168.0.10:8321/realms/Persistence"
|
||||||
|
},
|
||||||
|
"AuthUser": {
|
||||||
|
"username": "myuser",
|
||||||
|
"password": 12345,
|
||||||
|
"clientId": "webapi",
|
||||||
|
"grantType": "password",
|
||||||
|
"http://schemas.xmlsoap.org/ws/2005/05/identity /claims/nameidentifier": "7d9f3574-6574-4ca3-845a-0276eb4aa8f6"
|
||||||
|
},
|
||||||
|
"ClientUrl": "http://localhost:5000/"
|
||||||
|
}
|
31
.docker/compose.yaml
Normal file
31
.docker/compose.yaml
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
networks:
|
||||||
|
persistence:
|
||||||
|
external: false
|
||||||
|
|
||||||
|
services:
|
||||||
|
db:
|
||||||
|
image: timescale/timescaledb:latest-pg16
|
||||||
|
container_name: some-timescaledb-16
|
||||||
|
restart: always
|
||||||
|
environment:
|
||||||
|
- POSTGRES_PASSWORD=postgres
|
||||||
|
networks:
|
||||||
|
- persistence
|
||||||
|
ports:
|
||||||
|
- "5462:5432"
|
||||||
|
volumes:
|
||||||
|
- ./db:/var/lib/postgresql/data
|
||||||
|
|
||||||
|
persistence:
|
||||||
|
image: git.ddrilling.ru/ddrilling/persistence:latest
|
||||||
|
container_name: persistence
|
||||||
|
restart: always
|
||||||
|
depends_on:
|
||||||
|
- db
|
||||||
|
networks:
|
||||||
|
- persistence
|
||||||
|
ports:
|
||||||
|
- "1111:8080"
|
||||||
|
volumes:
|
||||||
|
- ./appsettings.json:/app/appsettings.json
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Authorization;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using DD.Persistence.Models;
|
using DD.Persistence.Models;
|
||||||
using DD.Persistence.Models.Requests;
|
using DD.Persistence.Models.Requests;
|
||||||
@ -174,4 +174,87 @@ public class ChangeLogController : ControllerBase, IChangeLogApi
|
|||||||
|
|
||||||
return Ok(result);
|
return Ok(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Метод, который возвращает статистику по количеству изменений в разрезе дней
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="request"></param>
|
||||||
|
/// <param name="token"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet("statistics")]
|
||||||
|
public async Task<ActionResult<IEnumerable<StatisticsChangeLogDto>>> GetStatisticsCountAsync([FromQuery] ChangeLogRequest request, CancellationToken token)
|
||||||
|
{
|
||||||
|
var result = new List<StatisticsChangeLogDto>() {
|
||||||
|
new() { DateTime = DateTimeOffset.UtcNow.AddDays(-60), ChangesCount = 10},
|
||||||
|
new() { DateTime = DateTimeOffset.UtcNow.AddDays(-50), ChangesCount = 2},
|
||||||
|
new() { DateTime = DateTimeOffset.UtcNow.AddDays(-25), ChangesCount = 560},
|
||||||
|
new() { DateTime = DateTimeOffset.UtcNow.AddDays(-2), ChangesCount = 78},
|
||||||
|
new() { DateTime = DateTimeOffset.UtcNow.AddDays(-1), ChangesCount = 39},
|
||||||
|
};
|
||||||
|
|
||||||
|
return Ok(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Метод, который возвращает историю изменений в разрезе дней
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="request"></param>
|
||||||
|
/// <param name="token"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet("history")]
|
||||||
|
public async Task<ActionResult<IEnumerable<HistoryChangeLogDto>>> HistoryChangeLogAsync([FromQuery] ChangeLogRequest request, CancellationToken token)
|
||||||
|
{
|
||||||
|
var userId = Guid.CreateVersion7();
|
||||||
|
var changeLogItemCurrentId = Guid.CreateVersion7();
|
||||||
|
var changeLogItemCreation = DateTimeOffset.UtcNow;
|
||||||
|
var changeLogItems = new List<ChangeLogDto>()
|
||||||
|
{
|
||||||
|
new ChangeLogDto()
|
||||||
|
{
|
||||||
|
Id = changeLogItemCurrentId,
|
||||||
|
Creation = changeLogItemCreation,
|
||||||
|
IdAuthor = userId,
|
||||||
|
IdEditor = userId,
|
||||||
|
Obsolete = null,
|
||||||
|
Value = new ChangeLogValuesDto(){
|
||||||
|
Id = Guid.CreateVersion7(),
|
||||||
|
Value = new Dictionary<string, object>() {
|
||||||
|
["1"] = new { id = 1, caption = "Изменение 1 (c правкой)" },
|
||||||
|
["2"] = new { id = 2, caption = "Изменение 2 (с правкой)" },
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
new ChangeLogDto()
|
||||||
|
{
|
||||||
|
Id = Guid.CreateVersion7(),
|
||||||
|
Creation = DateTimeOffset.UtcNow.AddDays(-10),
|
||||||
|
IdAuthor = userId,
|
||||||
|
IdEditor = userId,
|
||||||
|
IdNext = changeLogItemCurrentId,
|
||||||
|
Obsolete = DateTimeOffset.UtcNow.AddDays(-5),
|
||||||
|
Value = new ChangeLogValuesDto(){
|
||||||
|
Id = Guid.CreateVersion7(),
|
||||||
|
Value = new Dictionary<string, object>() {
|
||||||
|
["1"] = new { id = 1, caption = "Изменение 1" },
|
||||||
|
["2"] = new { id = 2, caption = "Изменение 2" },
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
var result = new List<HistoryChangeLogDto>() {
|
||||||
|
new() {
|
||||||
|
Comment = "Петров И. Ю. попросил внести изменения",
|
||||||
|
DateTime = changeLogItemCreation,
|
||||||
|
DiscriminatorId = Guid.CreateVersion7(),
|
||||||
|
User = new UserDto()
|
||||||
|
{
|
||||||
|
Id = userId,
|
||||||
|
DisplayName = "Иванов И. И"
|
||||||
|
},
|
||||||
|
ChangeLogItems = changeLogItems
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
return Ok(result);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
32
DD.Persistence.Models/HistoryChangeLogDto.cs
Normal file
32
DD.Persistence.Models/HistoryChangeLogDto.cs
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
namespace DD.Persistence.Models;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Модель, необходимая для отображения истории по журналу изменений
|
||||||
|
/// </summary>
|
||||||
|
public class HistoryChangeLogDto
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Дата и время изменений
|
||||||
|
/// </summary>
|
||||||
|
public DateTimeOffset DateTime { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Пользователь, совершивший изменение данных
|
||||||
|
/// </summary>
|
||||||
|
public required UserDto User { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Проект, с которым связаны изменения
|
||||||
|
/// </summary>
|
||||||
|
public Guid DiscriminatorId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Список изменений
|
||||||
|
/// </summary>
|
||||||
|
public required IEnumerable<ChangeLogDto> ChangeLogItems { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Комментарий к изменению
|
||||||
|
/// </summary>
|
||||||
|
public required string Comment { get; set; }
|
||||||
|
}
|
17
DD.Persistence.Models/Requests/ChangeLogRequest.cs
Normal file
17
DD.Persistence.Models/Requests/ChangeLogRequest.cs
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
namespace DD.Persistence.Models.Requests;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Запрос, используемый для получения данных по журналу операций
|
||||||
|
/// </summary>
|
||||||
|
public class ChangeLogRequest
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Дискриминатор задачи
|
||||||
|
/// </summary>
|
||||||
|
public Guid DiscriminatorId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Пользователь
|
||||||
|
/// </summary>
|
||||||
|
public Guid UserId { get; set; }
|
||||||
|
}
|
23
DD.Persistence.Models/StatisticsChangeLogDto.cs
Normal file
23
DD.Persistence.Models/StatisticsChangeLogDto.cs
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace DD.Persistence.Models;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Модель, необходимая для отображения статистики по журналу изменений
|
||||||
|
/// </summary>
|
||||||
|
public class StatisticsChangeLogDto
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Дата и время изменений
|
||||||
|
/// </summary>
|
||||||
|
public DateTimeOffset DateTime { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Количество изменений
|
||||||
|
/// </summary>
|
||||||
|
public int ChangesCount { get; set; }
|
||||||
|
}
|
23
DD.Persistence.Models/UserDto.cs
Normal file
23
DD.Persistence.Models/UserDto.cs
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace DD.Persistence.Models;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Класс, описывающий пользователя
|
||||||
|
/// </summary>
|
||||||
|
public class UserDto
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Идентификатор пользователя
|
||||||
|
/// </summary>
|
||||||
|
public Guid Id { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Имя пользователя для отображения
|
||||||
|
/// </summary>
|
||||||
|
public required string DisplayName { get; set; }
|
||||||
|
}
|
11
README.md
11
README.md
@ -1 +1,10 @@
|
|||||||
# Persistence
|
# Persistence
|
||||||
|
## Инструкция по развертыванию persistence в docker
|
||||||
|
1. Необходимо скопировать себе локально папку **.docker**, которая находится внутри проекта **persistence**
|
||||||
|
|
||||||
|
2. Авторизоваться в gitea-registry при помощи командры: `docker login -u пользователь -p пароль https://git.ddrilling.ru`
|
||||||
|
|
||||||
|
3. Из папки **.docker** запустить команду:
|
||||||
|
`docker-compose up`
|
||||||
|
|
||||||
|
4. При успешном старте persistence необходимо откорректировать ссылку в браузере: `[host]:[port]/swagger/index.html`
|
Loading…
Reference in New Issue
Block a user