on admin index page, show number of messages in queue next to link to the queue list

This commit is contained in:
Mechiel Lukkien 2023-02-08 19:42:21 +01:00
parent 2154392bd8
commit 8bdca09b7b
No known key found for this signature in database
4 changed files with 30 additions and 2 deletions

View file

@ -1447,6 +1447,13 @@ func (Admin) QueueList(ctx context.Context) []queue.Msg {
return l
}
// QueueSize returns the number of messages currently in the outgoing queue.
func (Admin) QueueSize(ctx context.Context) int {
n, err := queue.Count()
xcheckf(ctx, err, "listing messages in queue")
return n
}
// QueueKick initiates delivery of a message from the queue.
func (Admin) QueueKick(ctx context.Context, id int64) {
n, err := queue.Kick(id, "", "")

View file

@ -188,7 +188,10 @@ const formatSize = n => {
}
const index = async () => {
const domains = await api.Domains()
const [domains, queueSize] = await Promise.all([
await api.Domains(),
await api.QueueSize(),
])
let fieldset, domain, account, localpart
@ -197,7 +200,7 @@ const index = async () => {
crumbs('Mox Admin'),
dom.p(
dom.a('Accounts', attr({href: '#accounts'})), dom.br(),
dom.a('Queue', attr({href: '#queue'})), dom.br(),
dom.a('Queue', attr({href: '#queue'})), ' ('+queueSize+')', dom.br(),
),
dom.h2('Domains'),
domains.length === 0 ? box(red, 'No domains') :

View file

@ -552,6 +552,19 @@
}
]
},
{
"Name": "QueueSize",
"Docs": "QueueSize returns the number of messages currently in the outgoing queue.",
"Params": [],
"Returns": [
{
"Name": "r0",
"Typewords": [
"int32"
]
}
]
},
{
"Name": "QueueKick",
"Docs": "QueueKick initiates delivery of a message from the queue.",

View file

@ -162,6 +162,11 @@ func List() ([]Msg, error) {
return qmsgs, nil
}
// Count returns the number of messages in the delivery queue.
func Count() (int, error) {
return bstore.QueryDB[Msg](queueDB).Count()
}
// Add a new message to the queue. The queue is kicked immediately to start a
// first delivery attempt.
//