Loading Makefile +3 −1 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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:" Loading storage/messages.sql.go +27 −25 Original line number Diff line number Diff line Loading @@ -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 { Loading @@ -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 { Loading @@ -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 { Loading @@ -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 { Loading @@ -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 { Loading @@ -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 Loading storage/queries/messages.sql +14 −13 Original line number Diff line number Diff line Loading @@ -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 Loading Loading
Makefile +3 −1 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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:" Loading
storage/messages.sql.go +27 −25 Original line number Diff line number Diff line Loading @@ -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 { Loading @@ -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 { Loading @@ -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 { Loading @@ -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 { Loading @@ -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 { Loading @@ -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 Loading
storage/queries/messages.sql +14 −13 Original line number Diff line number Diff line Loading @@ -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 Loading