Skip to content

Commit 42a4119

Browse files
committed
Add Job DTOs
1 parent 3d9de21 commit 42a4119

File tree

1 file changed

+155
-0
lines changed

1 file changed

+155
-0
lines changed

servicestack/dtos.py

Lines changed: 155 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -430,3 +430,158 @@ class AuditBase:
430430

431431
deleted_date: Optional[datetime] = None
432432
deleted_by: Optional[str] = None
433+
434+
435+
class BackgroundJobState(str, Enum):
436+
QUEUED = 'Queued'
437+
STARTED = 'Started'
438+
EXECUTED = 'Executed'
439+
COMPLETED = 'Completed'
440+
FAILED = 'Failed'
441+
CANCELLED = 'Cancelled'
442+
443+
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
444+
@dataclass
445+
class JobStatSummary:
446+
name: Optional[str] = None
447+
total: int = 0
448+
completed: int = 0
449+
retries: int = 0
450+
failed: int = 0
451+
cancelled: int = 0
452+
453+
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
454+
@dataclass
455+
class HourSummary:
456+
hour: Optional[str] = None
457+
total: int = 0
458+
completed: int = 0
459+
failed: int = 0
460+
cancelled: int = 0
461+
462+
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
463+
@dataclass
464+
class WorkerStats:
465+
name: Optional[str] = None
466+
queued: int = 0
467+
received: int = 0
468+
completed: int = 0
469+
retries: int = 0
470+
failed: int = 0
471+
running_job: Optional[int] = None
472+
running_time: Optional[datetime.timedelta] = None
473+
474+
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
475+
@dataclass
476+
class BackgroundJobBase:
477+
id: int = 0
478+
parent_id: Optional[int] = None
479+
ref_id: Optional[str] = None
480+
worker: Optional[str] = None
481+
tag: Optional[str] = None
482+
batch_id: Optional[str] = None
483+
callback: Optional[str] = None
484+
depends_on: Optional[int] = None
485+
run_after: Optional[datetime.datetime] = None
486+
created_date: datetime.datetime = datetime.datetime(1, 1, 1)
487+
created_by: Optional[str] = None
488+
request_id: Optional[str] = None
489+
request_type: Optional[str] = None
490+
command: Optional[str] = None
491+
request: Optional[str] = None
492+
request_body: Optional[str] = None
493+
user_id: Optional[str] = None
494+
response: Optional[str] = None
495+
response_body: Optional[str] = None
496+
state: Optional[BackgroundJobState] = None
497+
started_date: Optional[datetime.datetime] = None
498+
completed_date: Optional[datetime.datetime] = None
499+
notified_date: Optional[datetime.datetime] = None
500+
retry_limit: Optional[int] = None
501+
attempts: int = 0
502+
duration_ms: int = 0
503+
timeout_secs: Optional[int] = None
504+
progress: Optional[float] = None
505+
status: Optional[str] = None
506+
logs: Optional[str] = None
507+
last_activity_date: Optional[datetime.datetime] = None
508+
reply_to: Optional[str] = None
509+
error_code: Optional[str] = None
510+
error: Optional[ResponseStatus] = None
511+
args: Optional[Dict[str, str]] = None
512+
meta: Optional[Dict[str, str]] = None
513+
514+
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
515+
@dataclass
516+
class BackgroundJob(BackgroundJobBase):
517+
id: int = 0
518+
519+
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
520+
@dataclass
521+
class JobSummary:
522+
id: int = 0
523+
parent_id: Optional[int] = None
524+
ref_id: Optional[str] = None
525+
worker: Optional[str] = None
526+
tag: Optional[str] = None
527+
batch_id: Optional[str] = None
528+
created_date: datetime.datetime = datetime.datetime(1, 1, 1)
529+
created_by: Optional[str] = None
530+
request_type: Optional[str] = None
531+
command: Optional[str] = None
532+
request: Optional[str] = None
533+
response: Optional[str] = None
534+
user_id: Optional[str] = None
535+
callback: Optional[str] = None
536+
started_date: Optional[datetime.datetime] = None
537+
completed_date: Optional[datetime.datetime] = None
538+
state: Optional[BackgroundJobState] = None
539+
duration_ms: int = 0
540+
attempts: int = 0
541+
error_code: Optional[str] = None
542+
error_message: Optional[str] = None
543+
544+
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
545+
@dataclass
546+
class BackgroundJobOptions:
547+
ref_id: Optional[str] = None
548+
parent_id: Optional[int] = None
549+
worker: Optional[str] = None
550+
run_after: Optional[datetime.datetime] = None
551+
callback: Optional[str] = None
552+
depends_on: Optional[int] = None
553+
user_id: Optional[str] = None
554+
retry_limit: Optional[int] = None
555+
reply_to: Optional[str] = None
556+
tag: Optional[str] = None
557+
batch_id: Optional[str] = None
558+
created_by: Optional[str] = None
559+
timeout_secs: Optional[int] = None
560+
timeout: Optional[datetime.timedelta] = None
561+
args: Optional[Dict[str, str]] = None
562+
run_command: Optional[bool] = None
563+
564+
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
565+
@dataclass
566+
class ScheduledTask:
567+
id: int = 0
568+
name: Optional[str] = None
569+
interval: Optional[datetime.timedelta] = None
570+
cron_expression: Optional[str] = None
571+
request_type: Optional[str] = None
572+
command: Optional[str] = None
573+
request: Optional[str] = None
574+
request_body: Optional[str] = None
575+
options: Optional[BackgroundJobOptions] = None
576+
last_run: Optional[datetime.datetime] = None
577+
last_job_id: Optional[int] = None
578+
579+
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
580+
@dataclass
581+
class CompletedJob(BackgroundJobBase):
582+
pass
583+
584+
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
585+
@dataclass
586+
class FailedJob(BackgroundJobBase):
587+
pass

0 commit comments

Comments
 (0)