Get rid of DataQueryObject
This commit is contained in:
parent
ee5d91c61d
commit
a8e740f4fd
|
@ -13,7 +13,7 @@
|
|||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\include\MapTo\src\BlueWest.MapTo\BlueWest.MapTo.csproj" OutputItemType="Analyzer" ReferenceOutputAssembly="false"/>
|
||||
<ProjectReference Include="..\include\MapTo\src\BlueWest.MapTo\BlueWest.MapTo.csproj" OutputItemType="Analyzer" ReferenceOutputAssembly="false" />
|
||||
</ItemGroup>
|
||||
<Import Project="..\include\MapTo\src\BlueWest.MapTo\MapTo.props" />
|
||||
<ItemGroup>
|
||||
|
|
|
@ -1,35 +0,0 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace BlueWest.Data
|
||||
{
|
||||
public sealed class DataQueryResult<T>
|
||||
{
|
||||
public readonly T Value;
|
||||
public bool HasValue;
|
||||
public string Message;
|
||||
|
||||
public DataQueryResult(T value, bool success = true, string message = "")
|
||||
{
|
||||
Value = value;
|
||||
HasValue = success;
|
||||
Message = message;
|
||||
}
|
||||
}
|
||||
internal sealed class DataQueryResult
|
||||
{
|
||||
public readonly object Value;
|
||||
public bool HasValue;
|
||||
public string Message;
|
||||
|
||||
public DataQueryResult(object value, bool success = true, string message = "")
|
||||
{
|
||||
Value = value;
|
||||
HasValue = success;
|
||||
Message = message;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -13,9 +13,9 @@ namespace BlueWest.Data
|
|||
[MessagePackObject]
|
||||
[UseUpdate]
|
||||
[MapFrom(typeof(UserUpdateDto))]
|
||||
public partial class User
|
||||
public partial class User
|
||||
{
|
||||
[Key(1)] public TimeSpan Id { get; }
|
||||
[Key(1)] public TimeSpan Id { get; } = TimeSpan.Zero;
|
||||
[Key(2)] public string Name { get; set; }
|
||||
|
||||
|
||||
|
@ -28,6 +28,11 @@ namespace BlueWest.Data
|
|||
FinanceTransactions = financeTransactions;
|
||||
}
|
||||
|
||||
public User()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public void AddTransaction(FinanceTransaction financeTransaction)
|
||||
{
|
||||
FinanceTransactions.Add(FinanceTransactions.Count + 1, financeTransaction);
|
||||
|
|
|
@ -31,10 +31,10 @@ namespace BlueWest.Data
|
|||
return -1;
|
||||
}
|
||||
|
||||
public DataQueryResult<User> GetUserById(int id)
|
||||
public User GetUserById(int id)
|
||||
{
|
||||
if (Users.ContainsKey(id)) return new DataQueryResult<User>(Users[id], true);
|
||||
return new DataQueryResult<User>(null, false, "Can't find a user with the provided id.");
|
||||
if (Users.ContainsKey(id)) return Users[id];
|
||||
return new User();
|
||||
}
|
||||
|
||||
public bool RemoveUser(int userId)
|
||||
|
@ -53,27 +53,27 @@ namespace BlueWest.Data
|
|||
return Users.Contains(userId);
|
||||
}
|
||||
|
||||
public DataQueryResult<User> UpdateUser(int userId, UserUpdateDto userUpdate)
|
||||
public User UpdateUser(int userId, UserUpdateDto userUpdate)
|
||||
{
|
||||
if (Users.ContainsKey(userId))
|
||||
{
|
||||
Users[userId].Update(userUpdate);
|
||||
return new DataQueryResult<User>(Users[userId], true);
|
||||
return Users[userId];
|
||||
}
|
||||
|
||||
return new DataQueryResult<User>(null, false);
|
||||
return new User();
|
||||
}
|
||||
|
||||
|
||||
internal bool UserHasTransaction(int userId, int transactionId) => HasUser(userId) && Users[userId].FinanceTransactions.Contains(transactionId);
|
||||
|
||||
public DataQueryResult<FinanceTransaction> GetTransactionById(int userId, int transactionId)
|
||||
public FinanceTransaction GetTransactionById(int userId, int transactionId)
|
||||
{
|
||||
if(!HasUser(userId)) return new DataQueryResult<FinanceTransaction>(new FinanceTransaction(), false, "Can't find a user with the provided id.");
|
||||
if(!HasUser(userId)) return new FinanceTransaction();
|
||||
|
||||
if (UserHasTransaction(userId, transactionId)) return new DataQueryResult<FinanceTransaction>(Users[userId].FinanceTransactions[transactionId]);
|
||||
if (UserHasTransaction(userId, transactionId)) return Users[userId].FinanceTransactions[transactionId];
|
||||
|
||||
return new DataQueryResult<FinanceTransaction>(new FinanceTransaction(), false, "Can't find a transaction with the provided id.");
|
||||
return new FinanceTransaction();
|
||||
}
|
||||
|
||||
public User AddUser(int userId, UserUpdateDto userUpdateDto)
|
||||
|
@ -97,18 +97,17 @@ namespace BlueWest.Data
|
|||
|
||||
const string NoIdError = "No transaction was found with the specified id";
|
||||
|
||||
public DataQueryResult<FinanceTransaction> AddFinanceTransaction(int userId, FinanceTransactionInsertDto financeTransactionDto)
|
||||
public FinanceTransaction AddFinanceTransaction(int userId, FinanceTransactionInsertDto financeTransactionDto)
|
||||
{
|
||||
if (Users.ContainsKey(userId))
|
||||
{
|
||||
var now = TimeSpan.FromTicks(DateTime.Now.Ticks);
|
||||
var financeTransaction = new FinanceTransaction(financeTransactionDto, now, Users[userId].Id);
|
||||
Users[userId].AddTransaction(financeTransaction);
|
||||
return new DataQueryResult<FinanceTransaction>(financeTransaction);
|
||||
return financeTransaction;
|
||||
}
|
||||
|
||||
return new DataQueryResult<FinanceTransaction>(new FinanceTransaction(), false,
|
||||
"no transaction with the provided id");
|
||||
return new FinanceTransaction();
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -33,12 +33,11 @@ namespace BlueWest.WebApi.Controllers
|
|||
[HttpGet("{userId}", Name = nameof(GetUserById))]
|
||||
public ActionResult GetUserById(int userId)
|
||||
{
|
||||
DataQueryResult<User> user = MemoryData.GetUserById(userId);
|
||||
var user = MemoryData.GetUserById(userId);
|
||||
|
||||
if (user.HasValue)
|
||||
if (user.Id != TimeSpan.Zero)
|
||||
{
|
||||
return Ok(user.Value);
|
||||
|
||||
return Ok(user);
|
||||
}
|
||||
|
||||
return new NotFoundResult();
|
||||
|
@ -62,9 +61,9 @@ namespace BlueWest.WebApi.Controllers
|
|||
{
|
||||
var user = MemoryData.UserList.GetUserById(userId);
|
||||
|
||||
if(!user.HasValue) return new NotFoundResult();
|
||||
if(user.Id == TimeSpan.Zero) return new NotFoundResult();
|
||||
|
||||
var transactions = user?.Value.FinanceTransactions;
|
||||
var transactions = user.FinanceTransactions;
|
||||
|
||||
FinanceTransaction? transaction = transactions?.Values.ToImmutableArray().FirstOrNull(t => t.CreationDate == transactionId);
|
||||
|
||||
|
@ -117,9 +116,9 @@ namespace BlueWest.WebApi.Controllers
|
|||
[HttpPost("{userId}/transactions")]
|
||||
public ActionResult PostTransaction(int userId, FinanceTransactionInsertDto financeTransaction)
|
||||
{
|
||||
DataQueryResult<FinanceTransaction> result = MemoryData.UserList.AddFinanceTransaction(userId, financeTransaction);
|
||||
FinanceTransaction result = MemoryData.UserList.AddFinanceTransaction(userId, financeTransaction);
|
||||
|
||||
if(result.HasValue) return Ok(result.Value);
|
||||
if(result.UserId != TimeSpan.Zero) return Ok(result);
|
||||
|
||||
return new BadRequestResult();
|
||||
}
|
||||
|
|
|
@ -39,7 +39,7 @@ namespace PerformanceSolution.Data
|
|||
UserList ??= new UserList(new FastDictionary<int, User>());
|
||||
}
|
||||
|
||||
public static DataQueryResult<FinanceTransaction> GetTransactionById(int userId, int transactionId) => UserList.GetTransactionById(userId, transactionId);
|
||||
public static FinanceTransaction GetTransactionById(int userId, int transactionId) => UserList.GetTransactionById(userId, transactionId);
|
||||
|
||||
|
||||
private static void SaveUserList() => SaveUserList(UserList);
|
||||
|
@ -67,7 +67,7 @@ namespace PerformanceSolution.Data
|
|||
return new UserList(list);
|
||||
}
|
||||
|
||||
public static DataQueryResult<User> GetUserById(int userId)
|
||||
public static User GetUserById(int userId)
|
||||
{
|
||||
return UserList.GetUserById(userId);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue