mirror of
				https://github.com/pelican-dev/panel.git
				synced 2025-10-31 03:16:52 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			78 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			78 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import http from '@/api/http';
 | |
| 
 | |
| export interface Schedule {
 | |
|     id: number;
 | |
|     name: string;
 | |
|     cron: {
 | |
|         dayOfWeek: string;
 | |
|         month: string;
 | |
|         dayOfMonth: string;
 | |
|         hour: string;
 | |
|         minute: string;
 | |
|     };
 | |
|     isActive: boolean;
 | |
|     isProcessing: boolean;
 | |
|     onlyWhenOnline: boolean;
 | |
|     lastRunAt: Date | null;
 | |
|     nextRunAt: Date | null;
 | |
|     createdAt: Date;
 | |
|     updatedAt: Date;
 | |
| 
 | |
|     tasks: Task[];
 | |
| }
 | |
| 
 | |
| export interface Task {
 | |
|     id: number;
 | |
|     sequenceId: number;
 | |
|     action: string;
 | |
|     payload: string;
 | |
|     timeOffset: number;
 | |
|     isQueued: boolean;
 | |
|     continueOnFailure: boolean;
 | |
|     createdAt: Date;
 | |
|     updatedAt: Date;
 | |
| }
 | |
| 
 | |
| export const rawDataToServerTask = (data: any): Task => ({
 | |
|     id: data.id,
 | |
|     sequenceId: data.sequence_id,
 | |
|     action: data.action,
 | |
|     payload: data.payload,
 | |
|     timeOffset: data.time_offset,
 | |
|     isQueued: data.is_queued,
 | |
|     continueOnFailure: data.continue_on_failure,
 | |
|     createdAt: new Date(data.created_at),
 | |
|     updatedAt: new Date(data.updated_at),
 | |
| });
 | |
| 
 | |
| export const rawDataToServerSchedule = (data: any): Schedule => ({
 | |
|     id: data.id,
 | |
|     name: data.name,
 | |
|     cron: {
 | |
|         dayOfWeek: data.cron.day_of_week,
 | |
|         month: data.cron.month,
 | |
|         dayOfMonth: data.cron.day_of_month,
 | |
|         hour: data.cron.hour,
 | |
|         minute: data.cron.minute,
 | |
|     },
 | |
|     isActive: data.is_active,
 | |
|     isProcessing: data.is_processing,
 | |
|     onlyWhenOnline: data.only_when_online,
 | |
|     lastRunAt: data.last_run_at ? new Date(data.last_run_at) : null,
 | |
|     nextRunAt: data.next_run_at ? new Date(data.next_run_at) : null,
 | |
|     createdAt: new Date(data.created_at),
 | |
|     updatedAt: new Date(data.updated_at),
 | |
| 
 | |
|     tasks: (data.relationships?.tasks?.data || []).map((row: any) => rawDataToServerTask(row.attributes)),
 | |
| });
 | |
| 
 | |
| export default async (uuid: string): Promise<Schedule[]> => {
 | |
|     const { data } = await http.get(`/api/client/servers/${uuid}/schedules`, {
 | |
|         params: {
 | |
|             include: ['tasks'],
 | |
|         },
 | |
|     });
 | |
| 
 | |
|     return (data.data || []).map((row: any) => rawDataToServerSchedule(row.attributes));
 | |
| };
 | 
