mirror of
https://iceshrimp.dev/limepotato/jormungandr-bite.git
synced 2024-11-14 05:57:32 -07:00
管理画面のジョブキュー一覧の修正 (#5586)
* Fix: inboxのジョブキューが表示されない * ジョブキューで試行回数等を表示するように * DBとオブジェクトストレージのジョブキューが表示されるように
This commit is contained in:
parent
37cd41e0c9
commit
1b919cd7e3
2 changed files with 25 additions and 12 deletions
|
@ -48,14 +48,15 @@
|
|||
</ui-select>
|
||||
</ui-horizon-group>
|
||||
<sequential-entrance animation="entranceFromTop" delay="25">
|
||||
<div class="xvvuvgsv" v-for="job in jobs">
|
||||
<div class="xvvuvgsv" v-for="job in jobs" :key="job.id">
|
||||
<b>{{ job.id }}</b>
|
||||
<template v-if="domain === 'deliver'">
|
||||
<span>{{ job.data.to }}</span>
|
||||
</template>
|
||||
<template v-if="domain === 'inbox'">
|
||||
<span>{{ job.activity.id }}</span>
|
||||
<span>{{ job.data.activity.id }}</span>
|
||||
</template>
|
||||
<span>{{ `(${job.attempts}/${job.maxAttempts}, ${Math.floor((jobsFetched - job.timestamp) / 1000 / 60)}min)` }}</span>
|
||||
</div>
|
||||
</sequential-entrance>
|
||||
<ui-info v-if="jobs.length == jobsLimit">{{ $t('result-is-truncated', { n: jobsLimit }) }}</ui-info>
|
||||
|
@ -84,6 +85,7 @@ export default Vue.extend({
|
|||
chartLimit: 200,
|
||||
jobs: [],
|
||||
jobsLimit: 50,
|
||||
jobsFetched: Date.now(),
|
||||
domain: 'deliver',
|
||||
state: 'delayed',
|
||||
faTasks, faPaperPlane, faInbox, faChartBar, faDatabase, faCloud
|
||||
|
@ -140,6 +142,7 @@ export default Vue.extend({
|
|||
state: this.state,
|
||||
limit: this.jobsLimit
|
||||
}).then(jobs => {
|
||||
this.jobsFetched = Date.now(),
|
||||
this.jobs = jobs;
|
||||
});
|
||||
},
|
||||
|
@ -149,7 +152,8 @@ export default Vue.extend({
|
|||
|
||||
<style lang="stylus" scoped>
|
||||
.xvvuvgsv
|
||||
> b
|
||||
margin-right 16px
|
||||
margin-left -6px
|
||||
> b, span
|
||||
margin 0 6px
|
||||
|
||||
</style>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import $ from 'cafy';
|
||||
import define from '../../../define';
|
||||
import { deliverQueue, inboxQueue } from '../../../../../queue';
|
||||
import { deliverQueue, inboxQueue, dbQueue, objectStorageQueue } from '../../../../../queue';
|
||||
|
||||
export const meta = {
|
||||
tags: ['admin'],
|
||||
|
@ -10,11 +10,11 @@ export const meta = {
|
|||
|
||||
params: {
|
||||
domain: {
|
||||
validator: $.str,
|
||||
validator: $.str.or(['deliver', 'inbox', 'db', 'objectStorage']),
|
||||
},
|
||||
|
||||
state: {
|
||||
validator: $.str,
|
||||
validator: $.str.or(['active', 'waiting', 'delayed']),
|
||||
},
|
||||
|
||||
limit: {
|
||||
|
@ -28,13 +28,22 @@ export default define(meta, async (ps) => {
|
|||
const queue =
|
||||
ps.domain === 'deliver' ? deliverQueue :
|
||||
ps.domain === 'inbox' ? inboxQueue :
|
||||
ps.domain === 'db' ? dbQueue :
|
||||
ps.domain === 'objectStorage' ? objectStorageQueue :
|
||||
null as never;
|
||||
|
||||
const jobs = await queue.getJobs([ps.state], 0, ps.limit!);
|
||||
|
||||
return jobs.map(job => ({
|
||||
id: job.id,
|
||||
data: job.data,
|
||||
attempts: job.attemptsMade,
|
||||
}));
|
||||
return jobs.map(job => {
|
||||
const data = job.data;
|
||||
delete data.content;
|
||||
delete data.user;
|
||||
return {
|
||||
id: job.id,
|
||||
data,
|
||||
attempts: job.attemptsMade,
|
||||
maxAttempts: job.opts ? job.opts.attempts : 0,
|
||||
timestamp: job.timestamp,
|
||||
};
|
||||
});
|
||||
});
|
||||
|
|
Loading…
Reference in a new issue