Added Entry initial repo and services for a create action.

This commit is contained in:
2022-06-22 22:56:59 +01:00
parent e83cac2838
commit cbd5d7de4f
8 changed files with 120 additions and 3 deletions

View File

@@ -0,0 +1,19 @@
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Diary.Component.Entries
{
[ApiController]
[Route("[controller]")]
public class EntriesController:ControllerBase
{
public EntriesController()
{
}
}
}

View File

@@ -6,7 +6,7 @@ using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace Diary.Component.Entry.Repository namespace Diary.Component.Entries.Repository
{ {
[Table("Entries", Schema = "Diary")] [Table("Entries", Schema = "Diary")]
public class Entry public class Entry

View File

@@ -1,7 +1,7 @@
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders; using Microsoft.EntityFrameworkCore.Metadata.Builders;
namespace Diary.Component.Entry.Repository namespace Diary.Component.Entries.Repository
{ {
public class EntryConfiguration : IEntityTypeConfiguration<Entry> public class EntryConfiguration : IEntityTypeConfiguration<Entry>
{ {

View File

@@ -0,0 +1,26 @@
using Diary.Data;
namespace Diary.Component.Entries.Repository
{
public interface IEntryRepository
{
Task<Entry> CreateAsync(Entry entry);
}
public class EntryRepository : IEntryRepository
{
private readonly IDiaryDBContext _diaryDbContext;
public EntryRepository(IDiaryDBContext diaryDbContext)
{
_diaryDbContext = diaryDbContext ?? throw new ArgumentNullException(nameof(diaryDbContext));
}
public async Task<Entry> CreateAsync(Entry entry)
{
await _diaryDbContext.Entries.AddAsync(entry);
return entry;
}
}
}

View File

@@ -0,0 +1,14 @@
using AutoMapper;
using Diary.Component.Entries.Repository;
namespace Diary.Component.Entries.Service
{
public class EntryMappings : Profile
{
public EntryMappings()
{
CreateMap<CreateEntryResource, Entry>();
CreateMap<Entry, EntryResource>();
}
}
}

View File

@@ -0,0 +1,18 @@
namespace Diary.Component.Entries.Service
{
public class EntryResource
{
public int EnrtyID { get; set; }
public DateTime Date { get; set; }
public DateTime ValidFrom { get; set; }
public DateTime? ValidTo { get; set; }
public string Note { get; set; }
}
public class CreateEntryResource
{
public DateTime Date { get; set; }
public string Note { get; set; }
}
}

View File

@@ -0,0 +1,40 @@
using AutoMapper;
using Diary.Component.Entries.Repository;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Diary.Component.Entries.Service
{
public interface IEntryService
{
Task<EntryResource> CreateAsync(CreateEntryResource createEntryResource);
}
public class EntryService : IEntryService
{
private readonly IEntryRepository _entryRepository;
private readonly IMapper _mapper;
public EntryService(IEntryRepository entryRepository, IMapper mapper)
{
_entryRepository = entryRepository ?? throw new ArgumentNullException(nameof(entryRepository));
_mapper = mapper ?? throw new ArgumentNullException(nameof(mapper));
}
public async Task<EntryResource> CreateAsync(CreateEntryResource createEntryResource)
{
Entry entry = _mapper.Map<Entry>(createEntryResource);
await _entryRepository.CreateAsync(entry);
return _mapper.Map<EntryResource>(entry);
}
}
}

View File

@@ -1,4 +1,4 @@
using Diary.Component.Entry.Repository; using Diary.Component.Entries.Repository;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
namespace Diary.Data namespace Diary.Data