コード例 #1
0
        /// <summary>
        /// Without last and first commas and without both brackets.
        /// </summary>
        /// <param name="columns"></param>
        /// <returns></returns>
        public StringSQLBuilder AddInsertColumns(IEnumerable <string> columns)
        {
            var cBuilder = new ColumnsBuilder(this);

            Query = Query.Append(string.Join(",", columns));
            return(this);
        }
コード例 #2
0
        public string Emit(Table table)
        {
            if (table.DefaultValues == null)
            {
                return(string.Empty);
            }

            bool          bContainsIdentities;
            string        columns = new ColumnsBuilder(table).BuildDefaultValues(out bContainsIdentities);
            StringBuilder str     = new StringBuilder();

            if (bContainsIdentities)
            {
                str.AppendFormat("\nSET IDENTITY_INSERT {0} ON\n", table.Name);
            }
            str.Append("\n");
            foreach (DefaultValue val in table.DefaultValues.DefaultValueList)
            {
                str.Append(new TemplatePlatformEmitter("InsertDefaultValues", table.Name, columns, val.Value).Emit(val));
                str.Append("\n");
            }

            if (bContainsIdentities)
            {
                str.AppendFormat("\nSET IDENTITY_INSERT {0} OFF", table.Name);
            }

            str.Append("\n");
            return(str.ToString());
        }
コード例 #3
0
 protected void AddAuditableColumns(ColumnsBuilder table)
 {
     CreatedBy  = AddStringColumn(table, "CreatedBy", 256);
     CreatedOn  = AddDateTimeColumn(table, "CreatedOn");
     ModifiedBy = AddStringColumn(table, "ModifiedBy", 256);
     ModifiedOn = AddDateTimeColumn(table, "ModifiedOn");
 }
コード例 #4
0
 public ColumnsBuilderTest()
 {
     _columnConfigs  = new Dictionary <string, ColumnConfig>();
     _sortConfig     = new SortingConfig();
     _builderFactory = Substitute.For <IBuilderFactory>();
     _builder        = new ColumnsBuilder <TableEntity>(_columnConfigs, _sortConfig, _builderFactory);
 }
コード例 #5
0
ファイル: StringSQLBuilder.cs プロジェクト: NoxLP/AdminConta
        /// <summary>
        /// With open brackets, WITHOUT close brackets
        /// </summary>
        /// <param name="t"></param>
        /// <param name="tableAlias"></param>
        /// <returns></returns>
        public StringSQLBuilder InColumns(Type t, string tableAlias)
        {
            var cBuilder = new ColumnsBuilder(this);

            cBuilder.GetAllColumns(t, tableAlias);
            Query = Query.Append("IN (", Columns);
            return(this);
        }
コード例 #6
0
        /// <summary>
        /// With open brackets, WITHOUT close brackets
        /// </summary>
        /// <param name="t"></param>
        /// <param name="tableAlias"></param>
        /// <returns></returns>
        public StringSQLBuilder AddInColumns(Type t)
        {
            var cBuilder = new ColumnsBuilder(this);

            cBuilder.GetAllColumns(t);
            Query = Query.Append("IN (", Columns);
            return(this);
        }
コード例 #7
0
        /// <summary>
        /// Without last and first commas and without both brackets.
        /// </summary>
        /// <param name="t"></param>
        /// <returns></returns>
        public StringSQLBuilder AddInsertColumns(Type t)
        {
            var cBuilder = new ColumnsBuilder(this);

            cBuilder.GetAllColumnsWOId(t);
            Query = Query.Append(Columns);
            return(this);
        }
コード例 #8
0
        public StringSQLBuilder AddSelectColumns(Type t, string tableAlias, IEnumerable <string> columnsAlias)
        {
            var cBuilder = new ColumnsBuilder(this);

            cBuilder.GetAllColumns(t, tableAlias, columnsAlias);
            Query = Query.Append(",", Columns, " ");
            return(this);
        }
コード例 #9
0
        public StringSQLBuilder AddSelect(Type t, string tableAlias, IEnumerable <string> columnsAlias)
        {
            var cBuilder = new ColumnsBuilder(this);

            cBuilder.GetAllColumns(t, tableAlias, columnsAlias);
            Query = $"SELECT {Columns} ";
            return(this);
        }
コード例 #10
0
        public StringSQLBuilder AddSelect(Type t)
        {
            var cBuilder = new ColumnsBuilder(this);

            cBuilder.GetAllColumns(t);
            Query = $"SELECT {Columns} ";
            return(this);
        }
コード例 #11
0
ファイル: StringSQLBuilder.cs プロジェクト: NoxLP/AdminConta
        public StringSQLBuilder SelectColumns(Type t)
        {
            var cBuilder = new ColumnsBuilder(this);

            cBuilder.GetAllColumns(t);
            Query = Query.Append(",", Columns, " ");
            return(this);
        }
コード例 #12
0
ファイル: StringSQLBuilder.cs プロジェクト: NoxLP/AdminConta
        /// <summary>
        /// With open brackets, WITHOUT close brackets
        /// </summary>
        /// <param name="t"></param>
        /// <returns></returns>
        public StringSQLBuilder InParameters(Type t)
        {
            var cBuilder = new ColumnsBuilder(this);

            cBuilder.GetAllColumns(t);
            MakeColumnsParameters();
            Query = Query.Append("IN (", Columns);
            return(this);
        }
コード例 #13
0
ファイル: StringSQLBuilder.cs プロジェクト: NoxLP/AdminConta
        public StringSQLBuilder SelectColumns(Type t, string tableAlias, string columnsAlias)
        {
            var cBuilder = new ColumnsBuilder(this);

            string[] columnsAliasArray = new string[cBuilder.GetColumnsCount(t)];
            for (int i = 0; i < cBuilder.GetColumnsCount(t); i++)
            {
                columnsAliasArray[i] = columnsAlias;
            }
            cBuilder.GetAllColumns(t, tableAlias, columnsAliasArray);
            Query = Query.Append(",", Columns, " ");
            return(this);
        }
コード例 #14
0
        public void ColumnConfig()
        {
            ColumnsBuilder <TableEntity>      columnsBuilder = new ColumnsBuilder <TableEntity>(null, null, null);
            ColumnsBuilder <TableEntity>      actionBuilder  = null;
            Dictionary <string, ColumnConfig> config         = null;
            SortingConfig sortingConfig = null;

            _builderFactory.ColumnsBuilder <TableEntity>(Arg.Do <Dictionary <string, ColumnConfig> >(c => config = c),
                                                         Arg.Do <SortingConfig>(c => sortingConfig = c)).Returns(columnsBuilder);

            TableBuilder <TableEntity> builder = _builder.Columns(fb => actionBuilder = fb);

            this.RenderAndVerify();

            _builderFactory.Received(1).ColumnsBuilder <TableEntity>(Arg.Any <Dictionary <string, ColumnConfig> >(),
                                                                     Arg.Any <SortingConfig>());
            actionBuilder.Should().BeSameAs(columnsBuilder);
            config.Should().BeSameAs(_config.Columns);
            sortingConfig.Should().BeSameAs(_config.Sorting);
            builder.Should().BeSameAs(_builder);
        }
コード例 #15
0
        public virtual CreateTableBuilder <TColumns> CreateTable <TColumns>(
            [NotNull] string name,
            [NotNull] Func <ColumnsBuilder, TColumns> columns,
            [CanBeNull] string schema = null,
            [CanBeNull] Action <CreateTableBuilder <TColumns> > constraints = null)
        {
            Check.NotEmpty(name, nameof(name));
            Check.NotNull(columns, nameof(columns));

            var createTableOperation = new CreateTableOperation
            {
                Schema = schema,
                Name   = name
            };

            var columnsBuilder = new ColumnsBuilder(createTableOperation);
            var columnsObject  = columns(columnsBuilder);
            var columnMap      = new Dictionary <PropertyInfo, AddColumnOperation>();

            foreach (var property in typeof(TColumns).GetTypeInfo().DeclaredProperties)
            {
                var addColumnOperation = ((IAccessor <AddColumnOperation>)property.GetMethod.Invoke(columnsObject, null)).Service;
                if (addColumnOperation.Name == null)
                {
                    addColumnOperation.Name = property.Name;
                }
                columnMap.Add(property, addColumnOperation);
            }

            var builder = new CreateTableBuilder <TColumns>(createTableOperation, columnMap);

            if (constraints != null)
            {
                constraints(builder);
            }

            Operations.Add(createTableOperation);

            return(builder);
        }
コード例 #16
0
        public static CreateTableBuilder <TColumns> AppendColumns <TColumns>(this CreateTableOperation createTableOperation, Func <ColumnsBuilder, TColumns> columns, Action <CreateTableBuilder <TColumns> > constraints = null)
        {
            var columnsBuilder = new ColumnsBuilder(createTableOperation);

            var columnsObject = columns(columnsBuilder);
            var columnMap     = new Dictionary <PropertyInfo, AddColumnOperation>();

            foreach (var property in typeof(TColumns).GetTypeInfo().DeclaredProperties)
            {
                var addColumnOperation = ((IInfrastructure <AddColumnOperation>)property.GetMethod.Invoke(columnsObject, null)).Instance;
                if (addColumnOperation.Name == null)
                {
                    addColumnOperation.Name = property.Name;
                }

                columnMap.Add(property, addColumnOperation);
            }

            var builder = new CreateTableBuilder <TColumns>(createTableOperation, columnMap);

            constraints?.Invoke(builder);

            return(builder);
        }
コード例 #17
0
 protected abstract TEntityBuilder BuildTable(ColumnsBuilder table);
コード例 #18
0
 public override OperationBuilder <AddColumnOperation> AddAutoIncrementColumn(ColumnsBuilder table, string name)
 {
     return(table.Column <int>(name: name, nullable: false).Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityAlwaysColumn));
 }
コード例 #19
0
 protected void AddDeletableColumns(ColumnsBuilder table)
 {
     DeletedBy = AddStringColumn(table, "DeletedBy", 256, true);
     DeletedOn = AddDateTimeColumn(table, "DeletedOn", true);
     IsDeleted = AddBooleanColumn(table, "IsDeleted");
 }
コード例 #20
0
 public abstract OperationBuilder <AddColumnOperation> AddAutoIncrementColumn(ColumnsBuilder table, string name);
コード例 #21
0
 public override OperationBuilder <AddColumnOperation> AddAutoIncrementColumn(ColumnsBuilder table, string name)
 {
     return(table.Column <int>(name: name, nullable: false).Annotation("SqlServer:Identity", "1, 1"));
 }
コード例 #22
0
 public override OperationBuilder <AddColumnOperation> AddAutoIncrementColumn(ColumnsBuilder table, string name)
 {
     return(table.Column <int>(name: name, nullable: false).Annotation("Sqlite:Autoincrement", true));
 }
コード例 #23
0
 public static OperationBuilder <AddColumnOperation> PK_Column <TType>(this ColumnsBuilder table)
 {
     return(table.Column <TType>(nullable: false).Annotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn));
 }