예제 #1
0
        public virtual QueryCompilation Compile()
        {
            QueryCompilation result;
            string           whereSegment, columnSegment, query;
            ICollection <KeyValuePair <string, object> > fieldParameters;
            IEnumerable <KeyValuePair <string, object> > allParameters;
            FilterCompilation filterCompilation;
            IParameterBuilder parameterBuilder;

            Asserts.stringIsNotEmpty(this.table);

            parameterBuilder  = this.parameterBuilderFactory.buildInstance();
            filterCompilation = this.filter.Compile(parameterBuilder);
            whereSegment      = filterCompilation.FilterSegment;
            whereSegment      = string.IsNullOrWhiteSpace(whereSegment) ? "" : $"WHERE ({whereSegment})";

            fieldParameters = Parameters.start();

            columnSegment = this.fields
                            .Stringify(field =>
            {
                string fieldResult, parameter;

                parameter = parameterBuilder.buildParameter("update_" + field.Key);
                fieldParameters.push(parameter, field.Value);

                fieldResult = $" [{field.Key}] = {parameter} ";

                return(fieldResult);
            });

            query = $@"
                UPDATE {this.prefix}[{this.table}]
                SET {columnSegment}
                {whereSegment}
                ;";

            allParameters = fieldParameters.Concat(filterCompilation.Parameters);

            result = new QueryCompilation(query, allParameters);

            return(result);
        }
예제 #2
0
        public virtual QueryCompilation Compile()
        {
            QueryCompilation result;
            string           query;
            string           whereSegment, columnsSegment, mainTable;
            IList <IEnumerable <string> > allColumns;
            IEnumerable <string>          tableColumns;
            FilterCompilation             filterCompilation;
            IParameterBuilder             parameterBuilder;

            Asserts.stringIsNotEmpty(this.table);

            parameterBuilder  = this.parameterBuilderFactory.buildInstance();
            filterCompilation = this.filter.Compile(parameterBuilder);
            whereSegment      = filterCompilation.FilterSegment;
            whereSegment      = string.IsNullOrWhiteSpace(whereSegment) ? "" : $"WHERE ({whereSegment})";

            mainTable    = "t0";
            allColumns   = new List <IEnumerable <string> >();
            tableColumns = prv_prepareColumns(mainTable, this.columns);
            allColumns.Add(tableColumns);

            Asserts.isTrue(allColumns.Any());

            columnsSegment = allColumns
                             .SelectMany(c => c)
                             .Stringify()
            ;

            query = $@"
                SELECT {columnsSegment}
                FROM {this.prefix}[{Table}] as {mainTable}
                {whereSegment}
                ;";

            result = new QueryCompilation(query, filterCompilation.Parameters);

            return(result);
        }
예제 #3
0
        public virtual QueryCompilation Compile()
        {
            QueryCompilation             result;
            string                       columnsSegment, valuesSegment, query;
            IDictionary <string, object> parameters;
            IParameterBuilder            parameterBuilder;

            Asserts.stringIsNotEmpty(this.table);

            parameterBuilder = this.parameterBuilderFactory.buildInstance();
            parameters       = this.fields.ToDictionary(f => parameterBuilder.buildParameter("insert_" + f.Key), f => f.Value);
            columnsSegment   = this.fields.Keys.Stringify(f => $" [{f}] ");
            valuesSegment    = parameters.Keys.Stringify();

            query = $@"
                INSERT INTO {this.prefix}[{this.table}] ({columnsSegment})
                VALUES ({valuesSegment})
                ;";

            result = new QueryCompilation(query, parameters);

            return(result);
        }
예제 #4
0
        public virtual QueryCompilation Compile()
        {
            QueryCompilation  result;
            string            whereSegment, query;
            FilterCompilation filterCompilation;
            IParameterBuilder parameterBuilder;

            Asserts.stringIsNotEmpty(this.Table);

            parameterBuilder  = this.parameterBuilderFactory.buildInstance();
            filterCompilation = this.filter.Compile(parameterBuilder);

            whereSegment = filterCompilation.FilterSegment;
            whereSegment = string.IsNullOrWhiteSpace(whereSegment) ? "" : $"WHERE ({whereSegment})";

            query = $@"
                DELETE FROM {this.prefix}[{this.table}]
                {whereSegment}
                ;";

            result = new QueryCompilation(query, filterCompilation.Parameters);

            return(result);
        }