You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
iTi-Flask/iti/exchange/schemas.py

148 lines
3.9 KiB
Python

from __future__ import annotations
from datetime import datetime
from typing import Any
from pydantic import AliasChoices, Field
from iti.schemas import ItiModel
from .base import ExchangeOperation, ExchangeTemplateSourceKind
class ExchangeVariableSchema(ItiModel):
key: str
label: str
header: str | None = None
description: str | None = None
required: bool = False
example: str | None = None
class ExchangeTemplateLayoutSchema(ItiModel):
title: str | None = None
sheet_name: str | None = None
title_row: int | None = 1
header_row: int = 2
data_start_row: int | None = None
class ExchangeScopeSchema(ItiModel):
biz_domain: str
biz_obj: str
operation: ExchangeOperation = Field(
validation_alias=AliasChoices("operation", "templateKind", "taskKind")
)
class ExchangeTemplateCreateRequest(ExchangeScopeSchema):
code: str | None = None
name: str
description: str | None = None
layout: ExchangeTemplateLayoutSchema | None = None
meta: dict[str, Any] = Field(default_factory=dict)
class ExchangeTemplateUpdateRequest(ItiModel):
name: str | None = None
description: str | None = None
status: str | None = None
current_version: str | None = None
layout: ExchangeTemplateLayoutSchema | None = None
meta: dict[str, Any] | None = None
class ExchangeTemplateVersionCreateRequest(ItiModel):
version: str
variables: list[ExchangeVariableSchema] | None = None
layout: ExchangeTemplateLayoutSchema | None = None
meta: dict[str, Any] = Field(default_factory=dict)
make_current: bool = True
class ExchangePlanRequest(ExchangeScopeSchema):
template_id: str | None = None
version_id: str | None = None
version: str | None = None
code: str | None = None
source_kind: ExchangeTemplateSourceKind | None = None
source_name: str | None = None
source_service: str | None = None
name: str | None = None
description: str | None = None
layout: ExchangeTemplateLayoutSchema | None = None
variables: list[ExchangeVariableSchema] | None = None
class ExchangePlanResolveRequest(ExchangePlanRequest):
pass
class ExchangePlanTemplateFileRequest(ExchangePlanResolveRequest):
pass
class ExchangeTaskCreateRequest(ExchangePlanRequest):
storage_key: str | None = None
input_payload: dict[str, Any] = Field(default_factory=dict)
class ExchangeTaskRunRequest(ItiModel):
pass
class ExchangeTemplateResponse(ItiModel):
id: str
code: str
name: str
biz_domain: str
biz_obj: str
operation: str
status: str
description: str | None = None
current_version: str | None = None
layout: dict[str, Any] = Field(default_factory=dict)
meta: dict[str, Any] = Field(default_factory=dict)
created_at: datetime
updated_at: datetime
class ExchangeTemplateVersionResponse(ItiModel):
id: str
template_id: str
version: str
biz_domain: str
biz_obj: str
operation: str
published_at: datetime | None = None
file_key: str | None = None
checksum: str | None = None
layout: dict[str, Any] = Field(default_factory=dict)
variables: list[dict[str, Any]] = Field(default_factory=list)
meta: dict[str, Any] = Field(default_factory=dict)
created_at: datetime
updated_at: datetime
class ExchangeTaskResponse(ItiModel):
id: str
template_id: str | None = None
template_version_id: str | None = None
biz_domain: str
biz_obj: str
operation: str
status: str
requested_by: str | None = None
storage_key: str | None = None
success_count: int
failed_count: int
error_count: int
message: str | None = None
input_payload: dict[str, Any] = Field(default_factory=dict)
result_payload: dict[str, Any] = Field(default_factory=dict)
started_at: datetime | None = None
finished_at: datetime | None = None
meta: dict[str, Any] = Field(default_factory=dict)
created_at: datetime
updated_at: datetime