Exemplo n.º 1
0
        public static bool AddEntry(Entry entry)
        {
            bool result;

            if (string.IsNullOrEmpty(entry.Content))
            {
                return(false);
            }

            SqlServerIo sql = SqlServerIo.Create();

            if (!sql.Ready)
            {
                return(false);
            }

            //naa
            entry.FixForMultipleLineFeeds();

            result = sql.Execute(false, NEW_ENTRY_SQL, entry.Baslik, entry.Suser, entry.Date.ToString(), entry.Content);

            if (result)
            {
                if (!sql.Read())
                {
                    result = false;
                }
                else
                {
                    entry.SetId(sql.GetValueOfColumn <int>("BaslikId"));


                    CacheManager.InvalidateCacheSet(KeysetId.Baslik(entry.BaslikID));

                    var indexKeyid = KeysetId.Index(entry.Baslik[0]);
                    CacheManager.InvalidateCacheSet(indexKeyid);

                    if (sql.GetValueOfColumn <int>("IsNewBaslikInsert") == 1)
                    {
                        //invalidate also todays section keyset a.k.a Taze
                        CacheManager.InvalidateCacheSet(KeysetId.Todays());
                    }
                }
            }


            SqlServerIo.Release(sql);

            return(result);
        }
Exemplo n.º 2
0
        public static ViewQueryResult FetchEntriesOfBaslik(string baslik, int baslikId, int pageNumber)
        {
            SqlServerIo     sql;
            string          query;
            ViewQueryResult resultSet;

            query = BuildEntryFetchSQL(baslik, baslikId, pageNumber);


            if (!CacheManager.TryGetCachedQueryResult <ViewQueryResult>(query, out resultSet))
            {
                sql = SqlServerIo.Create();

                if (!sql.Execute(false, query))
                {
                    SqlServerIo.Release(sql);
                    return(new ViewQueryResult());
                }

                resultSet = new ViewQueryResult();

                while (sql.Read())
                {
                    if (resultSet.TotalRecordCount == 0)
                    {
                        resultSet.TotalRecordCount = sql.GetValueOfColumn <int>("TotalRecord");
                        resultSet.BaslikId         = sql.GetValueOfColumn <int>("Id");
                    }

                    Entry e = new Entry(
                        sql.GetValueOfColumn <string>("Baslik"),
                        sql.GetValueOfColumn <string>("Suser"),
                        sql.GetValueOfColumn <DateTime>("SubmitDate").ToString(),
                        sql.GetValueOfColumn <string>("Entry"));

                    resultSet.Entries.Add(e);
                    resultSet.PhysicalRecordCount++;
                }

                SqlServerIo.Release(sql);

                //Dont cache for empty recordset for baslik
                if (!resultSet.HasEntry)
                {
                    return(resultSet);
                }

                resultSet.LogicalRecordCount = resultSet.PhysicalRecordCount;

                CacheManager.CacheObject(KeysetId.Baslik(resultSet.BaslikId), true, query, resultSet);

                BaslikBasicInfo bbi = new BaslikBasicInfo()
                {
                    TotalEntries = resultSet.TotalRecordCount
                };

                CacheManager.CacheObject("BBI_" + resultSet.BaslikId.ToString(),
                                         bbi,
                                         TimeSpan.FromMinutes(10));


                //if this request initial fetch using the baslik string.
                //rebuild sql with baslikid and cache the result with its hashkey
                if (baslikId == 0)
                {
                    query = BuildEntryFetchSQL(null, resultSet.BaslikId, pageNumber);
                    CacheManager.CacheObject(KeysetId.Baslik(resultSet.BaslikId), true, query, resultSet);
                }
            }

            return(resultSet);
        }
Exemplo n.º 3
0
        public static SearchAndIndexQueryResult FetchBasliksUsingSearch(bool fresh, string content, string suser, DateTime begin, DateTime end, int pageNumber, string pagerHash, bool leaveDatesAsIs)
        {
            SearchAndIndexQueryResult resultSet;
            SqlServerIo sql;
            TimeSpan    invTimeout;
            int         rowBegin, rowEnd;
            string      query;
            KeysetId    keysetId;
            string      baslik, descr, deceptedDate;
            int         entryCount;
            bool        resultCached;

            rowBegin = (pageNumber * BasliksPerPage) + 1;
            rowEnd   = rowBegin + BasliksPerPage - 1;

            //Workarounds, workarounds, workarounds !
            if (begin != DateTime.MinValue && end != DateTime.MinValue)
            {
                if (leaveDatesAsIs)
                {
                    deceptedDate = begin.AddTicks((end - begin).Ticks / 2).ToString();
                }
                else
                {
                    //push it out of from the search date range to reverse daterange check logic
                    deceptedDate = end.AddDays(2).ToString();
                }
            }
            else
            {
                deceptedDate = string.Empty;
            }

            query = BuildFetchSQLQuery(ref pagerHash, content, suser, begin, end, rowBegin, rowEnd);


            if (fresh)
            {
                keysetId   = KeysetId.Todays(true);
                invTimeout = TodaysTimeout;
            }
            else
            {
                keysetId   = KeysetId.Search(pagerHash, true);
                invTimeout = SearchResultTimeout;
            }

            resultCached = CacheManager.TryGetCachedQueryResult <SearchAndIndexQueryResult>(query, out resultSet);

            if (!resultCached)
            {
                sql = SqlServerIo.Create();

                if (!sql.Execute(false, query))
                {
                    SqlServerIo.Release(sql);
                    return(new SearchAndIndexQueryResult());
                }

                resultSet = new SearchAndIndexQueryResult
                {
                    PagerHash = pagerHash
                };

                while (sql.Read())
                {
                    baslik     = sql.GetValueOfColumn <string>("Baslik");
                    entryCount = sql.GetValueOfColumn <int>("EntryCount");

                    if (resultSet.TotalRecordCount == 0)
                    {
                        resultSet.TotalRecordCount = sql.GetValueOfColumn <int>("TotalRecordCount");
                    }

                    if (entryCount > 0)
                    {
                        descr = content;
                    }
                    else
                    {
                        descr = Strev(content);
                    }

                    if (string.IsNullOrEmpty(suser))
                    {
                        suser = string.Empty;
                    }

                    resultSet.Entries.Add(
                        new Entry(
                            baslik,
                            suser,
                            deceptedDate,
                            descr, entryCount)
                        );

                    resultSet.PhysicalRecordCount++;
                }

                resultSet.LogicalRecordCount = resultSet.Entries.Count;

                SqlServerIo.Release(sql);

                CacheManager.CacheObject(keysetId, true, query, resultSet, invTimeout);
            }

            return(resultSet);
        }
Exemplo n.º 4
0
        private static SearchAndIndexQueryResult FetchBasliksIndexed(int pageNumber, char beginChar, string pagerHash)
        {
            SearchAndIndexQueryResult resultSet;
            SqlServerIo sql;
            TimeSpan    invTimeout;
            int         rowBegin, rowEnd;
            string      query, baslik;
            int         entryCount;

            rowBegin = (pageNumber * BasliksPerPage) + 1;
            rowEnd   = rowBegin + BasliksPerPage - 1;

            beginChar = char.ToLower(beginChar);

            if (beginChar == '.')
            {
                invTimeout = AllBasliksTimeout;
            }
            else
            {
                invTimeout = IndexedBasliksTimeout;
            }

            query = BuildFetchAllSQLQuery(ref pagerHash, rowBegin, rowEnd, beginChar);

            if (!CacheManager.TryGetCachedQueryResult <SearchAndIndexQueryResult>(query, out resultSet))
            {
                sql = SqlServerIo.Create();

                if (!sql.Execute(false, query))
                {
                    SqlServerIo.Release(sql);
                    return(new SearchAndIndexQueryResult());
                }

                resultSet = new SearchAndIndexQueryResult
                {
                    PagerHash = pagerHash
                };

                while (sql.Read())
                {
                    baslik     = sql.GetValueOfColumn <string>("Baslik");
                    entryCount = sql.GetValueOfColumn <int>("EntryCount");

                    if (resultSet.TotalRecordCount == 0)
                    {
                        resultSet.TotalRecordCount = sql.GetValueOfColumn <int>("TotalRecordCount");
                    }

                    resultSet.Entries.Add(new Entry(baslik, string.Empty, string.Empty, string.Empty, entryCount));

                    resultSet.PhysicalRecordCount++;
                }

                resultSet.LogicalRecordCount = resultSet.Entries.Count;

                SqlServerIo.Release(sql);

                CacheManager.CacheObject(KeysetId.Index(beginChar, true), true, query, resultSet, invTimeout);
            }

            return(resultSet);
        }