コード例 #1
0
        /// <summary>
        /// 获取post预览列表
        /// </summary>
        /// <param name="customSQL">自定义SQL</param>
        /// <param name="treatedTags">经处理过的标签</param>
        /// <param name="site">图站</param>
        /// <param name="column">按此列排序</param>
        /// <param name="ratingArray">分级</param>
        /// <returns></returns>
        public static DataTable SelectPostPreviewList(string customSQL, string treatedTags, Site site, PostOrderBy column, Rating[] ratingArray)
        {
            string selectColumns = string.Format("file_md5,{0}", column.ToString());
            string ratingIN      = string.Join(",", ratingArray.Select(s => string.Format("'{0}'", s.ToString().Substring(0, 1).ToLower())));
            string tagsMATCH     = string.IsNullOrWhiteSpace(treatedTags) ? string.Empty : string.Format(" AND id IN (SELECT docid FROM posts_fts4 WHERE tags MATCH '{0}')", treatedTags);


            if (string.IsNullOrWhiteSpace(customSQL) == false)
            {
                customSQL = string.Format(" AND ({0})", string.Join(" AND ", customSQL.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries)));
            }

            string commandText = string.Format("SELECT {0} FROM posts WHERE rating IN ({1}){2}{3}", selectColumns, ratingIN, tagsMATCH, customSQL);

            SQLiteCommand command = SQLiteHelper.CreateCommand(DBConn.GetConn(site), commandText);

            try
            {
                DataTable dt = SQLiteHelper.ExecuteDataTable(command);
                return(dt);
            }
            catch
            {
                return(null);
            }
        }
コード例 #2
0
        /// <summary>
        /// 获取偏好MD5列表
        /// </summary>
        /// <param name="mode">模式</param>
        /// <param name="preferenceArray">需获取的偏好</param>
        /// <returns></returns>
        public static DataTable SelectPreferMD5(Mode mode, params Prefer[] selectPreferArray)
        {
            string        commandText = string.Format("SELECT file_md5 FROM {0} WHERE prefer IN ({1})", mode.ToString(), string.Join(",", selectPreferArray.Select(s => s.ToString("d"))));
            SQLiteCommand command     = SQLiteHelper.CreateCommand(DBConn.prefer, commandText);

            return(SQLiteHelper.ExecuteDataTable(command));
        }
コード例 #3
0
        /// <summary>
        /// 获取MD5的偏好
        /// </summary>
        /// <param name="mode">模式</param>
        /// <param name="file_md5"></param>
        /// <returns></returns>
        public static DataTable SelectMD5Prefer(Mode mode, string file_md5)
        {
            string commandText = string.Format("SELECT prefer FROM {0} WHERE file_md5 = @file_md5", mode.ToString());

            SQLiteParameter param   = new SQLiteParameter("@file_md5", file_md5);
            SQLiteCommand   command = SQLiteHelper.CreateCommand(DBConn.prefer, commandText, param);

            return(SQLiteHelper.ExecuteDataTable(command));
        }
コード例 #4
0
        /// <summary>
        /// 获取Pool中posts预览列表
        /// </summary>
        /// <param name="pool_id">pool的id</param>
        /// <param name="site">图站</param>
        /// <returns></returns>
        public static DataTable SelectPoolPostsPreviewList(int pool_id, Site site)
        {
            string commandText = string.Format("SELECT file_md5,sequence FROM pool_posts WHERE pool_id=@pool_id");

            SQLiteParameter param   = new SQLiteParameter("@pool_id", pool_id);
            SQLiteCommand   command = SQLiteHelper.CreateCommand(DBConn.GetConn(site), commandText, param);

            return(SQLiteHelper.ExecuteDataTable(command));
        }
コード例 #5
0
        /// <summary>
        /// 获取Pool详情
        /// </summary>
        /// <param name="id"></param>
        /// <param name="site">图站</param>
        /// <returns></returns>
        public static DataTable SelectPoolDetail(int id, Site site)
        {
            string commandText = "SELECT * FROM pools WHERE id=@id";

            SQLiteParameter param   = new SQLiteParameter("@id", id);
            SQLiteCommand   command = SQLiteHelper.CreateCommand(DBConn.GetConn(site), commandText, param);

            return(SQLiteHelper.ExecuteDataTable(command));
        }
コード例 #6
0
        /// <summary>
        /// 获取post详情
        /// </summary>
        /// <param name="file_md5"></param>
        /// <param name="site"></param>
        /// <returns></returns>
        public static DataTable SelectPostDetail(string file_md5, Site site)
        {
            string commandText = "SELECT * FROM posts WHERE file_md5 = @file_md5";

            SQLiteParameter param   = new SQLiteParameter("@file_md5", file_md5);
            SQLiteCommand   command = SQLiteHelper.CreateCommand(DBConn.GetConn(site), commandText, param);

            return(SQLiteHelper.ExecuteDataTable(command));
        }
コード例 #7
0
        /// <summary>
        /// 获取预览图
        /// </summary>
        /// <param name="md5Group">按首位分组的md5</param>
        /// <returns></returns>
        public static DataTable SelectPreviewImage(IGrouping <string, string> md5Group)
        {
            string md5IN       = string.Join(",", md5Group.Select(s => string.Format("'{0}'", s)));
            string commandText = string.Format("SELECT file_md5,preview FROM _{0} WHERE file_md5 IN ({1})", md5Group.Key, md5IN);

            SQLiteCommand command = SQLiteHelper.CreateCommand(DBConn.preview, commandText);

            return(SQLiteHelper.ExecuteDataTable(command));
        }
コード例 #8
0
        /// <summary>
        /// 为图片详情查询某图片的标签
        /// </summary>
        /// <param name="multiCRC32">多个CRC32标签</param>
        /// <returns></returns>
        public static DataTable SelectTagsForDetail(string multiCRC32, Site site)
        {
            string tagCRC32IN = string.Join(",", multiCRC32.Split(' ').Select(s => string.Format("'{0}'", s)));

            string commandText = string.Format("SELECT name,type,post_count FROM tags WHERE crc32 IN ({0}) ORDER BY type,name", tagCRC32IN);

            SQLiteCommand command = SQLiteHelper.CreateCommand(DBConn.GetConn(site), commandText);

            return(SQLiteHelper.ExecuteDataTable(command));
        }
コード例 #9
0
        /// <summary>
        /// 获取Pool预览列表
        /// </summary>
        /// <param name="inputName">用户输入的名称</param>
        /// <param name="site">图站</param>
        /// <param name="column">按此列排序</param>
        /// <param name="ratingArray">分级</param>
        /// <returns></returns>
        public static DataTable SelectPoolPreviewList(string inputName, Site site, PoolOrderBy column, Rating[] ratingArray)
        {
            string selectColumns = string.Format("id,name,file_md5,{0}", column.ToString());
            string ratingIN      = string.Join(",", ratingArray.Select(s => string.Format("'{0}'", s.ToString().Substring(0, 1).ToLower())));

            string commandText = string.Format("SELECT {0} FROM pools WHERE name LIKE ('%'||@inputName||'%') AND rating IN ({1})", selectColumns, ratingIN);

            SQLiteParameter param   = new SQLiteParameter("@inputName", inputName);
            SQLiteCommand   command = SQLiteHelper.CreateCommand(DBConn.GetConn(site), commandText, param);

            return(SQLiteHelper.ExecuteDataTable(command));
        }
コード例 #10
0
        /// <summary>
        /// 为推荐查询匹配图片标签
        /// </summary>
        /// <param name="incompleteTag">不完整的标签</param>
        /// <param name="limit">返回数量</param>
        /// <returns></returns>
        public static DataTable SelectTagsForRecommend(string incompleteTag, Site site, int limit = 5)
        {
            //搜索 (标签*) 和 (*_标签*)
            string commandText = @"SELECT name,type,post_count FROM tags WHERE name LIKE (@incompleteTag||'%') OR name LIKE ('%\_'||@incompleteTag||'%') ESCAPE '\' ORDER BY post_count DESC LIMIT @limit";

            SQLiteParameter[] paramArray =
            {
                new SQLiteParameter("@incompleteTag", incompleteTag),
                new SQLiteParameter("@limit",         limit),
            };

            SQLiteCommand command = SQLiteHelper.CreateCommand(DBConn.GetConn(site), commandText, paramArray);

            return(SQLiteHelper.ExecuteDataTable(command));
        }