Commit 468f6492 authored by Kevin Lyda's avatar Kevin Lyda
Browse files

Fix NEXT

Closes #10.
parent 35a30a22
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -7,6 +7,8 @@ BINARY_NAME=bulletin
GO=go
GOFLAGS=-v
LDFLAGS=-w -s
RACE_FLAG=$(if $(filter arm% aarch64,$(shell uname -m)),,-race)
CGO_FLAG=$(if $(filter arm% aarch64,$(shell uname -m)),0,1)

all: build check

@@ -37,7 +39,7 @@ build:

test:
	@echo "Running tests..."
	CGO_ENABLED=1 $(GO) test -v -race -coverprofile=coverage.out ./...
	CGO_ENABLED=$(CGO_FLAG) $(GO) test -v $(RACE_FLAG) -coverprofile=coverage.out ./...
	@echo ""
	@echo "Tests complete"
	@echo "Overall coverage:"
+27 −25
Original line number Diff line number Diff line
@@ -151,10 +151,10 @@ func (q *Queries) GetAlertMessages(ctx context.Context, login string, createAt t
}

const getLastRead = `-- name: GetLastRead :many
SELECT CAST(MAX(m.id) AS INT) AS id, m.author FROM messages AS m, users AS u
  WHERE folder = ? AND u.login = m.author
  GROUP BY m.author
  ORDER BY m.author
SELECT CAST(MAX(s.msgid) AS INT) AS id, s.login AS author FROM seen AS s
  WHERE s.folder = ?
  GROUP BY s.login
  ORDER BY s.login
`

type GetLastReadRow struct {
@@ -162,12 +162,12 @@ type GetLastReadRow struct {
	Author string
}

// GetLastRead gets the last message read by a login in a folder.
// GetLastRead gets the last message read by each user in a folder.
//
//	SELECT CAST(MAX(m.id) AS INT) AS id, m.author FROM messages AS m, users AS u
//	  WHERE folder = ? AND u.login = m.author
//	  GROUP BY m.author
//	  ORDER BY m.author
//	SELECT CAST(MAX(s.msgid) AS INT) AS id, s.login AS author FROM seen AS s
//	  WHERE s.folder = ?
//	  GROUP BY s.login
//	  ORDER BY s.login
func (q *Queries) GetLastRead(ctx context.Context, folder string) ([]GetLastReadRow, error) {
	rows, err := q.db.QueryContext(ctx, getLastRead, folder)
	if err != nil {
@@ -192,10 +192,11 @@ func (q *Queries) GetLastRead(ctx context.Context, folder string) ([]GetLastRead
}

const getLastReadByEnabled = `-- name: GetLastReadByEnabled :many
SELECT CAST(MAX(m.id) AS INT) AS id, m.author FROM messages AS m, users AS u
  WHERE folder = ? AND u.login = m.author AND u.disabled = ?
  GROUP BY m.author
  ORDER BY m.author
SELECT CAST(MAX(s.msgid) AS INT) AS id, s.login AS author FROM seen AS s
  JOIN users AS u ON u.login = s.login
  WHERE s.folder = ? AND u.disabled = ?
  GROUP BY s.login
  ORDER BY s.login
`

type GetLastReadByEnabledRow struct {
@@ -203,12 +204,13 @@ type GetLastReadByEnabledRow struct {
	Author string
}

// GetLastReadByEnabled gets the last message for a user that's enabled.
// GetLastReadByEnabled gets the last message read by each enabled/disabled user in a folder.
//
//	SELECT CAST(MAX(m.id) AS INT) AS id, m.author FROM messages AS m, users AS u
//	  WHERE folder = ? AND u.login = m.author AND u.disabled = ?
//	  GROUP BY m.author
//	  ORDER BY m.author
//	SELECT CAST(MAX(s.msgid) AS INT) AS id, s.login AS author FROM seen AS s
//	  JOIN users AS u ON u.login = s.login
//	  WHERE s.folder = ? AND u.disabled = ?
//	  GROUP BY s.login
//	  ORDER BY s.login
func (q *Queries) GetLastReadByEnabled(ctx context.Context, folder string, disabled int64) ([]GetLastReadByEnabledRow, error) {
	rows, err := q.db.QueryContext(ctx, getLastReadByEnabled, folder, disabled)
	if err != nil {
@@ -233,8 +235,8 @@ func (q *Queries) GetLastReadByEnabled(ctx context.Context, folder string, disab
}

const getLastReadByUser = `-- name: GetLastReadByUser :one
SELECT CAST(MAX(m.id) AS INT) AS id, m.author FROM messages AS m, users AS u
  WHERE folder = ? AND u.login = m.author AND m.author = ?
SELECT CAST(MAX(s.msgid) AS INT) AS id, s.login AS author FROM seen AS s
  WHERE s.folder = ? AND s.login = ?
`

type GetLastReadByUserRow struct {
@@ -242,12 +244,12 @@ type GetLastReadByUserRow struct {
	Author string
}

// GetLastReadByUser get last message read by a user in a folder.
// GetLastReadByUser gets the last message read by a specific user in a folder.
//
//	SELECT CAST(MAX(m.id) AS INT) AS id, m.author FROM messages AS m, users AS u
//	  WHERE folder = ? AND u.login = m.author AND m.author = ?
func (q *Queries) GetLastReadByUser(ctx context.Context, folder string, author string) (GetLastReadByUserRow, error) {
	row := q.db.QueryRowContext(ctx, getLastReadByUser, folder, author)
//	SELECT CAST(MAX(s.msgid) AS INT) AS id, s.login AS author FROM seen AS s
//	  WHERE s.folder = ? AND s.login = ?
func (q *Queries) GetLastReadByUser(ctx context.Context, folder string, login string) (GetLastReadByUserRow, error) {
	row := q.db.QueryRowContext(ctx, getLastReadByUser, folder, login)
	var i GetLastReadByUserRow
	err := row.Scan(&i.ID, &i.Author)
	return i, err
+14 −13
Original line number Diff line number Diff line
@@ -79,24 +79,25 @@ DELETE FROM messages WHERE folder = ?;
-- name: LastMsgidIgnoringSeen :one
SELECT CAST(COALESCE(MAX(id), 0) AS INT) FROM messages AS m WHERE m.folder = ?1;

-- GetLastRead gets the last message read by a login in a folder.
-- GetLastRead gets the last message read by each user in a folder.
-- name: GetLastRead :many
SELECT CAST(MAX(m.id) AS INT) AS id, m.author FROM messages AS m, users AS u
  WHERE folder = ? AND u.login = m.author
  GROUP BY m.author
  ORDER BY m.author;
SELECT CAST(MAX(s.msgid) AS INT) AS id, s.login AS author FROM seen AS s
  WHERE s.folder = ?
  GROUP BY s.login
  ORDER BY s.login;

-- GetLastReadByEnabled gets the last message for a user that's enabled.
-- GetLastReadByEnabled gets the last message read by each enabled/disabled user in a folder.
-- name: GetLastReadByEnabled :many
SELECT CAST(MAX(m.id) AS INT) AS id, m.author FROM messages AS m, users AS u
  WHERE folder = ? AND u.login = m.author AND u.disabled = ?
  GROUP BY m.author
  ORDER BY m.author;
SELECT CAST(MAX(s.msgid) AS INT) AS id, s.login AS author FROM seen AS s
  JOIN users AS u ON u.login = s.login
  WHERE s.folder = ? AND u.disabled = ?
  GROUP BY s.login
  ORDER BY s.login;

-- GetLastReadByUser get last message read by a user in a folder.
-- GetLastReadByUser gets the last message read by a specific user in a folder.
-- name: GetLastReadByUser :one
SELECT CAST(MAX(m.id) AS INT) AS id, m.author FROM messages AS m, users AS u
  WHERE folder = ? AND u.login = m.author AND m.author = ?;
SELECT CAST(MAX(s.msgid) AS INT) AS id, s.login AS author FROM seen AS s
  WHERE s.folder = ? AND s.login = ?;

-- Search find messages that match subject or message text.
-- name: Search :many