Как создать Crud Model на клиентской стороне Angular для API шаблона cqrs? - PullRequest
0 голосов
/ 10 января 2020

Я реализую веб-API в ASP. net ядро ​​в CQRS Pattent и использую mediatR library У меня есть отдельная модель Как CreatePartyCommand, UpadatePartyCommand, DeletePartyCommand, PartyViewModel, PartyQuery

public class CreatePartyCommand : IRequest<int>
{
    public string Name { get; set; }

    public string Family { get; set; }

    public long Code { get; set; }

    public string Title { get; set; }
}

public class UpdatePartyCommand : IRequest<int>
{
    public int Id { get; set; }

    public string Name { get; set; }

    public string Family { get; set; }

    public long Code { get; set; }

    public string Title { get; set; }

}

public class DeletePartyCommand : IRequest
{
    public int Id { get; set; }
}

[Route("api/[controller]")]
[ApiController]
public class PartyController : ControllerBase
{
    private readonly IMediator _mediator;

    public PartyController(IMediator mediator)
    {
        _mediator = mediator;
    }

    [HttpGet]
    public async Task<ActionResult<IEnumerable<PartyViewModel>>> Get([FromQuery] PartyQuery partyQuery)
    {
        return Ok(await _mediator.Send(partyQuery));
    }

    [HttpPost]
    public async Task<ActionResult<int>> Create([FromBody] CreatePartyCommand command)
    {
        var productId = await _mediator.Send(command);

        return Ok(productId);
    }

    [HttpPut]
    [ProducesResponseType(StatusCodes.Status204NoContent)]
    [ProducesDefaultResponseType]
    public async Task<IActionResult> Update([FromBody] UpdatePartyCommand command)
    {
        await _mediator.Send(command);

        return NoContent();
    }

    [HttpDelete("{id}")]
    [ProducesResponseType(StatusCodes.Status204NoContent)]
    [ProducesDefaultResponseType]
    public async Task<IActionResult> Delete(int id)
    {
        await _mediator.Send(new DeletePartyCommand { Id = id });

        return NoContent();
    }
}

На стороне клиента у меня есть компонент для Party List, который выгружает данные и привязывает их к PartyViewModel[] и одному или двум (не знаю, помогите мне, пожалуйста) компоненту для добавления и обновления

Как мне создавать DataModels на стороне клиента или какие изменения вносить в на стороне сервера завершить сценарий CRUD?

1 Ответ

0 голосов
/ 10 января 2020

Вам нужен только один интерфейс для ввода ваших объектов.

export interface IParty {
  Id?: number;
  Name: string;
  Family: string;
  Code: number;
  Title: string;
}

Пример для POST:

Сервис:

create(party: IParty): Promise<IParty> {
  return this.http.post('link', party).toPromise();
}

компонент

async createParty(party: IParty): Promise<void> {
  const party = await this.partyService.create(party); // if you use promise you should put this code in a try-catch block
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...