예제 #1
0
        public Term GenerateTerm(IQueryConverter queryConverter)
        {
            var replaceTerm = new Term()
            {
                type = Term.TermType.REPLACE,
            };

            replaceTerm.args.Add(getTerm.GenerateTerm(queryConverter));
            replaceTerm.args.Add(new Term()
            {
                type  = Term.TermType.DATUM,
                datum = queryConverter.Get <T>().ConvertObject(newObject)
            });

            AddOptionalArguments(replaceTerm);
            if (nonAtomic)
            {
                replaceTerm.optargs.Add(new Term.AssocPair()
                {
                    key = "non_atomic",
                    val = new Term()
                    {
                        type  = Term.TermType.DATUM,
                        datum = new Datum()
                        {
                            type   = Datum.DatumType.R_BOOL,
                            r_bool = nonAtomic
                        }
                    }
                });
            }

            return(replaceTerm);
        }
예제 #2
0
        public Term GenerateTerm(IQueryConverter queryConverter)
        {
            var deleteTerm = new Term()
            {
                type = Term.TermType.DELETE,
            };

            if (getTerm != null)
            {
                deleteTerm.args.Add(getTerm.GenerateTerm(queryConverter));
            }
            else if (tableTerm != null)
            {
                deleteTerm.args.Add(tableTerm.GenerateTerm(queryConverter));
            }
            AddOptionalArguments(deleteTerm);
            return(deleteTerm);
        }
예제 #3
0
        public Term GenerateTerm(IDatumConverterFactory datumConverterFactory)
        {
            var deleteTerm = new Term()
            {
                type = Term.TermType.DELETE,
            };

            if (getTerm != null)
            {
                deleteTerm.args.Add(getTerm.GenerateTerm(datumConverterFactory));
            }
            else if (tableTerm != null)
            {
                deleteTerm.args.Add(tableTerm.GenerateTerm(datumConverterFactory));
            }
            AddOptionalArguments(deleteTerm);
            return(deleteTerm);
        }
예제 #4
0
        public Term GenerateTerm(IQueryConverter queryConverter)
        {
            var updateTerm = new Term()
            {
                type = Term.TermType.UPDATE,
            };

            if (singleObjectTerm != null)
            {
                updateTerm.args.Add(singleObjectTerm.GenerateTerm(queryConverter));
            }
            else
            {
                updateTerm.args.Add(sequenceTerm.GenerateTerm(queryConverter));
            }

            updateTerm.args.Add(ExpressionUtils.CreateFunctionTerm <T, T>(queryConverter, updateExpression));

            AddOptionalArguments(updateTerm);
            if (nonAtomic)
            {
                updateTerm.optargs.Add(new Term.AssocPair()
                {
                    key = "non_atomic",
                    val = new Term()
                    {
                        type  = Term.TermType.DATUM,
                        datum = new Datum()
                        {
                            type   = Datum.DatumType.R_BOOL,
                            r_bool = nonAtomic
                        }
                    }
                });
            }

            return(updateTerm);
        }