예제 #1
0
 public bool UserOwnsBookmark(int userId, int bookmarkId)
 {
     using (var context = new BookmarkManagerContext(_connectionString))
     {
         return(context.Bookmarks.Any(b => b.UserId == userId && b.Id == bookmarkId));
     }
 }
예제 #2
0
 public List <Bookmark> GetForUser(int userId)
 {
     using (var context = new BookmarkManagerContext(_connectionString))
     {
         return(context.Bookmarks.Where(b => b.UserId == userId).ToList());
     }
 }
예제 #3
0
        public List <TopBookmark> GetTopBookmarkUrls_TheLongWay()
        {
            using (var context = new BookmarkManagerContext(_connectionString))
            {
                var bookmarks  = context.Bookmarks.ToList();
                var dictionary = new Dictionary <string, int>();
                foreach (var bookmark in bookmarks)
                {
                    if (dictionary.ContainsKey(bookmark.Url))
                    {
                        dictionary[bookmark.Url]++;
                    }
                    else
                    {
                        dictionary[bookmark.Url] = 1;
                    }
                }

                return(dictionary.OrderByDescending(k => k.Value).Take(5).Select(kvp => new TopBookmark
                {
                    Url = kvp.Key,
                    Count = kvp.Value
                }).ToList());
            }
        }
예제 #4
0
 public User GetByEmail(string email)
 {
     using (var context = new BookmarkManagerContext(_connectionString))
     {
         return(context.Users.FirstOrDefault(u => u.Email == email));
     }
 }
예제 #5
0
 public void DeleteBookmark(int bookmarkId)
 {
     using (var context = new BookmarkManagerContext(_connectionString))
     {
         context.Database.ExecuteSqlCommand("DELETE FROM Bookmarks WHERE Id = @id",
                                            new SqlParameter("@id", bookmarkId));
     }
 }
예제 #6
0
 public void Add(Bookmark bookmark)
 {
     using (var context = new BookmarkManagerContext(_connectionString))
     {
         context.Bookmarks.Add(bookmark);
         context.SaveChanges();
     }
 }
        public void AddUser(User user, string password)
        {
            user.PasswordHash = BCrypt.Net.BCrypt.HashPassword(password);

            using var context = new BookmarkManagerContext(_connectionString);
            context.Users.Add(user);
            context.SaveChanges();
        }
예제 #8
0
        public List <TopBookmark> GetTopBookmarkUrls_DbQueryWay()
        {
            var query = @"SELECT TOP 5 Url, Count(*) AS 'Count' from Bookmarks
                        GROUP BY Url
                        ORDER BY Count(*) DESC";

            using var context = new BookmarkManagerContext(_connectionString);
            return(context.TopBookmarks.FromSqlRaw(query).ToList());
        }
예제 #9
0
 public void UpdateBookmark(string title, int bookmarkId)
 {
     using (var context = new BookmarkManagerContext(_connectionString))
     {
         context.Database.ExecuteSqlCommand("UPDATE Bookmarks SET Title = @title WHERE Id = @id",
                                            new SqlParameter("@title", title),
                                            new SqlParameter("@id", bookmarkId));
     }
 }
예제 #10
0
 public List <TopBookmark> GetTopBookmarkUrls()
 {
     using var context = new BookmarkManagerContext(_connectionString);
     return(context.Bookmarks.GroupBy(b => b.Url)
            .OrderByDescending(b => b.Count()).Take(5)
            .Select(i => new TopBookmark
     {
         Url = i.Key,
         Count = i.Count()
     })
            .ToList());
 }
예제 #11
0
        public List <TopBookmark> GetTopBookmarkUrls_TheSimplestWay()
        {
            using var context = new BookmarkManagerContext(_connectionString);
            var bookmarks = context.Bookmarks.ToList();
            var list      = new List <TopBookmark>();

            foreach (var bookmark in bookmarks)
            {
                var topBookmark = list.FirstOrDefault(b => b.Url == bookmark.Url);
                if (topBookmark == null)
                {
                    topBookmark = new TopBookmark {
                        Url = bookmark.Url
                    };
                    list.Add(topBookmark);
                }

                topBookmark.Count++;
            }

            return(list.OrderByDescending(b => b.Count).Take(5).ToList());
        }
예제 #12
0
 public void DeleteBookmark(int bookmarkId)
 {
     using var context = new BookmarkManagerContext(_connectionString);
     context.Database.ExecuteSqlInterpolated($"DELETE FROM Bookmarks WHERE Id = {bookmarkId}");
 }
예제 #13
0
 public void UpdateBookmark(string title, int bookmarkId)
 {
     using var context = new BookmarkManagerContext(_connectionString);
     context.Database.ExecuteSqlInterpolated($"UPDATE Bookmarks SET Title = {title} WHERE Id = {bookmarkId}");
 }