/// <summary> /// 親または子を作成するコンストラクタ /// </summary> /// <param name="logger">ロガー</param> /// <param name="dbContext">DB接続</param> /// <param name="timeScales">時間足リスト、時間が短い順</param> /// <param name="board">板情報</param> CandleMaker(ILogger logger, ApplicationDbContext dbContext, MTimeScale timeScale, MBoard board) { logger.LogInformation($"CandleMaker親子作成:{board.Name} {timeScale.DisplayName}"); Logger = logger; Children = new List <CandleMaker>(); DbContext = dbContext; CandleList = new List <Candle>(); TimeScale = timeScale; Board = board; }
/// <summary> /// DB確認して、データが無ければ初期データを入れる /// これは1か所でやらないとダメ /// 外部キーを含むデータを先に登録すると、そのキーの空データが登録されてしまうので /// 外部キーデータの登録が先になるように登録順を工夫する必要もあることに注意 /// </summary> /// <returns></returns> private async Task InitializeDatabaseAsync() { // DB確認して、データが無ければ初期データを入れる if (DbContext.MCurrencies.ToList().Count == 0) { Logger.LogInformation("通貨データがありません。初期値を登録します。"); var array = new List <string[]>(); var section = Configuration.GetSection("DefaultParameters"); section.Bind("MCurrency", array); foreach (var item in array) { var data = new MCurrency { MCurrencyId = int.Parse(item[0]), Name = item[1], DisplayName = item[2] }; DbContext.MCurrencies.Add(data); } await DbContext.SaveChangesAsync(SystemConstants.SystemName); } if (DbContext.MBoards.ToList().Count == 0) { Logger.LogInformation("板データがありません。初期値を登録します。"); var array = new List <string[]>(); var section = Configuration.GetSection("DefaultParameters"); section.Bind("MBoard", array); foreach (var item in array) { var data = new MBoard { MBoardId = int.Parse(item[0]), Name = item[1], DisplayName = item[2], MCurrency1 = new MCurrency { MCurrencyId = int.Parse(item[3]) }, MCurrency2 = new MCurrency { MCurrencyId = int.Parse(item[4]) } }; DbContext.MBoards.Add(data); } await DbContext.SaveChangesAsync(SystemConstants.SystemName); } if (DbContext.MTimeScales.ToList().Count == 0) { Logger.LogInformation("時間足データがありません。初期値を登録します。"); var array = new List <string[]>(); var section = Configuration.GetSection("DefaultParameters"); section.Bind("MTimeScale", array); foreach (var item in array) { var data = new MTimeScale { Id = int.Parse(item[0]), DisplayName = item[1], SecondsValue = int.Parse(item[2]) }; DbContext.MTimeScales.Add(data); } await DbContext.SaveChangesAsync(SystemConstants.SystemName); } if (DbContext.MWebSockets.ToList().Count == 0) { Logger.LogInformation("WebSocketデータがありません。初期値を登録します。"); var array = new List <string[]>(); var section = Configuration.GetSection("DefaultParameters"); section.Bind("MWebSocket", array); foreach (var item in array) { var data = new MWebSocket { Id = int.Parse(item[0]), MBoard = new MBoard { MBoardId = int.Parse(item[1]) }, Category = int.Parse(item[2]), EndPoint = item[3], ChannelName = item[4], IsEnabled = int.Parse(item[5]) == 1 }; DbContext.MWebSockets.Add(data); } DbContext.SaveChanges(SystemConstants.SystemName); } }