Add basic blog repo and models to test potential project structure
This commit is contained in:
parent
7703f9d8bb
commit
19c3c49f4d
10 changed files with 91 additions and 3 deletions
32
Website/Controllers/BlogController.cs
Normal file
32
Website/Controllers/BlogController.cs
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using Website.Data;
|
||||||
|
using Website.ViewModels;
|
||||||
|
|
||||||
|
namespace Website.Controllers
|
||||||
|
{
|
||||||
|
public class BlogController : Controller
|
||||||
|
{
|
||||||
|
private readonly BlogRepository _repo;
|
||||||
|
|
||||||
|
public BlogController(BlogRepository repo)
|
||||||
|
{
|
||||||
|
_repo = repo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public IActionResult Index()
|
||||||
|
{
|
||||||
|
return View();
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<IActionResult> View(int id)
|
||||||
|
{
|
||||||
|
var post = await _repo.GetPost(id);
|
||||||
|
return View(post);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -4,7 +4,7 @@ using System.Diagnostics;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Website.Models;
|
using Website.ViewModels;
|
||||||
|
|
||||||
namespace Website.Controllers
|
namespace Website.Controllers
|
||||||
{
|
{
|
||||||
|
|
14
Website/Data/BlogRepository.cs
Normal file
14
Website/Data/BlogRepository.cs
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Website.Models;
|
||||||
|
|
||||||
|
namespace Website.Data
|
||||||
|
{
|
||||||
|
public class BlogRepository
|
||||||
|
{
|
||||||
|
private readonly DatabaseProvider _dbProvider;
|
||||||
|
|
||||||
|
public BlogRepository(DatabaseProvider dbProvider) => _dbProvider = dbProvider;
|
||||||
|
|
||||||
|
public Task<BlogPost> GetPost(int id) => Task.Run(() => new BlogPost{Id=id});
|
||||||
|
}
|
||||||
|
}
|
17
Website/Data/DatabaseProvider.cs
Normal file
17
Website/Data/DatabaseProvider.cs
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
using System.Data;
|
||||||
|
using System.Data.SqlClient;
|
||||||
|
using Microsoft.Extensions.Configuration;
|
||||||
|
|
||||||
|
namespace Website.Data
|
||||||
|
{
|
||||||
|
public class DatabaseProvider
|
||||||
|
{
|
||||||
|
private readonly string _connectionString;
|
||||||
|
|
||||||
|
public DatabaseProvider(IConfiguration config) => _connectionString = config["connectionString"];
|
||||||
|
|
||||||
|
public DatabaseProvider(string connectionString) => _connectionString = connectionString;
|
||||||
|
|
||||||
|
public IDbConnection NewConnection() => new SqlConnection(_connectionString);
|
||||||
|
}
|
||||||
|
}
|
7
Website/Models/BlogPost.cs
Normal file
7
Website/Models/BlogPost.cs
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
namespace Website.Models
|
||||||
|
{
|
||||||
|
public class BlogPost
|
||||||
|
{
|
||||||
|
public int Id { get; internal set; }
|
||||||
|
}
|
||||||
|
}
|
|
@ -9,6 +9,7 @@ using Microsoft.AspNetCore.HttpsPolicy;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Microsoft.Extensions.Configuration;
|
using Microsoft.Extensions.Configuration;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
using Website.Data;
|
||||||
|
|
||||||
namespace Website
|
namespace Website
|
||||||
{
|
{
|
||||||
|
@ -31,10 +32,16 @@ namespace Website
|
||||||
options.MinimumSameSitePolicy = SameSiteMode.None;
|
options.MinimumSameSitePolicy = SameSiteMode.None;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
services.AddSingleton<IConfiguration>(Configuration);
|
||||||
|
RegisterRepositories(services);
|
||||||
|
|
||||||
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
|
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void RegisterRepositories(IServiceCollection services) =>
|
||||||
|
services.AddSingleton<DatabaseProvider, DatabaseProvider>()
|
||||||
|
.AddSingleton<BlogRepository, BlogRepository>();
|
||||||
|
|
||||||
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
|
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
|
||||||
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
|
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
using System;
|
using System;
|
||||||
|
|
||||||
namespace Website.Models
|
namespace Website.ViewModels
|
||||||
{
|
{
|
||||||
public class ErrorViewModel
|
public class ErrorViewModel
|
||||||
{
|
{
|
8
Website/Views/Blog/View.cshtml
Normal file
8
Website/Views/Blog/View.cshtml
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
@using Website.Models;
|
||||||
|
@model BlogPost;
|
||||||
|
|
||||||
|
@{
|
||||||
|
ViewData["Title"] = "Blog";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Model.Id
|
|
@ -1,3 +1,3 @@
|
||||||
@using Website
|
@using Website
|
||||||
@using Website.Models
|
@using Website.ViewModels
|
||||||
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
|
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
|
||||||
|
|
|
@ -7,8 +7,11 @@
|
||||||
|
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<PackageReference Include="dapper" Version="1.60.9" />
|
||||||
|
<PackageReference Include="dapper.contrib" Version="1.60.1" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.App" />
|
<PackageReference Include="Microsoft.AspNetCore.App" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.2.0" PrivateAssets="All" />
|
<PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.2.0" PrivateAssets="All" />
|
||||||
|
<PackageReference Include="mysqlconnector" Version="0.52.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue