mapper class and delete old stuff

This commit is contained in:
2022-06-12 21:45:46 -05:00
parent 4ca0b63564
commit ab8d0c4c7c
39 changed files with 325 additions and 818 deletions

View File

@@ -1,4 +1,6 @@
namespace Gameboard.ShogiUI.Sockets.Repositories.CouchModels
using Shogi.Domain;
namespace Gameboard.ShogiUI.Sockets.Repositories.CouchModels
{
public class SessionDocument : CouchDocument
{
@@ -17,12 +19,12 @@
Player2Id = string.Empty;
}
public SessionDocument(Models.SessionMetadata sessionMetaData)
public SessionDocument(SessionMetadata sessionMetaData)
: base(sessionMetaData.Name, WhichDocumentType.Session)
{
Name = sessionMetaData.Name;
Player1Id = sessionMetaData.Player1.Id;
Player2Id = sessionMetaData.Player2?.Id;
Player1Id = sessionMetaData.Player1;
Player2Id = sessionMetaData.Player2;
IsPrivate = sessionMetaData.IsPrivate;
}
}

View File

@@ -17,13 +17,13 @@ namespace Gameboard.ShogiUI.Sockets.Repositories
{
public interface IGameboardRepository
{
Task<bool> CreateBoardState(Session session);
Task<bool> CreateSession(Models.SessionMetadata session);
Task<bool> CreateUser(Models.User user);
Task<Collection<Models.SessionMetadata>> ReadSessionMetadatas();
Task CreateBoardState(Session session);
Task CreateSession(SessionMetadata session);
Task CreateUser(Models.User user);
Task<Collection<SessionMetadata>> ReadSessionMetadatas();
Task<Session?> ReadSession(string name);
Task<bool> UpdateSession(Models.SessionMetadata session);
Task<Models.SessionMetadata?> ReadSessionMetaData(string name);
Task UpdateSession(SessionMetadata session);
Task<SessionMetadata?> ReadSessionMetaData(string name);
Task<Models.User?> ReadUser(string userName);
}
@@ -48,7 +48,7 @@ namespace Gameboard.ShogiUI.Sockets.Repositories
this.logger = logger;
}
public async Task<Collection<Models.SessionMetadata>> ReadSessionMetadatas()
public async Task<Collection<SessionMetadata>> ReadSessionMetadatas()
{
var queryParams = new QueryBuilder { { "include_docs", "true" } }.ToQueryString();
var response = await client.GetAsync($"{View_SessionMetadata}{queryParams}");
@@ -57,7 +57,7 @@ namespace Gameboard.ShogiUI.Sockets.Repositories
if (result != null)
{
var groupedBySession = result.rows.GroupBy(row => row.id);
var sessions = new List<Models.SessionMetadata>(result.total_rows / 3);
var sessions = new List<SessionMetadata>(result.total_rows / 3);
foreach (var group in groupedBySession)
{
/**
@@ -72,12 +72,12 @@ namespace Gameboard.ShogiUI.Sockets.Repositories
if (session != null && player1Doc != null)
{
var player2 = player2Doc == null ? null : new Models.User(player2Doc);
sessions.Add(new Models.SessionMetadata(session.Name, session.IsPrivate, new(player1Doc), player2));
sessions.Add(new SessionMetadata(session.Name, session.IsPrivate, player1Doc.Id, player2?.Id));
}
}
return new Collection<Models.SessionMetadata>(sessions);
return new Collection<SessionMetadata>(sessions);
}
return new Collection<Models.SessionMetadata>(Array.Empty<Models.SessionMetadata>());
return new Collection<SessionMetadata>(Array.Empty<SessionMetadata>());
}
public async Task<Session?> ReadSession(string name)
@@ -130,7 +130,7 @@ namespace Gameboard.ShogiUI.Sockets.Repositories
return null;
}
public async Task<Models.SessionMetadata?> ReadSessionMetaData(string name)
public async Task<SessionMetadata?> ReadSessionMetaData(string name)
{
var queryParams = new QueryBuilder
{
@@ -159,7 +159,7 @@ namespace Gameboard.ShogiUI.Sockets.Repositories
if (session != null && player1Doc != null)
{
var player2 = player2Doc == null ? null : new Models.User(player2Doc);
return new Models.SessionMetadata(session.Name, session.IsPrivate, new(player1Doc), player2);
return new SessionMetadata(session.Name, session.IsPrivate, player1Doc.Id, player2?.Id);
}
}
return null;
@@ -168,22 +168,15 @@ namespace Gameboard.ShogiUI.Sockets.Repositories
/// <summary>
/// Saves a snapshot of board state and the most recent move.
/// </summary>
public async Task<bool> CreateBoardState(Session session)
public async Task CreateBoardState(Session session)
{
Piece? MapPiece(Shogi.Domain.Pieces.Piece? piece)
{
return piece == null
? null
: new Piece { IsPromoted = piece.IsPromoted, Owner = piece.Owner, WhichPiece = piece.WhichPiece };
}
var boardStateDocument = new BoardStateDocument(session.Name, session);
var content = new StringContent(JsonConvert.SerializeObject(boardStateDocument), Encoding.UTF8, ApplicationJson);
var response = await client.PostAsync(string.Empty, content);
return response.IsSuccessStatusCode;
response.EnsureSuccessStatusCode();
}
public async Task<bool> CreateSession(Models.SessionMetadata session)
public async Task CreateSession(SessionMetadata session)
{
var sessionDocument = new SessionDocument(session);
var sessionContent = new StringContent(JsonConvert.SerializeObject(sessionDocument), Encoding.UTF8, ApplicationJson);
@@ -195,16 +188,15 @@ namespace Gameboard.ShogiUI.Sockets.Repositories
if ((await postSessionDocumentTask).IsSuccessStatusCode)
{
var response = await client.PostAsync(string.Empty, boardStateContent);
return response.IsSuccessStatusCode;
response.EnsureSuccessStatusCode();
}
return false;
}
public async Task<bool> UpdateSession(Models.SessionMetadata session)
public async Task UpdateSession(SessionMetadata session)
{
// GET existing session to get revisionId.
var readResponse = await client.GetAsync(session.Name);
if (!readResponse.IsSuccessStatusCode) return false;
readResponse.EnsureSuccessStatusCode();
var sessionDocument = JsonConvert.DeserializeObject<SessionDocument>(await readResponse.Content.ReadAsStringAsync());
// PUT the document with the revisionId.
@@ -214,7 +206,7 @@ namespace Gameboard.ShogiUI.Sockets.Repositories
};
var content = new StringContent(JsonConvert.SerializeObject(couchModel), Encoding.UTF8, ApplicationJson);
var response = await client.PutAsync(couchModel.Id, content);
return response.IsSuccessStatusCode;
response.EnsureSuccessStatusCode();
}
//public async Task<bool> PutJoinPublicSession(PutJoinPublicSession request)
//{
@@ -285,12 +277,12 @@ namespace Gameboard.ShogiUI.Sockets.Repositories
return null;
}
public async Task<bool> CreateUser(Models.User user)
public async Task CreateUser(Models.User user)
{
var couchModel = new UserDocument(user.Id, user.DisplayName, user.LoginPlatform);
var content = new StringContent(JsonConvert.SerializeObject(couchModel), Encoding.UTF8, ApplicationJson);
var response = await client.PostAsync(string.Empty, content);
return response.IsSuccessStatusCode;
response.EnsureSuccessStatusCode();
}
public void ReadMoveHistory()