File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -533,6 +533,8 @@ export default {
533533 edit_title : 'Edit Timer' ,
534534 message_required : 'Message is required' ,
535535 target_required : 'Please select a target session' ,
536+ trigger : 'Trigger' ,
537+ triggered : 'Triggered' ,
536538 } ,
537539 todo : {
538540 title : 'Todos' ,
Original file line number Diff line number Diff line change @@ -533,6 +533,8 @@ export default {
533533 edit_title : '编辑计时器' ,
534534 message_required : '请填写目标消息' ,
535535 target_required : '请选择目标会话' ,
536+ trigger : '手动触发' ,
537+ triggered : '已触发' ,
536538 } ,
537539 todo : {
538540 title : '待办事项' ,
Original file line number Diff line number Diff line change @@ -165,6 +165,16 @@ async function remove(row: SchedulerRow) {
165165 }
166166}
167167
168+ async function trigger(row : SchedulerRow ) {
169+ try {
170+ await apiFetch (` /api/schedulers/${row .id }/trigger ` , ' POST' )
171+ show (t (' scheduler.triggered' ))
172+ await load ()
173+ } catch (e : any ) {
174+ show (e .message , ' error' )
175+ }
176+ }
177+
168178onMounted (() => {
169179 load ()
170180 tickHandle = setInterval (() => { now .value = Date .now () }, 30_000 )
@@ -250,6 +260,7 @@ onUnmounted(() => {
250260 </template >
251261
252262 <template #ops =" { row } " >
263+ <SButton type="outline" size="sm" @click =" trigger (row )" >{{ t('scheduler.trigger') }}</SButton >
253264 <SButton type="outline" size="sm" @click =" openEdit (row )" >{{ t('common.edit') }}</SButton >
254265 <SButton type="danger" size="sm" @click =" remove (row )" >{{ t('common.delete') }}</SButton >
255266 </template >
Original file line number Diff line number Diff line change @@ -217,6 +217,10 @@ class SchedulerService {
217217 if ( scheduler ) await this . schedule ( scheduler ) ;
218218 else this . executor . cancel ( schedulerId ) ;
219219 }
220+
221+ async triggerOnce ( schedulerId : number ) : Promise < void > {
222+ await executeScheduler ( schedulerId ) ;
223+ }
220224}
221225
222226export const schedulerService = new SchedulerService ( ) ;
Original file line number Diff line number Diff line change @@ -37,6 +37,15 @@ export class SchedulerRoutes {
3737 if ( isNaN ( id ) ) throwBad ( 'Invalid id' ) ;
3838 await schedulerService . delete ( id ) ;
3939 } ) ) ;
40+
41+ app . post ( '/api/schedulers/:id/trigger' , api ( async req => {
42+ const id = parseInt ( req . params . id as string , 10 ) ;
43+ if ( isNaN ( id ) ) throwBad ( 'Invalid id' ) ;
44+ const row = await schedulerService . findByPk ( id ) ;
45+ if ( ! row ) throwBad ( 'Scheduler not found' ) ;
46+ await schedulerService . triggerOnce ( id ) ;
47+ return { triggered : true } ;
48+ } ) ) ;
4049 }
4150}
4251
You can’t perform that action at this time.
0 commit comments