public static Suser GetSuser(string suser) { string query = string.Format(GET_SUSER_SQL, suser.Trim().ToLower()); Suser suserObject = null; if (!CacheManager.TryGetCachedQueryResult <Suser>(query, out suserObject)) { SqlServerIo sql = SqlServerIo.Create(); if (sql.Execute(false, query)) { if (sql.Read()) { suserObject = new Suser( 0, sql.GetValueOfColumn <string>("Suser"), sql.GetValueOfColumn <string>("Password") ); } } SqlServerIo.Release(sql); } return(suserObject); }
public static bool AddSuser(Suser suser, out bool registered) { bool result; registered = false; if (GetSuser(suser.SuserName) != null) { return(true); } SqlServerIo sql = SqlServerIo.Create(); if (!sql.Ready) { return(false); } result = sql.Execute( true, ADD_SUSER_SQL, suser.SuserName, suser.PasswordHash, "*****@*****.**" ); if (result) { registered = sql.RecordCount > 0; } SqlServerIo.Release(sql); return(result); }
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); }
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); }
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); }
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); }
public static void Release(SqlServerIo sqlIo) { sqlIo.CloseReader(); sqlIo.Close(); sqlIo = null; }