Exemplo n.º 1
0
        /// <summary>
        /// Gets the configuration metadata list.
        /// </summary>
        /// <typeparam name="T">The type of metadata.</typeparam>
        /// <param name="conditions">The conditions dictionary.</param>
        /// <returns></returns>
        public List <T> GetConfigMetadataList <T>(Dictionary <string, object> conditions) where T : ConfigMetadata, new()
        {
            DB.AutoBox db = GetDB <T>();

            if (db != null)
            {
                Type   type      = typeof(T);
                string tableName = type.Name;
                string sql       = "from " + tableName + " where";

                int i      = 0;
                int length = conditions.Keys.Count;

                foreach (string key in conditions.Keys)
                {
                    sql += " " + key + "==?";

                    if (i < length - 1)
                    {
                        sql += " &";
                    }

                    i++;
                }

                List <object>    values = new List <object>(conditions.Values);
                IBEnumerable <T> items  = db.Select <T>(sql, values.ToArray());
                return(new List <T>(items));
            }

            return(null);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Selects the data list by some conditions.
        /// </summary>
        /// <typeparam name="T">The type of data.</typeparam>
        /// <param name="tableName">Name of the table.</param>
        /// <param name="conditions">The conditions.</param>
        /// <returns></returns>
        public List <T> Select <T>(string tableName, Dictionary <string, object> conditions) where T : class, new()
        {
            try
            {
                using (m_db.Cube())
                {
                    string sql    = "from " + tableName + " where";
                    int    i      = 0;
                    int    length = conditions.Keys.Count;

                    foreach (string key in conditions.Keys)
                    {
                        sql += " " + key + "==?";

                        if (i < length - 1)
                        {
                            sql += " &";
                        }

                        i++;
                    }

                    List <object>    values = new List <object>(conditions.Values);
                    IBEnumerable <T> items  = m_db.Select <T>(sql, values.ToArray());
                    return(new List <T>(items));
                }
            }
            catch (Exception)
            {
                throw;
            }
        }
Exemplo n.º 3
0
        public LoginCommandResult Execute(LoginCommand loginCommand)
        {
            var hashedPassword = Hasher.GetMd5Hash(loginCommand.Password);

            if (_db.SelectCount("from " + DBTableNames.Authors) == 0)
            {
                _db.Insert(DBTableNames.Authors, new Author
                {
                    Email          = "*****@*****.**",
                    DisplayName    = "mzblog",
                    Roles          = new[] { "admin" },
                    HashedPassword = Hasher.GetMd5Hash("mzblog")
                });
            }
            var author = from u in _db.Select <Author>("from " + DBTableNames.Authors)
                         where u.Email == loginCommand.Email && u.HashedPassword == hashedPassword
                         select u;

            if (author.Count() > 0)
            {
                return new LoginCommandResult()
                       {
                           Author = author.FirstOrDefault()
                       }
            }
            ;

            return(new LoginCommandResult(trrorMessage: "用户名或密码不正确")
            {
            });
        }
    }
Exemplo n.º 4
0
        public TagCloudViewModel Project(TagCloudBindingModel input)
        {
            var result = new Dictionary <Tag, int>();
            var tags   = _db.Select <Tag>("from " + DBTableNames.Tags + " order by PostCount desc");

            return(new TagCloudViewModel
            {
                Tags = tags
            });
        }
Exemplo n.º 5
0
        public CommandResult Execute(DeletePostCommand command)
        {
            var comments = _db.Select <BlogComment>("from " + DBTableNames.BlogComments + " where PostId==?", command.PostId);

            if (comments.Count() > 0)
            {
                var commentKeys = comments.Select(s => s.Id).ToArray();
                _db.Delete(DBTableNames.BlogComments, commentKeys);
            }
            _db.Delete(DBTableNames.BlogPosts, command.PostId);
            return(CommandResult.SuccessResult);
        }
Exemplo n.º 6
0
        public BlogPostDetailsViewModel Project(BlogPostDetailsBindingModel input)
        {
            var post = _db.Select <BlogPost>("from " + DBTableNames.BlogPosts + " where TitleSlug==?", input.Permalink).FirstOrDefault();

            if (post == null)
            {
                return(null);
            }
            post.ViewCount++;
            _db.Update(DBTableNames.BlogPosts, post);

            var comments = _db.Select <BlogComment>("from " + DBTableNames.BlogComments + " where PostId ==?", post.Id)
                           .OrderBy(o => o.CreatedTime)
                           .ToArray();

            return(new BlogPostDetailsViewModel
            {
                BlogPost = post,
                Comments = comments
            });
        }
Exemplo n.º 7
0
        public IntervalBlogPostsViewModel Project(IntervalBlogPostsBindingModel input)
        {
            var posts = from p in _db.Select <BlogPost>("from " + DBTableNames.BlogPosts)
                        where p.IsPublished && p.PubDate <input.ToDate && p.PubDate> input.FromDate
                        orderby p.PubDate descending
                        select p;

            return(new IntervalBlogPostsViewModel
            {
                Posts = posts,
                FromDate = input.FromDate,
                ToDate = input.ToDate
            });
        }
Exemplo n.º 8
0
        public AllBlogCommentsViewModel Project(AllBlogCommentsBindingModel input)
        {
            var skip = (input.Page - 1) * input.Take;

            var comments = _db.Select <BlogComment>("from " + DBTableNames.BlogComments + " order by CreatedTime desc limit " + skip + "," + input.Take + 1)
                           .ToList().AsReadOnly();

            var pagedComments = comments.Take(input.Take);
            var hasNextPage   = comments.Count > input.Take;

            return(new AllBlogCommentsViewModel
            {
                Comments = pagedComments,
                Page = input.Page,
                HasNextPage = hasNextPage
            });
        }
Exemplo n.º 9
0
        public RecentBlogPostSummaryViewModel Project(RecentBlogPostSummaryBindingModel input)
        {
            var titles = (from p in _db.Select <BlogPost>("from " + DBTableNames.BlogPosts)
                          where p.IsPublished
                          orderby p.PubDate descending
                          select new BlogPostSummary
            {
                Title = p.Title,
                Link = p.GetLink()
            }
                          )
                         .Take(input.Page)
                         .ToList()
                         .AsReadOnly();

            return(new RecentBlogPostSummaryViewModel {
                BlogPostsSummaries = titles
            });
        }
        private void BtnExecute_Click(object sender, RoutedEventArgs e)
        {
            var sql = this.tbSql.SelectedText;

            if (string.IsNullOrWhiteSpace(sql))
            {
                sql = this.tbSql.Text;
            }

            if (string.IsNullOrWhiteSpace(sql))
            {
                System.Windows.MessageBox.Show("Please input your querying sentence", "Warning");
                return;
            }

            if (server == null || server.IsClosed())
            {
                System.Windows.MessageBox.Show("Please connect before querying", "Warning");
                return;
            }

            var ql   = string.Empty;
            var args = new string[0];
            var ci   = sql.IndexOf(',');

            if (ci != -1)
            {
                ql = sql.Substring(0..ci);
                if (ci < sql.Length - 1)
                {
                    args = sql.Substring(ci + 1).Trim().Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                }
            }
            else
            {
                ql = sql;
            }

            var locals = db.Select(ql, args);
            var dt     = locals.ToDataTable();

            this.dg.ItemsSource = dt.DefaultView;
        }
Exemplo n.º 11
0
        public TaggedBlogPostsViewModel Project(TaggedBlogPostsBindingModel input)
        {
            var posts = (from p in _db.Select <BlogPost>("from " + DBTableNames.BlogPosts)
                         where p.IsPublished && p.Tags.Contains(input.Tag)
                         orderby p.PubDate descending
                         select p)
                        .ToList();

            if (posts.Count == 0)
            {
                return(null);
            }
            var tagName = _db.SelectKey <Tag>(DBTableNames.Tags, posts.First().Tags[0]).Name;

            return(new TaggedBlogPostsViewModel
            {
                Posts = posts,
                Tag = tagName
            });
        }
Exemplo n.º 12
0
        public AllBlogPostsViewModel Project(AllBlogPostsBindingModel input)
        {
            var skip = (input.Page - 1) * input.Take;

            var posts = (from p in _db.Select <BlogPost>("from " + DBTableNames.BlogPosts)
                         orderby p.DateUTC descending
                         select p)
                        .Skip(skip)
                        .Take(input.Take + 1)
                        .ToList()
                        .AsReadOnly();

            var pagedPosts  = posts.Take(input.Take);
            var hasNextPage = posts.Count > input.Take;

            return(new AllBlogPostsViewModel
            {
                Posts = pagedPosts,
                Page = input.Page,
                HasNextPage = hasNextPage
            });
        }
Exemplo n.º 13
0
        /// <summary>
        /// Gets the table local address.
        /// </summary>
        /// <typeparam name="T">The type of object.</typeparam>
        /// <returns>The local address of table.</returns>
        private long GetTableLocalAddress <T>() where T : ConfigMetadata
        {
            if (m_tableIndexDB == null)
            {
                CreateTableIndexDB();
            }

            Type   type = typeof(T);
            string sql  = string.Format("from {0} where typeNamespace==? & typeName==?", MetadataLocalAddress.TableName);
            IBEnumerable <MetadataLocalAddress> items = m_tableIndexDB.Select <MetadataLocalAddress>(sql, type.Namespace, type.Name);

            if (items != null)
            {
                List <MetadataLocalAddress> list = new List <MetadataLocalAddress>(items);

                if (list.Count > 0)
                {
                    return(list[0].localAddress);
                }
            }

            return(-1);
        }
Exemplo n.º 14
0
        public static bool Test(bool background)
        {
            var bakAddr = 0 - Math.Abs(DateTime.Now.Ticks);

            DDebug.DeleteDBFiles(1);
            DB server = new DB(1);

            server.SetBoxRecycler(new FileBackupBoxRecycler());
            server.GetConfig().EnsureTable <DBObject>("DBObject", "ID");
            DB.AutoBox auto = server.Open();

            Parallel.For(0, 300, (i) =>
            {
                var obj   = new DBObject();
                obj.ID    = auto.NewId(0);
                obj.Value = "Value " + obj.ID;
                obj.DT    = DateTime.Now;
                auto.Insert("DBObject", obj);
            });


            // Export
            if (background)
            {
                Thread backupThread = new Thread(() =>
                {
                    ((FileBackupBoxRecycler)auto.GetDatabase().GetBoxRecycler()).Phase1(auto.GetDatabase(), bakAddr);
                });
                backupThread.Start();

                Parallel.For(0, 300, (i) =>
                {
                    var obj   = new DBObject();
                    obj.ID    = auto.NewId(0);
                    obj.Value = "Value " + obj.ID;
                    obj.DT    = DateTime.Now;
                    auto.Insert("DBObject", obj);
                });

                backupThread.Join();
                ((FileBackupBoxRecycler)auto.GetDatabase().GetBoxRecycler()).Phase2();
            }
            else
            {
                ((FileBackupBoxRecycler)auto.GetDatabase().GetBoxRecycler()).Backup(auto.GetDatabase(), bakAddr);
            }


            //Import
            DB bakserver = new DB(bakAddr);

            bakserver.GetConfig().DBConfig.SwapFileBuffer = 0;
            DB.AutoBox bakauto = bakserver.Open();

            DBObject[] s1 = auto.Select <DBObject>("from DBObject").ToArray();
            DBObject[] s2 = bakauto.Select <DBObject>("from DBObject").ToArray();

            server.Dispose();
            bakserver.Dispose();
            DDebug.DeleteDBFiles(bakAddr);
            return(s1.SequenceEqual(s2));
        }
Exemplo n.º 15
0
 /// <summary>
 /// 根据QL语句获取数据
 /// </summary>
 public List <T> GetDatasByQL <T>(string QL, object param) where T : class, new()
 {
     return(_autoBox.Select <T>(QL, param));
 }