Restructured project.
This commit is contained in:
parent
54777c0a2d
commit
9c8d563aef
@ -1,5 +1,6 @@
|
||||
using Backend.DatabaseHandler;
|
||||
using Backend.ServiceHander;
|
||||
using Backend.Interface;
|
||||
using Microsoft.AspNetCore.HttpOverrides;
|
||||
|
||||
var builder = WebApplication.CreateBuilder(args);
|
||||
|
||||
@ -2,7 +2,7 @@ using Backend.ServiceHander;
|
||||
using Backend.MarketDataRequest;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace BackendApi.Controller
|
||||
namespace Backend.Controller
|
||||
{
|
||||
[ApiController]
|
||||
[Route("api/market")]
|
||||
|
||||
@ -1,13 +1,14 @@
|
||||
using Backend.DatabaseHandler;
|
||||
using Backend.UserInterests;
|
||||
using Backend.ServiceHander;
|
||||
using Backend.Interface;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace Backend.Controllers;
|
||||
|
||||
[ApiController]
|
||||
[Route("api/user-interest")]
|
||||
public sealed class UserInterestController : ControllerBase
|
||||
namespace Backend.Controllers
|
||||
{
|
||||
[ApiController]
|
||||
[Route("api/user-interest")]
|
||||
public sealed class UserInterestController : ControllerBase
|
||||
{
|
||||
private readonly IUserInterestStore _store;
|
||||
|
||||
public UserInterestController(IUserInterestStore store)
|
||||
@ -63,4 +64,5 @@ public sealed class UserInterestController : ControllerBase
|
||||
return BadRequest(ex.Message);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,8 +0,0 @@
|
||||
namespace Backend.DatabaseHandler;
|
||||
|
||||
public interface IUserInterestStore
|
||||
{
|
||||
Task<List<string>> FetchAllAsync(string user, string type);
|
||||
Task<bool> AddAsync(string user, string type, string value);
|
||||
Task<bool> RemoveAsync(string user, string type, string value);
|
||||
}
|
||||
@ -1,4 +1,5 @@
|
||||
using Backend.MarketDataRequest;
|
||||
using Backend.Interface;
|
||||
using Npgsql;
|
||||
|
||||
namespace Backend.DatabaseHandler
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
using Npgsql;
|
||||
using Backend.Interface;
|
||||
|
||||
namespace Backend.DatabaseHandler;
|
||||
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
using Backend.MarketDataRequest;
|
||||
using Backend.DatabaseHandler;
|
||||
|
||||
namespace Backend.DatabaseHandler
|
||||
namespace Backend.Interface
|
||||
{
|
||||
public interface IHistoricalMarketDataCache
|
||||
{
|
||||
9
Interface/IUserInterestCache.cs
Normal file
9
Interface/IUserInterestCache.cs
Normal file
@ -0,0 +1,9 @@
|
||||
namespace Backend.Interface
|
||||
{
|
||||
public interface IUserInterestStore
|
||||
{
|
||||
Task<List<string>> FetchAllAsync(string user, string type);
|
||||
Task<bool> AddAsync(string user, string type, string value);
|
||||
Task<bool> RemoveAsync(string user, string type, string value);
|
||||
}
|
||||
}
|
||||
@ -25,7 +25,7 @@ namespace Backend.MarketDataRequest
|
||||
private readonly ConcurrentDictionary<int, LiveEquitySnapshot> _liveSnapshotsByRequest = new();
|
||||
private readonly ConcurrentDictionary<int, TaskCompletionSource<LiveEquitySnapshot>> _liveRequests = new();
|
||||
|
||||
//Fundamentals data
|
||||
// Fundamentals data
|
||||
private readonly ConcurrentDictionary<int, FundamentalsEquitySnapshot> _fundamentalsSnapshotsByRequest = new();
|
||||
private readonly ConcurrentDictionary<int, TaskCompletionSource<FundamentalsEquitySnapshot>> _fundamentalsRequests = new();
|
||||
|
||||
@ -131,6 +131,7 @@ namespace Backend.MarketDataRequest
|
||||
|
||||
Console.WriteLine($"[error] id={id}, code={errorCode}, time={errorTime}, msg={errorMsg}");
|
||||
|
||||
// Live requests
|
||||
if (id > 0 && _liveRequests.TryRemove(id, out var liveTcs))
|
||||
{
|
||||
Client.cancelMktData(id);
|
||||
@ -141,6 +142,7 @@ namespace Backend.MarketDataRequest
|
||||
return;
|
||||
}
|
||||
|
||||
// Historical requests
|
||||
if (id > 0 && _historyRequests.TryRemove(id, out var historyTcs))
|
||||
{
|
||||
_BarsByRequest.TryRemove(id, out _);
|
||||
@ -150,6 +152,7 @@ namespace Backend.MarketDataRequest
|
||||
return;
|
||||
}
|
||||
|
||||
// Fundamentals
|
||||
if (id > 0 && _fundamentalsRequests.TryRemove(id, out var fundamentalsTcs))
|
||||
{
|
||||
Client.cancelMktData(id);
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
using Backend.DatabaseHandler;
|
||||
using Backend.MarketDataRequest;
|
||||
using Backend.Interface;
|
||||
using IBApi;
|
||||
using System.Globalization;
|
||||
|
||||
|
||||
25
ServiceHandler/UserInterestsHandler.cs
Normal file
25
ServiceHandler/UserInterestsHandler.cs
Normal file
@ -0,0 +1,25 @@
|
||||
namespace Backend.ServiceHander
|
||||
{
|
||||
public sealed class UserInterestFetchRequest
|
||||
{
|
||||
public string User { get; set; } = string.Empty;
|
||||
public string Type { get; set; } = string.Empty; // "symbol" or "topic"
|
||||
}
|
||||
|
||||
public sealed class UserInterestModifyRequest
|
||||
{
|
||||
public string User { get; set; } = string.Empty;
|
||||
public string Type { get; set; } = string.Empty; // "symbol" or "topic"
|
||||
public string Value { get; set; } = string.Empty; // symbol or topic
|
||||
}
|
||||
|
||||
public sealed class UserInterestFetchResponse
|
||||
{
|
||||
public List<string> Items { get; set; } = new();
|
||||
}
|
||||
|
||||
public sealed class BoolResponse
|
||||
{
|
||||
public bool Success { get; set; }
|
||||
}
|
||||
}
|
||||
@ -1,24 +0,0 @@
|
||||
namespace Backend.UserInterests;
|
||||
|
||||
public sealed class UserInterestFetchRequest
|
||||
{
|
||||
public string User { get; set; } = string.Empty;
|
||||
public string Type { get; set; } = string.Empty; // "symbol" or "topic"
|
||||
}
|
||||
|
||||
public sealed class UserInterestModifyRequest
|
||||
{
|
||||
public string User { get; set; } = string.Empty;
|
||||
public string Type { get; set; } = string.Empty; // "symbol" or "topic"
|
||||
public string Value { get; set; } = string.Empty; // symbol or topic
|
||||
}
|
||||
|
||||
public sealed class UserInterestFetchResponse
|
||||
{
|
||||
public List<string> Items { get; set; } = new();
|
||||
}
|
||||
|
||||
public sealed class BoolResponse
|
||||
{
|
||||
public bool Success { get; set; }
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user