diff --git a/api/FilterLists.API/FilterLists.API.csproj b/api/FilterLists.API/FilterLists.API.csproj index 1ad66a36e..72f4c59cc 100644 --- a/api/FilterLists.API/FilterLists.API.csproj +++ b/api/FilterLists.API/FilterLists.API.csproj @@ -19,6 +19,7 @@ + diff --git a/api/FilterLists.API/Program.cs b/api/FilterLists.API/Program.cs index d89e112d2..1e318a932 100644 --- a/api/FilterLists.API/Program.cs +++ b/api/FilterLists.API/Program.cs @@ -1,7 +1,7 @@ using System.IO; using Microsoft.AspNetCore.Hosting; -namespace FilterLists.API +namespace FilterLists.Api { public class Program { diff --git a/api/FilterLists.API/Startup.cs b/api/FilterLists.API/Startup.cs index ddebe63d4..7b20db5fd 100644 --- a/api/FilterLists.API/Startup.cs +++ b/api/FilterLists.API/Startup.cs @@ -1,4 +1,6 @@ using FilterLists.Data; +using FilterLists.Data.Contexts; +using FilterLists.Services; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.EntityFrameworkCore.Infrastructure; @@ -8,7 +10,7 @@ using MySQL.Data.EntityFrameworkCore; using MySQL.Data.EntityFrameworkCore.Extensions; -namespace FilterLists.API +namespace FilterLists.Api { public class Startup { @@ -30,9 +32,10 @@ public void ConfigureServices(IServiceCollection services) // Add framework services. services.AddEntityFramework() .AddEntityFrameworkMySQL() - .AddDbContext(options => + .AddDbContext(options => options.UseMySQL(Configuration.GetConnectionString("FilterListsConnection"))); services.AddMvc(); + services.AddTransient(); } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. diff --git a/api/FilterLists.API/Controllers/ValuesController.cs b/api/FilterLists.Api/Controllers/ListsController.cs similarity index 50% rename from api/FilterLists.API/Controllers/ValuesController.cs rename to api/FilterLists.Api/Controllers/ListsController.cs index 09e7781d5..41460e60e 100644 --- a/api/FilterLists.API/Controllers/ValuesController.cs +++ b/api/FilterLists.Api/Controllers/ListsController.cs @@ -1,38 +1,47 @@ using System.Collections.Generic; +using FilterLists.Services; using Microsoft.AspNetCore.Mvc; -namespace FilterLists.API.Controllers +namespace FilterLists.Api.Controllers { [Route("api/[controller]")] - public class ValuesController : Controller + public class ListsController : Controller { - // GET api/values + private readonly IListService _listService; + + public ListsController(IListService listService) + { + _listService = listService; + } + + // GET api/lists [HttpGet] public IEnumerable Get() { - return new[] {"value1", "value2"}; + var lists = _listService.Lists; + return (IEnumerable) lists; } - // GET api/values/5 + // GET api/lists/5 [HttpGet("{id}")] public string Get(int id) { - return "value"; + return "list"; } - // POST api/values + // POST api/lists [HttpPost] public void Post([FromBody] string value) { } - // PUT api/values/5 + // PUT api/lists/5 [HttpPut("{id}")] public void Put(int id, [FromBody] string value) { } - // DELETE api/values/5 + // DELETE api/lists/5 [HttpDelete("{id}")] public void Delete(int id) { diff --git a/api/FilterLists.Data.Contracts/Contexts/IFilterListsDbContext.cs b/api/FilterLists.Data.Contracts/Contexts/IFilterListsDbContext.cs new file mode 100644 index 000000000..a686a85ba --- /dev/null +++ b/api/FilterLists.Data.Contracts/Contexts/IFilterListsDbContext.cs @@ -0,0 +1,6 @@ +namespace FilterLists.Data.Contracts.Contexts +{ + public interface IFilterListsDbContext + { + } +} \ No newline at end of file diff --git a/api/FilterLists.Data.Contracts/IListRepository.cs b/api/FilterLists.Data.Contracts/IListRepository.cs deleted file mode 100644 index 1f3470961..000000000 --- a/api/FilterLists.Data.Contracts/IListRepository.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace FilterLists.Data.Contracts -{ - public interface IListRepository - { - } -} \ No newline at end of file diff --git a/api/FilterLists.Data.Contracts/Repositories/IListRepository.cs b/api/FilterLists.Data.Contracts/Repositories/IListRepository.cs new file mode 100644 index 000000000..854f6b5d6 --- /dev/null +++ b/api/FilterLists.Data.Contracts/Repositories/IListRepository.cs @@ -0,0 +1,6 @@ +namespace FilterLists.Data.Contracts.Repositories +{ + public interface IListRepository + { + } +} \ No newline at end of file diff --git a/api/FilterLists.Data/Contexts/FilterListsDbContext.cs b/api/FilterLists.Data/Contexts/FilterListsDbContext.cs new file mode 100644 index 000000000..012a8c1e4 --- /dev/null +++ b/api/FilterLists.Data/Contexts/FilterListsDbContext.cs @@ -0,0 +1,20 @@ +using FilterLists.Data.Contracts.Contexts; +using FilterLists.Models; +using Microsoft.EntityFrameworkCore; + +namespace FilterLists.Data.Contexts +{ + public class FilterListsDbContext : DbContext, IFilterListsDbContext + { + public FilterListsDbContext(DbContextOptions options) + : base(options) + { + } + + public FilterListsDbContext() + { + } + + public DbSet Lists { get; set; } + } +} \ No newline at end of file diff --git a/api/FilterLists.Data/FilterListsContext.cs b/api/FilterLists.Data/FilterListsContext.cs deleted file mode 100644 index 9b46270ca..000000000 --- a/api/FilterLists.Data/FilterListsContext.cs +++ /dev/null @@ -1,19 +0,0 @@ -using FilterLists.Models; -using Microsoft.EntityFrameworkCore; - -namespace FilterLists.Data -{ - public class FilterListsContext : DbContext - { - public FilterListsContext(DbContextOptions options) - : base(options) - { - } - - public FilterListsContext() - { - } - - public DbSet Lists { get; set; } - } -} \ No newline at end of file diff --git a/api/FilterLists.Data/ListRepository.cs b/api/FilterLists.Data/ListRepository.cs deleted file mode 100644 index 02d9399f2..000000000 --- a/api/FilterLists.Data/ListRepository.cs +++ /dev/null @@ -1,12 +0,0 @@ -using FilterLists.Data.Contracts; -using FilterLists.Models; - -namespace FilterLists.Data -{ - public class ListRepository : Repository, IListRepository - { - public ListRepository(FilterListsContext context) : base(context) - { - } - } -} \ No newline at end of file diff --git a/api/FilterLists.Data/IRepository.cs b/api/FilterLists.Data/Repositories/IRepository.cs similarity index 90% rename from api/FilterLists.Data/IRepository.cs rename to api/FilterLists.Data/Repositories/IRepository.cs index ff56d8eb9..cf0a28715 100644 --- a/api/FilterLists.Data/IRepository.cs +++ b/api/FilterLists.Data/Repositories/IRepository.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; using FilterLists.Models; -namespace FilterLists.Data +namespace FilterLists.Data.Repositories { public interface IRepository where T : BaseEntity { diff --git a/api/FilterLists.Data/Repositories/ListRepository.cs b/api/FilterLists.Data/Repositories/ListRepository.cs new file mode 100644 index 000000000..7d34105ae --- /dev/null +++ b/api/FilterLists.Data/Repositories/ListRepository.cs @@ -0,0 +1,13 @@ +using FilterLists.Data.Contexts; +using FilterLists.Data.Contracts.Repositories; +using FilterLists.Models; + +namespace FilterLists.Data.Repositories +{ + public class ListRepository : Repository, IListRepository + { + public ListRepository(FilterListsDbContext context) : base(context) + { + } + } +} \ No newline at end of file diff --git a/api/FilterLists.Data/Repository.cs b/api/FilterLists.Data/Repositories/Repository.cs similarity index 87% rename from api/FilterLists.Data/Repository.cs rename to api/FilterLists.Data/Repositories/Repository.cs index 8d231ef91..50758914b 100644 --- a/api/FilterLists.Data/Repository.cs +++ b/api/FilterLists.Data/Repositories/Repository.cs @@ -3,17 +3,18 @@ using System; using System.Collections.Generic; using System.Linq; +using FilterLists.Data.Contexts; using FilterLists.Models; using Microsoft.EntityFrameworkCore; -namespace FilterLists.Data +namespace FilterLists.Data.Repositories { public class Repository : IRepository where T : BaseEntity { - private readonly FilterListsContext _context; + private readonly FilterListsDbContext _context; private readonly DbSet _entities; - public Repository(FilterListsContext context) + public Repository(FilterListsDbContext context) { _context = context; _entities = context.Set(); diff --git a/api/FilterLists.Models/List.cs b/api/FilterLists.Models/List.cs index 2ebf2235d..f7fcf103a 100644 --- a/api/FilterLists.Models/List.cs +++ b/api/FilterLists.Models/List.cs @@ -11,7 +11,7 @@ public class List : BaseEntity [StringLength(128)] [Column("email")] public string Email; [StringLength(512)] [Column("forum_url")] public string ForumUrl; [StringLength(512)] [Column("home_url")] public string HomeUrl; - [Key] [Column("id")] public int Id; + [Key] [Column("id")] public new int Id; [StringLength(512)] [Column("issues_url")] public string IssuesUrl; [StringLength(256)] [Column("name")] public string Name; [StringLength(512)] [Column("view_url")] public string ViewUrl; diff --git a/api/FilterLists.Services/FilterLists.Services.csproj b/api/FilterLists.Services/FilterLists.Services.csproj new file mode 100644 index 000000000..1c684d5a5 --- /dev/null +++ b/api/FilterLists.Services/FilterLists.Services.csproj @@ -0,0 +1,12 @@ + + + + netcoreapp1.1 + + + + + + + + \ No newline at end of file diff --git a/api/FilterLists.Services/IListService.cs b/api/FilterLists.Services/IListService.cs new file mode 100644 index 000000000..30be47ba2 --- /dev/null +++ b/api/FilterLists.Services/IListService.cs @@ -0,0 +1,10 @@ +using System.Linq; +using FilterLists.Models; + +namespace FilterLists.Services +{ + public interface IListService + { + IQueryable Lists { get; } + } +} \ No newline at end of file diff --git a/api/FilterLists.Services/ListService.cs b/api/FilterLists.Services/ListService.cs new file mode 100644 index 000000000..4fe9c7e37 --- /dev/null +++ b/api/FilterLists.Services/ListService.cs @@ -0,0 +1,18 @@ +using System.Linq; +using FilterLists.Data.Repositories; +using FilterLists.Models; + +namespace FilterLists.Services +{ + public class ListService : IListService + { + private readonly IRepository _listRepository; + + public ListService(IRepository listRepository) + { + _listRepository = listRepository; + } + + public IQueryable Lists => (IQueryable) _listRepository.GetAll(); + } +} \ No newline at end of file diff --git a/api/FilterLists.sln b/api/FilterLists.sln index 1aee0ff6f..0ec17ca4c 100644 --- a/api/FilterLists.sln +++ b/api/FilterLists.sln @@ -11,6 +11,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FilterLists.Models", "Filte EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FilterLists.Data.Contracts", "FilterLists.Data.Contracts\FilterLists.Data.Contracts.csproj", "{07A5064E-1CB9-4990-84F8-25A9A89B1D45}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FilterLists.Services", "FilterLists.Services\FilterLists.Services.csproj", "{9F296ECF-97C9-47E6-A794-5AD900ECFE6C}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -33,6 +35,10 @@ Global {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 + {9F296ECF-97C9-47E6-A794-5AD900ECFE6C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9F296ECF-97C9-47E6-A794-5AD900ECFE6C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9F296ECF-97C9-47E6-A794-5AD900ECFE6C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9F296ECF-97C9-47E6-A794-5AD900ECFE6C}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE