revamping domain

This commit is contained in:
2022-10-30 18:36:23 -05:00
parent b8ac227199
commit 689de35c3b
16 changed files with 161 additions and 105 deletions

View File

@@ -1,4 +1,5 @@
using Dapper;
using Shogi.Api.Repositories.Dto;
using Shogi.Domain;
using System.Data;
using System.Data.SqlClient;
@@ -8,30 +9,48 @@ namespace Shogi.Api.Repositories;
public class SessionRepository : ISessionRepository
{
private readonly string connectionString;
private readonly string connectionString;
public SessionRepository(IConfiguration configuration)
{
connectionString = configuration.GetConnectionString("ShogiDatabase");
}
public SessionRepository(IConfiguration configuration)
{
connectionString = configuration.GetConnectionString("ShogiDatabase");
}
public async Task CreateSession(Session session)
{
var initialBoardState = JsonSerializer.Serialize(session.BoardState);
using var connection = new SqlConnection(connectionString);
await connection.ExecuteAsync(
"session.CreateSession",
new
{
SessionName = session.Name,
Player1Name = session.Player1,
InitialBoardStateDocument = initialBoardState
},
commandType: CommandType.StoredProcedure);
}
public async Task CreateSession(ShogiBoard session, string player1)
{
var initialBoardState = JsonSerializer.Serialize(session.BoardState);
using var connection = new SqlConnection(connectionString);
await connection.ExecuteAsync(
"session.CreateSession",
new
{
SessionName = session.Name,
Player1Name = player1,
InitialBoardStateDocument = initialBoardState
},
commandType: CommandType.StoredProcedure);
}
public async Task ReadSession(string name)
{
using var connection = new SqlConnection(connectionString);
var results = await connection.QueryAsync<SessionDto>(
"session.ReadSession",
commandType: CommandType.StoredProcedure);
if (!results.Any())
{
return null;
}
var dto = results.First();
return new Session(
name: dto.Name,
initialState: JsonSerializer.Deserialize< dto.BoardState)
}
}
public interface ISessionRepository
{
Task CreateSession(Session session);
Task CreateSession(ShogiBoard session);
}