summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2019-03-08 13:03:38 +0900
committersyuilo <syuilotan@yahoo.co.jp>2019-03-08 13:03:38 +0900
commit78a82935200c5aaad0091eb675bede1bc4387642 (patch)
tree438708047316381a2a19f50c239bd7f96016fd68 /src
parent:art: (diff)
downloadsharkey-78a82935200c5aaad0091eb675bede1bc4387642.tar.gz
sharkey-78a82935200c5aaad0091eb675bede1bc4387642.tar.bz2
sharkey-78a82935200c5aaad0091eb675bede1bc4387642.zip
ジョブの数を一覧できるように
Diffstat (limited to 'src')
-rw-r--r--src/client/app/admin/views/queue.vue35
-rw-r--r--src/queue/index.ts6
-rw-r--r--src/server/api/endpoints/admin/queue/stats.ts21
3 files changed, 59 insertions, 3 deletions
diff --git a/src/client/app/admin/views/queue.vue b/src/client/app/admin/views/queue.vue
index fa9e3df780..ae3aa0db57 100644
--- a/src/client/app/admin/views/queue.vue
+++ b/src/client/app/admin/views/queue.vue
@@ -3,6 +3,34 @@
<ui-card>
<template #title>{{ $t('operation') }}</template>
<section>
+ <header>Deliver</header>
+ <ui-horizon-group inputs v-if="stats">
+ <ui-input :value="stats.deliver.waiting | number" type="text" readonly>
+ <span>Waiting</span>
+ </ui-input>
+ <ui-input :value="stats.deliver.active | number" type="text" readonly>
+ <span>Active</span>
+ </ui-input>
+ <ui-input :value="stats.deliver.delayed | number" type="text" readonly>
+ <span>Delayed</span>
+ </ui-input>
+ </ui-horizon-group>
+ </section>
+ <section>
+ <header>Inbox</header>
+ <ui-horizon-group inputs v-if="stats">
+ <ui-input :value="stats.inbox.waiting | number" type="text" readonly>
+ <span>Waiting</span>
+ </ui-input>
+ <ui-input :value="stats.inbox.active | number" type="text" readonly>
+ <span>Active</span>
+ </ui-input>
+ <ui-input :value="stats.inbox.delayed | number" type="text" readonly>
+ <span>Delayed</span>
+ </ui-input>
+ </ui-horizon-group>
+ </section>
+ <section>
<ui-button @click="removeAllJobs">{{ $t('remove-all-jobs') }}</ui-button>
</section>
</ui-card>
@@ -18,9 +46,16 @@ export default Vue.extend({
data() {
return {
+ stats: null
};
},
+ created() {
+ this.$root.api('admin/queue/stats').then(stats => {
+ this.stats = stats;
+ });
+ },
+
methods: {
async removeAllJobs() {
const process = async () => {
diff --git a/src/queue/index.ts b/src/queue/index.ts
index d5294f8367..93b103f5dc 100644
--- a/src/queue/index.ts
+++ b/src/queue/index.ts
@@ -21,9 +21,9 @@ function initializeQueue(name: string) {
} : null);
}
-const deliverQueue = initializeQueue('deliver');
-const inboxQueue = initializeQueue('inbox');
-const dbQueue = initializeQueue('db');
+export const deliverQueue = initializeQueue('deliver');
+export const inboxQueue = initializeQueue('inbox');
+export const dbQueue = initializeQueue('db');
export function deliver(user: ILocalUser, content: any, to: any) {
if (content == null) return null;
diff --git a/src/server/api/endpoints/admin/queue/stats.ts b/src/server/api/endpoints/admin/queue/stats.ts
new file mode 100644
index 0000000000..a90daa3989
--- /dev/null
+++ b/src/server/api/endpoints/admin/queue/stats.ts
@@ -0,0 +1,21 @@
+import define from '../../../define';
+import { deliverQueue } from '../../../../../queue';
+
+export const meta = {
+ tags: ['admin'],
+
+ requireCredential: true,
+ requireModerator: true,
+
+ params: {}
+};
+
+export default define(meta, async (ps) => {
+ const deliverJobCounts = await deliverQueue.getJobCounts();
+ const inboxJobCounts = await deliverQueue.getJobCounts();
+
+ return {
+ deliver: deliverJobCounts,
+ inbox: inboxJobCounts
+ };
+});