aboutsummaryrefslogtreecommitdiffhomepage
path: root/storage
diff options
context:
space:
mode:
authorGravatar Frédéric Guillot <fred@miniflux.net>2018-04-29 16:35:04 -0700
committerGravatar Frédéric Guillot <fred@miniflux.net>2018-04-29 16:35:04 -0700
commitf49b42f70f902d4da1e0fa4080e99164b331b716 (patch)
treec6bdd19f11d100c44b0d30344ec37038f649e988 /storage
parent1eba1730d1af50ed545f4fde78b22d6fb62ca11e (diff)
Use vanilla HTTP handlers (refactoring)
Diffstat (limited to 'storage')
-rw-r--r--storage/category.go3
-rw-r--r--storage/entry.go14
-rw-r--r--storage/user_session.go12
3 files changed, 20 insertions, 9 deletions
diff --git a/storage/category.go b/storage/category.go
index 197b78b..bbb4c86 100644
--- a/storage/category.go
+++ b/storage/category.go
@@ -112,7 +112,8 @@ func (s *Storage) CategoriesWithFeedCount(userID int64) (model.Categories, error
query := `SELECT
c.id, c.user_id, c.title,
(SELECT count(*) FROM feeds WHERE feeds.category_id=c.id) AS count
- FROM categories c WHERE user_id=$1`
+ FROM categories c WHERE user_id=$1
+ ORDER BY c.title ASC`
rows, err := s.db.Query(query, userID)
if err != nil {
diff --git a/storage/entry.go b/storage/entry.go
index d56d5de..fb1fb59 100644
--- a/storage/entry.go
+++ b/storage/entry.go
@@ -16,6 +16,20 @@ import (
"github.com/lib/pq"
)
+// CountUnreadEntries returns the number of unread entries.
+func (s *Storage) CountUnreadEntries(userID int64) int {
+ builder := s.NewEntryQueryBuilder(userID)
+ builder.WithStatus(model.EntryStatusUnread)
+
+ n, err := builder.CountEntries()
+ if err != nil {
+ logger.Error("unable to count unread entries: %v", err)
+ return 0
+ }
+
+ return n
+}
+
// NewEntryQueryBuilder returns a new EntryQueryBuilder
func (s *Storage) NewEntryQueryBuilder(userID int64) *EntryQueryBuilder {
return NewEntryQueryBuilder(s, userID)
diff --git a/storage/user_session.go b/storage/user_session.go
index e9e8ebe..990157d 100644
--- a/storage/user_session.go
+++ b/storage/user_session.go
@@ -47,24 +47,20 @@ func (s *Storage) UserSessions(userID int64) (model.UserSessions, error) {
}
// CreateUserSession creates a new sessions.
-func (s *Storage) CreateUserSession(username, userAgent, ip string) (sessionID string, err error) {
- var userID int64
-
+func (s *Storage) CreateUserSession(username, userAgent, ip string) (sessionID string, userID int64, err error) {
err = s.db.QueryRow("SELECT id FROM users WHERE username = LOWER($1)", username).Scan(&userID)
if err != nil {
- return "", fmt.Errorf("unable to fetch UserID: %v", err)
+ return "", 0, fmt.Errorf("unable to fetch user ID: %v", err)
}
token := crypto.GenerateRandomString(64)
query := "INSERT INTO user_sessions (token, user_id, user_agent, ip) VALUES ($1, $2, $3, $4)"
_, err = s.db.Exec(query, token, userID, userAgent, ip)
if err != nil {
- return "", fmt.Errorf("unable to create user session: %v", err)
+ return "", 0, fmt.Errorf("unable to create user session: %v", err)
}
- s.SetLastLogin(userID)
-
- return token, nil
+ return token, userID, nil
}
// UserSessionByToken finds a session by the token.