コード例 #1
0
        public Dictionary <string, string> ToHeaders()
        {
            var headers        = new Dictionary <string, string>();
            var prefersHeaders = new List <string>();

            if (Upsert)
            {
                var resolverAttr = DuplicateResolution.GetAttribute <MapToAttribute>();
                prefersHeaders.Add($"resolution={resolverAttr.Mapping}");
            }

            var returnAttr = Returning.GetAttribute <MapToAttribute>();

            if (returnAttr != null)
            {
                prefersHeaders.Add($"return={returnAttr.Mapping}");
            }

            var countAttr = Count.GetAttribute <MapToAttribute>();

            if (Count != CountType.None && countAttr != null)
            {
                prefersHeaders.Add($"count={countAttr.Mapping}");
            }

            headers.Add("Prefer", String.Join(",", prefersHeaders.ToArray()));

            if (Returning == ReturnType.Minimal)
            {
                headers.Add("Accept", "*/*");
            }

            return(headers);
        }
コード例 #2
0
ファイル: TypeTests.cs プロジェクト: windischb/PgSql
        public void Test2()
        {
            var tbd = TableDefinition.FromType <TypeTestModel>();

            var table = GetSchema().CreateTable("Test1", tbd);
            var model = new TypeTestModel();

            model.String = "Testing...";

            var statement = doob.PgSql.Statements.Insert.Into("TestTable")
                            .AddColumnsFromTableDefinition(tbd)
                            .AddValuesFromObject(model)
                            .AddClause(Returning.Columns(tbd.PrimaryKeys().Select(p => p.GetNameForDb()).ToArray()));

            var sql = statement.GetSqlCommand(tbd);



            table.Insert(model);


            var executor = new DbExecuter(table.GetConnectionString());


            var resp = executor.ExecuteReader <TypeTestModel>($"SELECT * FROM {table}");
        }
コード例 #3
0
        public Returning MakeReturningResult(SqlDataReader reader)
        {
            var model = new Returning();

            if (reader.ColumnExists("Id"))
            {
                model.Id = reader["Id"] is DBNull
                ? Guid.Empty
                : Guid.Parse(reader["Id"].ToString());
            }

            if (reader.ColumnExists("ProductId"))
            {
                model.ProductId = reader["ProductId"] is DBNull
                ? Guid.Empty
                : Guid.Parse(reader["ProductId"].ToString());
            }

            if (reader.ColumnExists("RealizationId"))
            {
                model.RealizationId = reader["RealizationId"] is DBNull
                ? Guid.Empty
                : Guid.Parse(reader["RealizationId"].ToString());
            }


            if (reader.ColumnExists("EmployeeId"))
            {
                model.EmployeeId = reader["EmployeeId"] is DBNull
                ? Guid.Empty
                : Guid.Parse(reader["EmployeeId"].ToString());
            }

            if (reader.ColumnExists("Date"))
            {
                model.Date = reader["Date"] is DBNull
                ? DateTime.MaxValue
                : Convert.ToDateTime(reader["Date"], CultureInfo.CurrentCulture);
            }

            if (reader.ColumnExists("IsDefected"))
            {
                model.IsDefected = reader["IsDefected"] is DBNull
                ? false
                : Convert.ToBoolean(reader["IsDefected"], CultureInfo.CurrentCulture);
            }
            return(model);
        }
コード例 #4
0
ファイル: BaseTable.cs プロジェクト: windischb/PgSql
        protected Dictionary <string, object> Insert(object document, List <string> returnValues)
        {
            var dict = document.ToDotNetDictionary();

            foreach (var col in TableDefinition.Columns())
            {
                if (!col.CanBeNull && !String.IsNullOrWhiteSpace(col.DefaultValue))
                {
                    if (dict.ContainsKey(col.GetNameForDb()))
                    {
                        if (dict[col.GetNameForDb()] == null)
                        {
                            dict.Remove(col.GetNameForDb());
                            continue;
                        }

                        if (dict[col.GetNameForDb()] is long l)
                        {
                            if (l == 0)
                            {
                                dict.Remove(col.GetNameForDb());
                                continue;
                            }
                        }
                    }
                }
            }

            var insert = Statements.Insert.Into(GetTableName())
                         .AddColumnsFromTableDefinition(TableDefinition)
                         .AddValuesFromObject(dict);


            if (returnValues == null || !returnValues.Any())
            {
                returnValues = TableDefinition.PrimaryKeys().Select(p => p.DbName).ToList();
            }

            if (returnValues.Any())
            {
                insert.AddClause(Returning.Columns(returnValues.ToArray()));
            }

            return(Execute().ExecuteReader <Dictionary <string, object> >(insert.GetSqlCommand(TableDefinition)).FirstOrDefault());
        }
コード例 #5
0
ファイル: Delete.cs プロジェクト: windischb/PgSql
        public Delete AddClause(IDeleteMember clause)
        {
            switch (clause)
            {
            case From from:
                _fromClause = from;
                break;

            case IWhere where:
                _whereClause = where;
                break;

            case Returning returning:
                _returning = returning;
                break;
            }

            return(this);
        }
コード例 #6
0
ファイル: Insert.cs プロジェクト: windischb/PgSql
        public Insert AddClause(IInsertMember clause)
        {
            switch (clause)
            {
            case IntoColumns ic:
                _intoColumns = ic;
                break;

            case IValues val:
                _valueClauses.Add(val);
                break;

            case Returning ret:
                _returningClause = ret;
                break;
            }

            return(this);
        }
コード例 #7
0
ファイル: TypeTests.cs プロジェクト: windischb/PgSql
        public void Test1()
        {
            var tbd = TableDefinition.FromType <TypeTestModel>();

            var table = GetSchema().CreateTable("Test1", tbd);
            var model = new TypeTestModel();

            model.String = "Testing...";

            var statement = doob.PgSql.Statements.Insert.Into("TestTable")
                            .AddColumnsFromTableDefinition(tbd)
                            .AddValuesFromObject(model)
                            .AddClause(Returning.Columns(tbd.PrimaryKeys().Select(p => p.GetNameForDb()).ToArray()));

            var sql = statement.GetSqlCommand(tbd);



            table.Insert(model);
        }
コード例 #8
0
        private void ReturningConfirmationForm_Load(object sender, EventArgs e)
        {
            Realization currentRealization = Seller.Instance.UnitOfWork.RealizationRepository.GetRealizationById(Guid.Parse(_realizationId));

            //
            _returning = new Returning()
            {
                EmployeeId    = Seller.Instance.Id,
                ProductId     = currentRealization.ProductId,
                RealizationId = currentRealization.Id
            };

            Product currentProduct = Seller.Instance.UnitOfWork.ProductRepository.GetProductById(currentRealization.ProductId);

            //fill text box
            txtRetRelizId.Text    = currentRealization.Id.ToString();
            txtRetProdCode.Text   = currentProduct.Code;
            txtRetProdName.Text   = currentProduct.Name;
            txtRetQuontity.Text   = currentRealization.Quantity.ToString();
            txtRetIncome.Text     = currentRealization.Income.ToString();
            txtRetDate.Text       = currentRealization.Date.ToString("d");
            txtRetSellerName.Text = Seller.Instance.LastName + "  " + Seller.Instance.FirstName;
        }
コード例 #9
0
ファイル: Delete.cs プロジェクト: windischb/PgSql
 public Delete Returning(Returning returning)
 {
     return(AddClause(returning));
 }
コード例 #10
0
ファイル: Insert.cs プロジェクト: windischb/PgSql
 public Insert Returning(Returning returning)
 {
     return(AddClause(returning));
 }