Hi all, 來到第18天 昨天解決了金鑰儲存的問題,今天就來完成我們編輯區塊的功能吧 (終於可以往下走了)
清點一下編輯區塊的目標吧
首先,來打通下我們的端點吧,code 如下
其中我們會在controller 層計算好變色龍雜湊簽章值,並將其塞進 DTO 物件中傳給 Service 層。
[HttpPatch("edit/{id}")]
public async Task<ApiResponse> EditBlock([FromBody] EditBlockRequest request, int id)
{
var chameleonSignature = chameleonHashService.Sign(request.Data);
await chainService.EditBlock(new EditBlockDto
{
Id = id,
Data = request.Data,
ChameleonSignature = chameleonSignature.Value
});
return ApiResponse.Success();
}
這邊就比較簡單毫無邏輯,直接call repository進行更新就好。
public async Task EditBlock(EditBlockDto dto)
{
await chainRepository.UpdateBlock(dto);
}
接著便可使用 DTO 物件裡的 Id 找到目前相對應的 Block,並將內容更新。
public async Task UpdateBlock(EditBlockDto dto)
{
var blockToUpdate = await _blocks.FirstAsync(x=> x.Id == dto.Id);
blockToUpdate.Data = dto.Data;
blockToUpdate.ChameleonSignature = dto.ChameleonSignature;
await blockchainDbContext.SaveChangesAsync();
}
最後我們來打一次API 並觀察變色龍雜湊值的變化:
今天讓系統可成功編輯區塊鏈,但我們還缺少驗證這個步驟,明天來想想怎麼做
結語: 拿到夢寐以求 HHKB,我愛大家