Get a blog post (testing mysql connection)

This commit is contained in:
Robert Marshall 2019-04-14 11:35:40 +01:00
parent 19c3c49f4d
commit 5a0d0933ce
6 changed files with 20 additions and 7 deletions

View file

@ -11,7 +11,9 @@
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets> <PrivateAssets>all</PrivateAssets>
</PackageReference> </PackageReference>
<PackageReference Include="fluentassertions" Version="5.6.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.0.1" /> <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.0.1" />
<PackageReference Include="nsubstitute" Version="4.0.0" />
<PackageReference Include="xunit" Version="2.4.0" /> <PackageReference Include="xunit" Version="2.4.0" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.0" /> <PackageReference Include="xunit.runner.visualstudio" Version="2.4.0" />
</ItemGroup> </ItemGroup>

View file

@ -25,7 +25,7 @@ namespace Website.Controllers
public async Task<IActionResult> View(int id) public async Task<IActionResult> View(int id)
{ {
var post = await _repo.GetPost(id); var post = await _repo.GetPostAsync(id);
return View(post); return View(post);
} }
} }

View file

@ -1,4 +1,6 @@
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Linq;
using Dapper;
using Website.Models; using Website.Models;
namespace Website.Data namespace Website.Data
@ -9,6 +11,13 @@ namespace Website.Data
public BlogRepository(DatabaseProvider dbProvider) => _dbProvider = dbProvider; public BlogRepository(DatabaseProvider dbProvider) => _dbProvider = dbProvider;
public Task<BlogPost> GetPost(int id) => Task.Run(() => new BlogPost{Id=id}); public async Task<BlogPost> GetPostAsync(int id) {
const string query = "SELECT * FROM blog_posts WHERE post_id=@id";
using (var connection = _dbProvider.NewConnection()) {
connection.Open();
var result = await connection.QueryAsync<BlogPost>(query, new{id});
return result.FirstOrDefault();
}
}
} }
} }

View file

@ -1,6 +1,6 @@
using System.Data; using System.Data;
using System.Data.SqlClient;
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration;
using MySql.Data.MySqlClient;
namespace Website.Data namespace Website.Data
{ {
@ -8,10 +8,10 @@ namespace Website.Data
{ {
private readonly string _connectionString; private readonly string _connectionString;
public DatabaseProvider(IConfiguration config) => _connectionString = config["connectionString"]; public DatabaseProvider(IConfiguration config) => _connectionString = config.GetConnectionString("database");
public DatabaseProvider(string connectionString) => _connectionString = connectionString; public DatabaseProvider(string connectionString) => _connectionString = connectionString;
public IDbConnection NewConnection() => new SqlConnection(_connectionString); public IDbConnection NewConnection() => new MySqlConnection(_connectionString);
} }
} }

View file

@ -2,6 +2,8 @@ namespace Website.Models
{ {
public class BlogPost public class BlogPost
{ {
public int Id { get; internal set; } public int PostId { get; set; }
public string PostTitle { get; set; }
public string Post_Title { get; set; }
} }
} }

View file

@ -5,4 +5,4 @@
ViewData["Title"] = "Blog"; ViewData["Title"] = "Blog";
} }
@Model.Id @Model.PostTitle