Exemple #1
0
        public RunningQueryViewModel(SqlQuery baseModel)
        {
            Id          = baseModel.Id;
            Sql         = baseModel.Sql;
            Databases   = baseModel.Databases;
            UserId      = baseModel.UserId;
            DateStart   = baseModel.DateStart;
            DateEnd     = baseModel.DateEnd;
            SingleTable = baseModel.SingleTable;

            Done = DateEnd.HasValue && DateEnd > DateStart;


            var runningTime = Done
                                ? DateEnd.Value - DateStart
                                : DateTime.Now - DateStart;

            RunningTime = runningTime.ToString(@"dd\.hh\:mm\:ss");

            Results = new List <WorkerResult>();
            using (var dbContext = new OctopusDbContext())
            {
                var tmpResults = dbContext
                                 .QueryResults
                                 .Where(qr => qr.QueryId == Id)
                                 .ToList();
                foreach (var tmpResult in tmpResults)
                {
                    Results.Add(JsonConvert.DeserializeObject <WorkerResult>(tmpResult.Result));
                }
            }
        }
        /// <summary>
        /// Internal thread execution method
        /// </summary>
        private void ExecutionThread()
        {
            _countdown = _databases.Count;
            foreach (var db in _databases)
            {
                Thread databaseThread = new Thread(DatabaseThread);
                databaseThread.Start(db);
            }

            while (_countdown > 0)
            {
                Thread.Sleep(500);
            }

            using (var dbContext = new OctopusDbContext())
            {
                var queryFromContext = dbContext
                                       .Queries
                                       .Where(q => q.Id == _query.Id)
                                       .First();
                queryFromContext.DateEnd = DateTime.Now;

                dbContext.SaveChanges();
            }
        }
        /// <summary>
        /// Get script from script repository by id
        /// </summary>
        public static PreparedScript Get(int id)
        {
            var dbContext = new OctopusDbContext();

            return(dbContext
                   .PreparedScripts
                   .Where(s => s.Id == id)
                   .FirstOrDefault());
        }
Exemple #4
0
        // GET: History
        public ActionResult Index()
        {
            var dbContext = new OctopusDbContext();

            int userId = UserHelper.GetUserId(User.Identity);

            return(View(dbContext
                        .Queries
                        .Where(q => q.UserId == userId)
                        .OrderByDescending(q => q.DateStart)
                        ));
        }
 public static int GetUserId(IIdentity identity)
 {
     if (!identity.IsAuthenticated)
     {
         return(0);
     }
     else
     {
         using (var context = new OctopusDbContext())
             return(context.Accounts.Where(a => a.Name == identity.Name).First().Id);
     }
 }
 public static bool IsAdmin(IIdentity identity)
 {
     if (!identity.IsAuthenticated)
     {
         return(false);
     }
     else
     {
         using (var context = new OctopusDbContext())
             return(context.Accounts.Where(a => a.Name == identity.Name).First().IsAdmin);
     }
 }
        /// <summary>
        /// A thread for executing query within each database
        /// </summary>
        private void DatabaseThread(object db)
        {
            var database = (WorkerDb)db;

            var queryResult = new SqlQueryResult();

            queryResult.QueryId    = _query.Id;
            queryResult.DatabaseId = database.Id;

            try
            {
                var adapter = new SqlDataAdapter(_query.Sql, database.ConnectionString);
                adapter.SelectCommand.CommandTimeout = 0;
                var table = new DataTable();
                adapter.Fill(table);

                var result = new WorkerResult();
                result.DatabaseId = database.Id;

                foreach (DataColumn column in table.Columns)
                {
                    result.AppendColumn(column.Caption);
                }

                foreach (DataRow row in table.Rows)
                {
                    result.AppendRow(row.ItemArray);
                }

                _results.Add(result);
                queryResult.Result = JsonConvert.SerializeObject(result);
            }
            catch (Exception ex)
            {
                var result = new WorkerResult();
                result.DatabaseId = database.Id;
                result.AppendColumn("error");
                result.AppendRow(new object[] { ex.Message });

                queryResult.Result = JsonConvert.SerializeObject(result);
            }
            finally
            {
                using (var dbContext = new OctopusDbContext())
                {
                    dbContext.QueryResults.Add(queryResult);
                    dbContext.SaveChanges();
                }
                Interlocked.Decrement(ref _countdown);
            }
        }
        public ActionResult Index(UserQueryViewModel model)
        {
            var dbContext = new OctopusDbContext();
            var script    = PreparedScriptHelper.Get(model.PreparedScriptId);

            ModelState.Remove("Sql");
            if (script != null)
            {
                model.Sql    = script.Sql;
                model.Params = PreparedScriptHelper.PrepareParams(script.Sql);
            }
            else
            {
                model.Sql = string.Empty;
            }

            return(View(model));
        }
        /// <summary>
        /// Get prepared script for View
        /// </summary>
        /// <returns></returns>
        public static List <SelectListItem> GetScripts()
        {
            var dbContext = new OctopusDbContext();

            var result = new List <SelectListItem>();

            result.Add(new SelectListItem()
            {
                Value = "0", Text = "( none )"
            });

            result.AddRange(dbContext
                            .PreparedScripts
                            .Select(s => new SelectListItem()
            {
                Text  = s.Name,
                Value = s.Id.ToString()
            }));

            return(result);
        }
        /// <summary>
        /// A thread for executing query within each database
        /// </summary>
        private void DatabaseThread(object db)
        {
            var database = (WorkerDb)db;

            var queryResult = new SqlQueryResult();
            queryResult.QueryId = _query.Id;
            queryResult.DatabaseId = database.Id;

            try
            {
                var adapter = new SqlDataAdapter(_query.Sql, database.ConnectionString);
                adapter.SelectCommand.CommandTimeout = 0;
                var table = new DataTable();
                adapter.Fill(table);

                var result = new WorkerResult();
                result.DatabaseId = database.Id;

                foreach (DataColumn column in table.Columns)
                    result.AppendColumn(column.Caption);

                foreach (DataRow row in table.Rows)
                    result.AppendRow(row.ItemArray);

                _results.Add(result);
                queryResult.Result = JsonConvert.SerializeObject(result);
            }
            catch (Exception ex)
            {
                var result = new WorkerResult();
                result.DatabaseId = database.Id;
                result.AppendColumn("error");
                result.AppendRow(new object[] { ex.Message });

                queryResult.Result = JsonConvert.SerializeObject(result);
            }
            finally
            {
                using (var dbContext = new OctopusDbContext())
                {
                    dbContext.QueryResults.Add(queryResult);
                    dbContext.SaveChanges();
                }
                Interlocked.Decrement(ref _countdown);
            }
        }
        /// <summary>
        /// Internal thread execution method
        /// </summary>
        private void ExecutionThread()
        {
            _countdown = _databases.Count;
            foreach (var db in _databases)
            {
                Thread databaseThread = new Thread(DatabaseThread);
                databaseThread.Start(db);
            }

            while (_countdown > 0)
            {
                Thread.Sleep(500);
            }

            using (var dbContext = new OctopusDbContext())
            {
                var queryFromContext = dbContext
                    .Queries
                    .Where(q => q.Id == _query.Id)
                    .First();
                queryFromContext.DateEnd = DateTime.Now;

                dbContext.SaveChanges();
            }
        }
Exemple #12
0
 public AccountController()
 {
     _dbContext = new OctopusDbContext();
 }