Example #1
0
 public Int64 DeleteRow(Int64 queryId, Int64 sessionId, string rowHash)
 {
     using (OpenCloseConnectionWrapper wrapper = this.Connection.OpenWrapper())
     {
         return(ImplementDeleteRow(queryId, sessionId, rowHash, wrapper.Connection));
     }
 }
Example #2
0
        /// <summary>
        /// It's fast and not a thread-safety version of ReplaceRows method.
        /// TODO: remove it after sqlite thread-safety refactoring.
        /// </summary>
        /// <param name="rows"></param>
        /// <returns></returns>
        public Int64 ReplaceRowsTrans(IEnumerable <ITableRow> rows)
        {
            Int64 result = 0L;

            using (OpenCloseConnectionWrapper wrapper = this.Connection.OpenWrapper())
            {
                using (SQLiteTransaction transaction = wrapper.Connection.BeginTransaction())
                {
                    ReplaceCommand replaceCommand = new ReplaceCommand(
                        wrapper.Connection,
                        this.TableDefinition,
                        transaction
                        );

                    foreach (ITableRow row in rows)
                    {
                        replaceCommand.AddRowForReplacing(row);
                    }

                    result = replaceCommand.Execute(100);

                    transaction.Commit();
                }
            }

            return(result);
        }
Example #3
0
        public Int64 UpdateRowOrderByHash(
            Int64 queryId,
            Int64 sessionId,
            string rowHash,
            Int64 rowId
            )
        {
            using (OpenCloseConnectionWrapper wrapper = this.Connection.OpenWrapper())
            {
                // var updateCommand = new RowUpdateByHashCommand(this.Connection, this.TableDefinition);
                // var clause        = CommonRowFiller.GetIdentClause();
                // var parameters    = CommonRowFiller.GetIdentParameters(queryId, sessionId);
                //
                // var rowIdParam = new SQLiteParameter("@rowid", DbType.Int64)
                // {
                //    Value = rowId
                // };
                //
                // var newrowIdParam = new SQLiteParameter("@rowhash", DbType.String)
                // {
                //    Value = rowHash
                // };
                //
                // clause += " and [" + CommonRowFiller.RowHashFieldName + "] = @rowhash";
                // parameters.Add(rowIdParam);
                // parameters.Add(newrowIdParam);
                //
                // updateCommand.SetCommandConstraints(clause, parameters, "[" + CommonRowFiller.RowOrderFieldName + "] = @rowid", false, null);
                //
                // return updateCommand.Execute();

                return(ImplementUpdateRowOrderByHash(queryId, sessionId, rowHash, rowId, wrapper.Connection));
            }
        }
Example #4
0
 internal Int64 UpdateRowByHash(
     long queryId,
     long sessionId,
     string hashOld,
     ITableRow dataRow
     )
 {
     using (OpenCloseConnectionWrapper wrapper = this.Connection.OpenWrapper())
     {
         return(ImplementUpdateRow(
                    queryId,
                    sessionId,
                    hashOld,
                    dataRow,
                    wrapper.Connection
                    ));
     }
 }
Example #5
0
        private Int64 BulkOperation <T>(
            List <T> values,
            Func <SQLiteTransaction, SQLiteConnection, T, Int64> executeCommandFunc
            ) where T : class
        {
            Int64 itemsProcessed = 0L;

            using (OpenCloseConnectionWrapper wrapper = Connection.OpenWrapper())
            {
                using (SQLiteTransaction transaction = wrapper.Connection.BeginTransaction())
                {
                    itemsProcessed += values.Sum(val =>
                                                 executeCommandFunc(transaction, wrapper.Connection, val)
                                                 );

                    transaction.Commit();
                }
            }

            return(itemsProcessed);
        }