diff --git a/api/FilterLists.Data.Contracts/FilterLists.Data.Contracts.csproj b/api/FilterLists.Data.Contracts/FilterLists.Data.Contracts.csproj new file mode 100644 index 000000000..5784fbcc0 --- /dev/null +++ b/api/FilterLists.Data.Contracts/FilterLists.Data.Contracts.csproj @@ -0,0 +1,11 @@ + + + + netcoreapp1.1 + + + + + + + \ No newline at end of file diff --git a/api/FilterLists.Data.Contracts/IListRepository.cs b/api/FilterLists.Data.Contracts/IListRepository.cs new file mode 100644 index 000000000..1f3470961 --- /dev/null +++ b/api/FilterLists.Data.Contracts/IListRepository.cs @@ -0,0 +1,6 @@ +namespace FilterLists.Data.Contracts +{ + public interface IListRepository + { + } +} \ No newline at end of file diff --git a/api/FilterLists.Data/FilterLists.Data.csproj b/api/FilterLists.Data/FilterLists.Data.csproj index f15d5d960..576b1c4f2 100644 --- a/api/FilterLists.Data/FilterLists.Data.csproj +++ b/api/FilterLists.Data/FilterLists.Data.csproj @@ -9,6 +9,7 @@ + diff --git a/api/FilterLists.Data/IRepository.cs b/api/FilterLists.Data/IRepository.cs new file mode 100644 index 000000000..ff56d8eb9 --- /dev/null +++ b/api/FilterLists.Data/IRepository.cs @@ -0,0 +1,16 @@ +//https://code.msdn.microsoft.com/Generic-Repository-Pattern-f133bca4/sourcecode?fileId=164016&pathId=804969589 + +using System.Collections.Generic; +using FilterLists.Models; + +namespace FilterLists.Data +{ + public interface IRepository where T : BaseEntity + { + IEnumerable GetAll(); + T Get(long id); + void Insert(T entity); + void Update(T entity); + void Delete(T entity); + } +} \ No newline at end of file diff --git a/api/FilterLists.Data/ListRepository.cs b/api/FilterLists.Data/ListRepository.cs index 97ce3916a..02d9399f2 100644 --- a/api/FilterLists.Data/ListRepository.cs +++ b/api/FilterLists.Data/ListRepository.cs @@ -1,6 +1,12 @@ -namespace FilterLists.Data +using FilterLists.Data.Contracts; +using FilterLists.Models; + +namespace FilterLists.Data { - public class ListRepository + public class ListRepository : Repository, IListRepository { + public ListRepository(FilterListsContext context) : base(context) + { + } } } \ No newline at end of file diff --git a/api/FilterLists.Data/Repository.cs b/api/FilterLists.Data/Repository.cs new file mode 100644 index 000000000..8d231ef91 --- /dev/null +++ b/api/FilterLists.Data/Repository.cs @@ -0,0 +1,55 @@ +//https://code.msdn.microsoft.com/Generic-Repository-Pattern-f133bca4/sourcecode?fileId=164016&pathId=902500354 + +using System; +using System.Collections.Generic; +using System.Linq; +using FilterLists.Models; +using Microsoft.EntityFrameworkCore; + +namespace FilterLists.Data +{ + public class Repository : IRepository where T : BaseEntity + { + private readonly FilterListsContext _context; + private readonly DbSet _entities; + + public Repository(FilterListsContext context) + { + _context = context; + _entities = context.Set(); + } + + public IEnumerable GetAll() + { + return _entities.AsEnumerable(); + } + + public T Get(long id) + { + return _entities.SingleOrDefault(s => s.Id == id); + } + + public void Insert(T entity) + { + if (entity == null) + throw new ArgumentNullException(nameof(entity)); + _entities.Add(entity); + _context.SaveChanges(); + } + + public void Update(T entity) + { + if (entity == null) + throw new ArgumentNullException(nameof(entity)); + _context.SaveChanges(); + } + + public void Delete(T entity) + { + if (entity == null) + throw new ArgumentNullException(nameof(entity)); + _entities.Remove(entity); + _context.SaveChanges(); + } + } +} \ No newline at end of file diff --git a/api/FilterLists.Models/BaseEntity.cs b/api/FilterLists.Models/BaseEntity.cs new file mode 100644 index 000000000..5ce0c2726 --- /dev/null +++ b/api/FilterLists.Models/BaseEntity.cs @@ -0,0 +1,13 @@ +//https://code.msdn.microsoft.com/Generic-Repository-Pattern-f133bca4/sourcecode?fileId=164016&pathId=1938870460 + +using System; + +namespace FilterLists.Models +{ + public class BaseEntity + { + public long Id { get; set; } + public DateTime AddedDate { get; set; } + public DateTime ModifiedDate { get; set; } + } +} \ No newline at end of file diff --git a/api/FilterLists.Models/List.cs b/api/FilterLists.Models/List.cs index 8a7200be4..2ebf2235d 100644 --- a/api/FilterLists.Models/List.cs +++ b/api/FilterLists.Models/List.cs @@ -3,7 +3,7 @@ namespace FilterLists.Models { - public class List + public class List : BaseEntity { [StringLength(1024)] [Column("description")] public string Description; [StringLength(512)] [Column("description_source_url")] public string DescriptionSourceUrl; diff --git a/api/FilterLists.sln b/api/FilterLists.sln index 216e89c7c..1aee0ff6f 100644 --- a/api/FilterLists.sln +++ b/api/FilterLists.sln @@ -9,6 +9,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FilterLists.Data", "FilterL EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FilterLists.Models", "FilterLists.Models\FilterLists.Models.csproj", "{EBEF0C2E-2631-4AEF-ACAF-F5AE5A568975}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FilterLists.Data.Contracts", "FilterLists.Data.Contracts\FilterLists.Data.Contracts.csproj", "{07A5064E-1CB9-4990-84F8-25A9A89B1D45}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -27,6 +29,10 @@ Global {EBEF0C2E-2631-4AEF-ACAF-F5AE5A568975}.Debug|Any CPU.Build.0 = Debug|Any CPU {EBEF0C2E-2631-4AEF-ACAF-F5AE5A568975}.Release|Any CPU.ActiveCfg = Release|Any CPU {EBEF0C2E-2631-4AEF-ACAF-F5AE5A568975}.Release|Any CPU.Build.0 = Release|Any CPU + {07A5064E-1CB9-4990-84F8-25A9A89B1D45}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {07A5064E-1CB9-4990-84F8-25A9A89B1D45}.Debug|Any CPU.Build.0 = Debug|Any CPU + {07A5064E-1CB9-4990-84F8-25A9A89B1D45}.Release|Any CPU.ActiveCfg = Release|Any CPU + {07A5064E-1CB9-4990-84F8-25A9A89B1D45}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE