55 lines
1.6 KiB
Python
55 lines
1.6 KiB
Python
from typing import Dict, Optional
|
|
from pydantic import BaseModel
|
|
|
|
class Content(BaseModel):
|
|
type: str
|
|
key: str
|
|
url: Optional[str | None] = None
|
|
|
|
class Tag(BaseModel):
|
|
status: str
|
|
content: Content | Dict[str, Content] | None = None
|
|
|
|
class Customer(BaseModel):
|
|
status: str
|
|
tags: Dict[str, Tag] | None = None
|
|
|
|
class Redirects(BaseModel):
|
|
customers: Dict[str, Customer] | None = None
|
|
|
|
if __name__ == "__main__":
|
|
r = Redirects (
|
|
customers = {
|
|
"cust1": Customer(
|
|
status="active",
|
|
tags= {
|
|
"tag1" : Tag (
|
|
status="active",
|
|
content= Content(
|
|
type="s3",
|
|
key="foo",
|
|
url=None
|
|
)
|
|
),
|
|
"tag2" : Tag(
|
|
status="active",
|
|
content = {
|
|
"face1" : Content(
|
|
type="s3",
|
|
key="contentface1",
|
|
url = "foo"
|
|
),
|
|
"face2": Content(
|
|
type="s3",
|
|
key="contentface2",
|
|
url = "bar"
|
|
),
|
|
}
|
|
)
|
|
}
|
|
)
|
|
}
|
|
)
|
|
|
|
r.customers['cust2'] = Customer(status="inactive", tags=None)
|
|
print(r.model_dump_json(indent=2)) |