public async Task <IEnumerable <CandleStick> > GetAll(CancellationToken cancellationToken)
        {
            var command = CreateCommand();

            command.CommandText = $"SELECT * FROM CandleSticks";

            var queryResult = new List <CandleStick>();

            using (var reader = await ExecuteReaderAsync(command, cancellationToken)){
                while (reader.Read())
                {
                    var candleStick = CandleStick.Create(
                        reader.GetInt32(1),
                        reader.GetInt64(2),
                        reader.GetInt64(3),
                        reader.GetInt64(4),
                        reader.GetInt64(5),
                        reader.GetDateTime(6)
                        );
                    candleStick.Id = reader.GetInt16(0);

                    queryResult.Add(candleStick);
                }
            }

            return(queryResult);
        }
        public async Task <CandleStick> GetById(int entityId, CancellationToken cancellationToken)
        {
            var command = CreateCommand();

            command.CommandText = $"SELECT * FROM CandleSticks WHERE Id = @Id";

            command.Parameters.Add(new SqlParameter("@Id", entityId));

            CandleStick entity;

            using (var reader = await ExecuteReaderAsync(command, cancellationToken)){
                if (!reader.Read())
                {
                    return(default(CandleStick));
                }

                var candleStick = CandleStick.Create(
                    reader.GetInt32(1),
                    reader.GetInt64(2),
                    reader.GetInt64(3),
                    reader.GetInt64(4),
                    reader.GetInt64(5),
                    reader.GetDateTime(6)
                    );
                candleStick.Id = reader.GetInt16(0);

                entity = candleStick;
            }

            return(entity);
        }
        public async Task <IEnumerable <CandleStick> > GetCandlesAtOrAfter(GetAfterCandleStickQuery query, CancellationToken cancellationToken)
        {
            var command = CreateCommand();

            command.CommandText = $"SELECT * FROM CandleSticks WHERE Date >= @Date";

            command.Parameters.Add(new SqlParameter("@Date", query.Date));

            var queryResult = new List <CandleStick>();

            using (var reader = await ExecuteReaderAsync(command, cancellationToken)){
                while (reader.Read())
                {
                    var candleStick = CandleStick.Create(
                        reader.GetInt32(1),
                        reader.GetInt64(2),
                        reader.GetInt64(3),
                        reader.GetInt64(4),
                        reader.GetInt64(5),
                        reader.GetDateTime(6)
                        );
                    candleStick.Id = reader.GetInt16(0);

                    queryResult.Add(candleStick);
                }
            }

            return(queryResult);
        }
        public async Task Handle(CreateCandleStickCommand command, CancellationToken cancellationToken)
        {
            var candleStick = CandleStick.Create(command.High, command.Open, command.Close, command.Low, command.Volume, command.Date);

            await _repository.Add(candleStick, cancellationToken);
        }