示例#1
0
        public override void InnerRun(Dictionary <string, object> vars, Dictionary <string, object> outputVars, Dictionary <string, object> InvertedInputVars, Message message)
        {
            COREobject core    = COREobject.i;
            DBEntities context = core.Context;

            try
            {
                string dbName    = (string)vars["dbName"];
                string tableName = (string)vars["TableName"];
                JToken data      = (JToken)vars["Data"];
                object where = (object)vars["Where"];

                if (where == null || (where is String && string.IsNullOrEmpty((string)where)))
                {
                    throw new Exception(string.Format("{0}: where is missing. You must provide where clausule or rethingDB item id", Name));
                }

                ExtDB dbInfo = context.ExtDBs.Where(d => d.DB_Alias == dbName).SingleOrDefault();
                if (dbInfo == null)
                {
                    throw new Exception(string.Format("{0}: Integration was not found", Name));
                }

                NexusExtDBBaseService service;
                switch (dbInfo.DB_Type)
                {
                case ExtDBType.RethinkDB:
                    service = new NexusExtDBRethingService(dbInfo);
                    break;

                default:
                    service = (new NexusExtDBService(dbInfo.DB_Server, dbInfo.DB_Alias)).NewQuery("");
                    break;
                }

                NexusExtDBResult result = service.Update(tableName, data, where);

                if (result.Errors == 0)
                {
                    outputVars["Result"] = result.Replaced;
                    outputVars["Error"]  = false;
                }
                else
                {
                    outputVars["Result"] = result.FirstError;
                    outputVars["Error"]  = true;

                    OmniusException.Log(result.FirstError, OmniusLogSource.Nexus, null, core.Application, core.User);
                }
            }
            catch (Exception e)
            {
                string errorMsg = e.Message;
                OmniusException.Log(e, OmniusLogSource.Nexus, core.Application, core.User);
                outputVars["Result"] = String.Empty;
                outputVars["Error"]  = true;
            }
        }
示例#2
0
        public override void InnerRun(Dictionary <string, object> vars, Dictionary <string, object> outputVars, Dictionary <string, object> InvertedInputVars, Message message)
        {
            COREobject core    = COREobject.i;
            DBEntities context = core.Context;

            try
            {
                string dbName    = (string)vars["dbName"];
                string tableName = (string)vars["TableName"];
                JToken data      = (JToken)vars["Data"];

                ExtDB dbInfo = context.ExtDBs.Where(d => d.DB_Alias == dbName).SingleOrDefault();
                if (dbInfo == null)
                {
                    throw new Exception(string.Format("{0}: Integration was not found", Name));
                }

                NexusExtDBBaseService service;
                switch (dbInfo.DB_Type)
                {
                case ExtDBType.RethinkDB:
                    service = new NexusExtDBRethingService(dbInfo);
                    break;

                default:
                    service = (new NexusExtDBService(dbInfo.DB_Server, dbInfo.DB_Alias)).NewQuery("");
                    break;
                }

                NexusExtDBResult result = service.Insert(tableName, data);

                if (result.Errors == 0)
                {
                    outputVars["Result"] = result.GeneratedKeys.Count > 0 ? result.GeneratedKeys[0] : "";
                    outputVars["Error"]  = false;
                }
                else
                {
                    outputVars["Result"] = result.FirstError;
                    outputVars["Error"]  = true;

                    OmniusException.Log(result.FirstError, OmniusLogSource.Nexus, null, core.Application, core.User);
                }
            }
            catch (Exception e)
            {
                OmniusException.Log(e, OmniusLogSource.Nexus, core.Application, core.User);
                outputVars["Result"] = String.Empty;
                outputVars["Error"]  = true;
            }
        }
示例#3
0
        public override void InnerRun(Dictionary <string, object> vars, Dictionary <string, object> outputVars, Dictionary <string, object> InvertedInputVars, Message message)
        {
            COREobject core    = COREobject.i;
            DBEntities context = core.Context;

            try
            {
                string dbName    = (string)vars["dbName"];
                string tableName = (string)vars["TableName"];

                ExtDB dbInfo = context.ExtDBs.Where(d => d.DB_Alias == dbName).SingleOrDefault();
                if (dbInfo == null)
                {
                    throw new Exception(string.Format("{0}: Integration was not found", Name));
                }

                bool isOrderedByIndex = (vars.ContainsKey("OrderByIndex")) ? Convert.ToBoolean(vars["OrderByIndex"]) : false;

                NexusExtDBBaseService service;
                switch (dbInfo.DB_Type)
                {
                case ExtDBType.RethinkDB:
                    service = new NexusExtDBRethingService(dbInfo);
                    break;

                default:
                    service = (new NexusExtDBService(dbInfo.DB_Server, dbInfo.DB_Alias)).NewQuery("").Select("*");
                    break;
                }

                var query = service.From(tableName);

                if (service is NexusExtDBRethingService && vars.ContainsKey("OrderBy"))
                {
                    string orderBy = (string)vars["OrderBy"];
                    if (!string.IsNullOrEmpty(orderBy))
                    {
                        query = isOrderedByIndex ? query.OrderBy($"index:{orderBy}") : query.OrderBy(orderBy);
                    }
                }
                int condCount = vars.Keys.Where(k => k.StartsWith("CondColumn[") && k.EndsWith("]")).Count();
                if (condCount > 0)
                {
                    JArray cond = new JArray();
                    // setConditions
                    for (int i = 0; i < condCount; i++)
                    {
                        string condOperator = vars.ContainsKey($"CondOperator[{i}]") ? (string)vars[$"CondOperator[{i}]"] : "eq";
                        string condColumn   = (string)vars[$"CondColumn[{i}]"];
                        object condValue    = vars[$"CondValue[{i}]"];

                        var c = new JObject();
                        c["column"]   = condColumn;
                        c["operator"] = condOperator;
                        c["value"]    = JToken.FromObject(condValue);

                        cond.Add(c);
                    }
                    query = query.Where(cond);
                }

                if (service is NexusExtDBService && vars.ContainsKey("OrderBy"))
                {
                    string orderBy = (string)vars["OrderBy"];
                    if (!string.IsNullOrEmpty(orderBy))
                    {
                        query = query.OrderBy(orderBy);
                    }
                }

                if (vars.ContainsKey("Limit"))
                {
                    query = query.Limit((int)vars["Limit"]);
                }
                if (vars.ContainsKey("Skip"))
                {
                    query = query.Offset((int)vars["Skip"]);
                }

                var data = query.FetchAll();
                outputVars["Result"] = data;
                outputVars["Error"]  = false;
            }
            catch (Exception e)
            {
                OmniusException.Log(e, OmniusLogSource.Nexus, core.Application, core.User);
                outputVars["Result"] = String.Empty;
                outputVars["Error"]  = true;
            }
        }