예제 #1
0
        public long ExecuteNonQuery(string queryText, ICollection <IParameter> parameters)
        {
            if (string.IsNullOrEmpty(queryText))
            {
                throw new ArgumentException("Value can not be null or empty string.", "queryText");
            }

            Query query = new Query();

            query.QueryText  = queryText;
            query.Parameters = (List <IParameter>)parameters;

            WriteQueryOperation writeQueryOperation = new WriteQueryOperation();

            writeQueryOperation.Database = _databaseName;
            //Collection Name Cannot be null(Protobuf)
            writeQueryOperation.Collection = "";
            writeQueryOperation.Query      = query;

            var writeQueryResponse = this.ExecutionMapper.ExecuteNonQuery(writeQueryOperation);

            if (writeQueryResponse.IsSuccessfull)
            {
                return(writeQueryResponse.AffectedDocuments);
            }
            else
            if (writeQueryResponse.ErrorParams != null && writeQueryResponse.ErrorParams.Length > 0)
            {
                throw new Exception(string.Format("Operation failed Error: " + Common.ErrorHandling.ErrorMessages.GetErrorMessage(writeQueryResponse.ErrorCode, writeQueryResponse.ErrorParams)));
            }
            throw new Exception("Operation failed Error: " + Common.ErrorHandling.ErrorMessages.GetErrorMessage(writeQueryResponse.ErrorCode));
        }
예제 #2
0
        public long ExecuteNonQuery(string queryText, ICollection<IParameter> parameters)
        {
            if (string.IsNullOrEmpty(queryText))
                throw new ArgumentNullException("queryText can not be null or empty string");

            if (typeof(T) == typeof(IJSONDocument) || typeof(T) == typeof(JSONDocument))
            {
                Type type;
                if (!JsonDocumentUtil.IsSupportedParameterType(parameters, out type))
                {
                    throw new ArgumentException(string.Format("Type {0} is not supported on Collection<JSONDocument>", type), "parameters");
                }
            }

            Query query = new Query();
            query.QueryText = queryText;
            query.Parameters = (List<IParameter>)parameters;

            WriteQueryOperation writeQueryOperation = new WriteQueryOperation();
            writeQueryOperation.Database = _database.DatabaseName;
            writeQueryOperation.Collection = _collectionName;
            writeQueryOperation.Query = query;
            var writeQueryResponse = _database.ExecutionMapper.ExecuteNonQuery(writeQueryOperation);

            if (writeQueryResponse.IsSuccessfull)
            {
                return writeQueryResponse.AffectedDocuments;
            }

            if (writeQueryResponse.ErrorParams != null && writeQueryResponse.ErrorParams.Length > 0)
                throw new Exception(string.Format("Operation failed Error :" + Common.ErrorHandling.ErrorMessages.GetErrorMessage(writeQueryResponse.ErrorCode, writeQueryResponse.ErrorParams)));

            throw new Exception("Operation failed Error: " +
                Common.ErrorHandling.ErrorMessages.GetErrorMessage(writeQueryResponse.ErrorCode));
        }
예제 #3
0
        public override void WriteJson(JsonWriter writer, object value, Newtonsoft.Json.JsonSerializer serializer)
        {
            writer.WriteStartObject();
            if (value is WriteQueryOperation)
            {
                WriteQueryOperation writeQueryOperation = value as WriteQueryOperation;
                if (writeQueryOperation != null)
                {
                    //writer.WriteStartObject();
                    writer.WritePropertyName("col");
                    serializer.Serialize(writer, writeQueryOperation.Collection);
                    writer.WritePropertyName("DB");
                    serializer.Serialize(writer, writeQueryOperation.Database);
                    writer.WritePropertyName("Query");
                    serializer.Serialize(writer, writeQueryOperation.Query);
                    writer.WritePropertyName("OpT");
                    serializer.Serialize(writer, writeQueryOperation.OperationType);
                    //writer.WriteEndObject();
                }
            }
            //else if (value is QueryLogOperation)
            //{
            //    QueryLogOperation operation = value as QueryLogOperation;
            //    writer.WritePropertyName("col");
            //    serializer.Serialize(writer, operation.Collection);
            //    writer.WritePropertyName("DB");
            //    serializer.Serialize(writer, operation.Database);
            //    writer.WritePropertyName("Operation");
            //    serializer.Serialize(writer, operation.Operation);
            //    writer.WritePropertyName("OpId");
            //    serializer.Serialize(writer, operation.OperationId);
            //    writer.WritePropertyName("OperationIdForIndex");
            //    serializer.Serialize(writer, operation.OperationIdForIndex);
            //    writer.WritePropertyName("OpT");
            //    serializer.Serialize(writer, operation.OperationType);
            //    writer.WritePropertyName("perf");
            //    serializer.Serialize(writer, operation.Performed);
            //    writer.WritePropertyName("rep");
            //    serializer.Serialize(writer, operation.Replicated);
            //    writer.WritePropertyName("lOpT");
            //    serializer.Serialize(writer, operation.LogOperationType);
            //    writer.WritePropertyName("req");
            //    serializer.Serialize(writer, operation.RequestId);
            //    writer.WritePropertyName("EId");
            //    serializer.Serialize(writer, operation.ElectionId);
            //    writer.WritePropertyName("ESeqId");
            //    serializer.Serialize(writer, operation.ElectionBasedSequenceId);
            //    //writer.WriteEndObject();
            //}

            writer.WriteEndObject();
        }
예제 #4
0
        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, Newtonsoft.Json.JsonSerializer serializer)
        {
            JObject jObject = JObject.Load(reader);
            DatabaseOperationType dbOperationType = (DatabaseOperationType)((int)jObject["OpT"]);

            switch (dbOperationType)
            {
            case DatabaseOperationType.WriteQuery:
                WriteQueryOperation writeQueryOperation = new WriteQueryOperation();
                serializer.Populate(jObject.CreateReader(), writeQueryOperation);
                return(writeQueryOperation);

            default:
                return(serializer.Deserialize(reader));
            }
        }