/// <inheritdoc />
        public string BuildSelectStatement <T>(T dataModel) where T : class
        {
            if (dataModel == null)
            {
                throw new ArgumentNullException(nameof(dataModel));
            }

            var dataModelTable   = dataModel.GetThuriaDataModelTableName();
            var dataModelColumns = dataModel.GetThuriaDataModelColumns(DbContextAction.Retrieve);
            var whereCondition   = GetWhereConditionsForDataModel(DbContextAction.Retrieve, dataModel);

            string sqlStatement;

            lock (_selectBuilderLock)
            {
                _selectStatementBuilder.Clear();
                _selectStatementBuilder = _selectStatementBuilder.WithTable(dataModelTable);

                foreach (var currentColumn in dataModelColumns)
                {
                    var columnModel = new ColumnModel(dataModelTable, currentColumn.ColumnName, currentColumn.Alias);
                    _selectStatementBuilder.WithColumn(columnModel);
                }

                if (!string.IsNullOrWhiteSpace(whereCondition))
                {
                    _selectStatementBuilder.WithWhereCondition(whereCondition);
                }

                sqlStatement = _selectStatementBuilder.Build();
            }

            return(sqlStatement);
        }
        /// <summary>
        /// Helium Construct Select SQL Query Actor Constructor
        /// </summary>
        public HeliumConstructSelectSqlQueryActor(ISelectStatementBuilder selectStatementBuilder, IConditionBuilder conditionBuilder)
            : base(conditionBuilder)
        {
            _selectStatementBuilder = selectStatementBuilder ?? throw new ArgumentNullException(nameof(selectStatementBuilder));

            Receive <HeliumConstructSqlQueryMessage>(HandleConstructSqlQueryMessage, message => message.HeliumAction == HeliumAction.Retrieve);
        }
Exemple #3
0
        public static ISelectStatementBuilder Limit(this ISelectStatementBuilder builder, Action <ISelectLimitBuilder> limit)
        {
            var limitBuilder = new SelectLimitBuilder();

            limit(limitBuilder);

            return(builder.Limit(limitBuilder.Build()));
        }
Exemple #4
0
        public static ISelectStatementBuilder Query(this ISelectStatementBuilder builder, Action <IQueryExpressionBuilder> query)
        {
            var queryBuilder = new QueryExpressionBuilder();

            query(queryBuilder);

            return(builder.Query(queryBuilder.Build()));
        }
Exemple #5
0
        private IActorRef CreateActor(ISelectStatementBuilder statementBuilder = null, IConditionBuilder conditionBuilder = null)
        {
            var selectStatementBuilder = statementBuilder ?? Substitute.For <ISelectStatementBuilder>();
            var selectConditionBuilder = conditionBuilder ?? Substitute.For <IConditionBuilder>();

            var actorProps = Props.Create <HeliumConstructSelectSqlQueryActor>(selectStatementBuilder, selectConditionBuilder);

            return(Sys.ActorOf(actorProps, "Test"));
        }
 /// <summary>
 /// SQL Statement Build Provider Constructor
 /// </summary>
 /// <param name="selectStatementBuilder">Select Statement Builder</param>
 /// <param name="insertStatementBuilder">Insert Statement Builder</param>
 /// <param name="updateStatementBuilder">Update Statement Builder</param>
 /// <param name="conditionBuilder">Condition Builder</param>
 public SqlStatementBuildProvider(ISelectStatementBuilder selectStatementBuilder,
                                  IInsertStatementBuilder insertStatementBuilder,
                                  IUpdateStatementBuilder updateStatementBuilder,
                                  IConditionBuilder conditionBuilder)
 {
     _selectStatementBuilder = selectStatementBuilder ?? throw new ArgumentNullException(nameof(selectStatementBuilder));
     _insertStatementBuilder = insertStatementBuilder ?? throw new ArgumentNullException(nameof(insertStatementBuilder));
     _updateStatementBuilder = updateStatementBuilder ?? throw new ArgumentNullException(nameof(updateStatementBuilder));
     _conditionBuilder       = conditionBuilder ?? throw new ArgumentNullException(nameof(conditionBuilder));
 }
Exemple #7
0
        public static ISelectStatementBuilder OrderBy(this ISelectStatementBuilder builder, params Action <ISelectOrderBuilder>[] sort)
        {
            foreach (var action in sort)
            {
                var sortBuilder = new SelectOrderBuilder();
                action(sortBuilder);

                builder = builder.OrderBy(sortBuilder.Build());
            }

            return(builder);
        }
Exemple #8
0
        public void Constructor_GivenNullSelectStatementBuilder_ShouldThrowException()
        {
            //---------------Set up test pack-------------------
            ISelectStatementBuilder selectStatementBuilder = null;
            var conditionBuilder = Substitute.For <IConditionBuilder>();
            var actorProps       = Props.Create <HeliumConstructSelectSqlQueryActor>(selectStatementBuilder, conditionBuilder);

            //---------------Assert Precondition----------------
            //---------------Execute Test ----------------------
            EventFilter.Exception(typeof(ArgumentNullException), contains: "Parameter name: selectStatementBuilder", checkInnerExceptions: true)
            .Expect(1, () => Sys.ActorOf(actorProps, "Test"));
            //---------------Test Result -----------------------
        }