Skip to content

Commit a07f241

Browse files
committed
[DOP-31720] Improve Swagger field examples
1 parent 546afdc commit a07f241

File tree

5 files changed

+30
-22
lines changed

5 files changed

+30
-22
lines changed

syncmaster/schemas/v1/transfers/db.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,11 @@
2020

2121
class DBTransfer(BaseModel):
2222
TABLE_NAME_PATTERN: ClassVar[str] = r"^[\w\d]+\.[\w\d]+$"
23-
table_name: str = Field(description="Table name", json_schema_extra={"pattern": TABLE_NAME_PATTERN})
23+
table_name: str = Field(
24+
description="Table name",
25+
json_schema_extra={"pattern": TABLE_NAME_PATTERN},
26+
examples=["myschema.mytable"],
27+
)
2428

2529
# make error message more user friendly
2630
@field_validator("table_name", mode="before")
@@ -60,7 +64,11 @@ class IcebergTransferSourceOrTarget(DBTransfer):
6064
type: ICEBERG_TYPE
6165

6266
TABLE_NAME_PATTERN: ClassVar[str] = r"^[\w\d]+(\.[\w\d]+)+$"
63-
table_name: str = Field(description="Table name", json_schema_extra={"pattern": TABLE_NAME_PATTERN})
67+
table_name: str = Field(
68+
description="Table name",
69+
json_schema_extra={"pattern": TABLE_NAME_PATTERN},
70+
examples=["myschema.mytable"],
71+
)
6472

6573
# make error message more user friendly
6674
@field_validator("table_name", mode="before")

syncmaster/schemas/v1/transfers/transformations/dataframe_columns_filter.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,12 @@ class IncludeFilter(BaseColumnsFilter):
1515

1616
class RenameFilter(BaseColumnsFilter):
1717
type: Literal["rename"]
18-
to: str
18+
to: str = Field(examples=["new_column_name"])
1919

2020

2121
class CastFilter(BaseColumnsFilter):
2222
type: Literal["cast"]
23-
as_type: str
23+
as_type: str = Field(examples=["int"])
2424

2525

2626
ColumnsFilter = IncludeFilter | RenameFilter | CastFilter

syncmaster/schemas/v1/transfers/transformations/dataframe_rows_filter.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -19,57 +19,57 @@ class IsNotNullFilter(BaseRowsFilter):
1919

2020
class EqualFilter(BaseRowsFilter):
2121
type: Literal["equal"]
22-
value: str
22+
value: str = Field(examples=["123"])
2323

2424

2525
class NotEqualFilter(BaseRowsFilter):
2626
type: Literal["not_equal"]
27-
value: str
27+
value: str = Field(examples=["123"])
2828

2929

3030
class GreaterThanFilter(BaseRowsFilter):
3131
type: Literal["greater_than"]
32-
value: str
32+
value: str = Field(examples=["123"])
3333

3434

3535
class GreaterOrEqualFilter(BaseRowsFilter):
3636
type: Literal["greater_or_equal"]
37-
value: str
37+
value: str = Field(examples=["123"])
3838

3939

4040
class LessThanFilter(BaseRowsFilter):
4141
type: Literal["less_than"]
42-
value: str
42+
value: str = Field(examples=["123"])
4343

4444

4545
class LessOrEqualFilter(BaseRowsFilter):
4646
type: Literal["less_or_equal"]
47-
value: str
47+
value: str = Field(examples=["123"])
4848

4949

5050
class LikeFilter(BaseRowsFilter):
5151
type: Literal["like"]
52-
value: str
52+
value: str = Field(examples=["%.json"])
5353

5454

5555
class ILikeFilter(BaseRowsFilter):
5656
type: Literal["ilike"]
57-
value: str
57+
value: str = Field(examples=["%.json"])
5858

5959

6060
class NotLikeFilter(BaseRowsFilter):
6161
type: Literal["not_like"]
62-
value: str
62+
value: str = Field(examples=["%.json"])
6363

6464

6565
class NotILikeFilter(BaseRowsFilter):
6666
type: Literal["not_ilike"]
67-
value: str
67+
value: str = Field(examples=["%.json"])
6868

6969

7070
class RegexpFilter(BaseRowsFilter):
7171
type: Literal["regexp"]
72-
value: str
72+
value: str = Field(examples=[r"^\d+\.json$"])
7373

7474

7575
RowsFilter = (

syncmaster/schemas/v1/transfers/transformations/file_metadata_filter.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
class NameGlobFilter(BaseModel):
1111
type: Literal["name_glob"]
12-
value: str
12+
value: str = Field(examples=["*.json"])
1313

1414
@field_validator("value", mode="before")
1515
@classmethod
@@ -23,7 +23,7 @@ def _validate_pattern(cls, value: str) -> str:
2323

2424
class NameRegexpFilter(BaseModel):
2525
type: Literal["name_regexp"]
26-
value: str
26+
value: str = Field(examples=[r"^\d+\.json$"])
2727

2828
@field_validator("value", mode="before")
2929
@classmethod
@@ -39,12 +39,12 @@ def _validate_pattern(cls, value: str) -> str:
3939

4040
class FileSizeMinFilter(BaseModel):
4141
type: Literal["file_size_min"]
42-
value: ByteSize
42+
value: ByteSize = Field(examples=[1024 * 1024])
4343

4444

4545
class FileSizeMaxFilter(BaseModel):
4646
type: Literal["file_size_max"]
47-
value: ByteSize
47+
value: ByteSize = Field(examples=[1024 * 1024 * 1024])
4848

4949

5050
MetadataFilter = NameGlobFilter | NameRegexpFilter | FileSizeMinFilter | FileSizeMaxFilter

syncmaster/schemas/v1/transfers/transformations/sql.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,15 @@
33
import re
44
from typing import Literal
55

6-
from pydantic import BaseModel, field_validator
6+
from pydantic import BaseModel, Field, field_validator
77

88
ALLOWED_SELECT_QUERY = re.compile(r"^\s*(SELECT|WITH)\b", re.IGNORECASE)
99

1010

1111
class Sql(BaseModel):
1212
type: Literal["sql"]
13-
query: str
14-
dialect: Literal["spark"] = "spark"
13+
query: str = Field(examples=["SELECT col1, col2 FROM source WHERE col3 <= 20"])
14+
dialect: Literal["spark"] = Field(default="spark", description="Static value for now")
1515

1616
@field_validator("query", mode="after")
1717
@classmethod

0 commit comments

Comments
 (0)