Issue Manager / issue-manager (push) Has been cancelled
Build Docs / changes (push) Has been cancelled
Build Docs / langs (push) Has been cancelled
Build Docs / build-docs (push) Has been cancelled
Build Docs / docs-all-green (push) Has been cancelled
Conflict detector / main (push) Has been cancelled
Test Redistribute / test-redistribute (fastapi) (push) Has been cancelled
Test Redistribute / test-redistribute (fastapi-slim) (push) Has been cancelled
Test Redistribute / test-redistribute-alls-green (push) Has been cancelled
Test / lint (push) Has been cancelled
Test / test (pydantic-v1, 3.10) (push) Has been cancelled
Test / test (pydantic-v1, 3.11) (push) Has been cancelled
Test / test (pydantic-v1, 3.13) (push) Has been cancelled
Test / test (pydantic-v1, 3.8) (push) Has been cancelled
Test / test (pydantic-v1, 3.9) (push) Has been cancelled
Test / test (pydantic-v2, 3.10) (push) Has been cancelled
Test / test (pydantic-v2, 3.11) (push) Has been cancelled
Test / test (pydantic-v2, 3.12) (push) Has been cancelled
Test / test (pydantic-v2, 3.13) (push) Has been cancelled
Test / test (pydantic-v2, 3.14) (push) Has been cancelled
Test / test (pydantic-v2, 3.8) (push) Has been cancelled
Test / test (pydantic-v2, 3.9) (push) Has been cancelled
Test / coverage-combine (push) Has been cancelled
Test / check (push) Has been cancelled
Label Approved / label-approved (push) Has been cancelled
FastAPI People Contributors / job (push) Has been cancelled
FastAPI People Sponsors / job (push) Has been cancelled
Update Topic Repos / topic-repos (push) Has been cancelled
FastAPI People / job (push) Has been cancelled
Test / test (pydantic-v1, 3.12) (push) Has been cancelled
143 lines
4.5 KiB
Python
143 lines
4.5 KiB
Python
from typing import List
|
|
|
|
from fastapi import FastAPI
|
|
|
|
from . import modelsv1, modelsv2, modelsv2b
|
|
|
|
app = FastAPI()
|
|
|
|
|
|
@app.post("/v1-to-v2/item")
|
|
def handle_v1_item_to_v2(data: modelsv1.Item) -> modelsv2.Item:
|
|
return modelsv2.Item(
|
|
new_title=data.title,
|
|
new_size=data.size,
|
|
new_description=data.description,
|
|
new_sub=modelsv2.SubItem(new_sub_name=data.sub.name),
|
|
new_multi=[modelsv2.SubItem(new_sub_name=s.name) for s in data.multi],
|
|
)
|
|
|
|
|
|
@app.post("/v2-to-v1/item")
|
|
def handle_v2_item_to_v1(data: modelsv2.Item) -> modelsv1.Item:
|
|
return modelsv1.Item(
|
|
title=data.new_title,
|
|
size=data.new_size,
|
|
description=data.new_description,
|
|
sub=modelsv1.SubItem(name=data.new_sub.new_sub_name),
|
|
multi=[modelsv1.SubItem(name=s.new_sub_name) for s in data.new_multi],
|
|
)
|
|
|
|
|
|
@app.post("/v1-to-v2/item-to-list")
|
|
def handle_v1_item_to_v2_list(data: modelsv1.Item) -> List[modelsv2.Item]:
|
|
converted = modelsv2.Item(
|
|
new_title=data.title,
|
|
new_size=data.size,
|
|
new_description=data.description,
|
|
new_sub=modelsv2.SubItem(new_sub_name=data.sub.name),
|
|
new_multi=[modelsv2.SubItem(new_sub_name=s.name) for s in data.multi],
|
|
)
|
|
return [converted, converted]
|
|
|
|
|
|
@app.post("/v1-to-v2/list-to-list")
|
|
def handle_v1_list_to_v2_list(data: List[modelsv1.Item]) -> List[modelsv2.Item]:
|
|
result = []
|
|
for item in data:
|
|
result.append(
|
|
modelsv2.Item(
|
|
new_title=item.title,
|
|
new_size=item.size,
|
|
new_description=item.description,
|
|
new_sub=modelsv2.SubItem(new_sub_name=item.sub.name),
|
|
new_multi=[modelsv2.SubItem(new_sub_name=s.name) for s in item.multi],
|
|
)
|
|
)
|
|
return result
|
|
|
|
|
|
@app.post("/v1-to-v2/list-to-item")
|
|
def handle_v1_list_to_v2_item(data: List[modelsv1.Item]) -> modelsv2.Item:
|
|
if data:
|
|
item = data[0]
|
|
return modelsv2.Item(
|
|
new_title=item.title,
|
|
new_size=item.size,
|
|
new_description=item.description,
|
|
new_sub=modelsv2.SubItem(new_sub_name=item.sub.name),
|
|
new_multi=[modelsv2.SubItem(new_sub_name=s.name) for s in item.multi],
|
|
)
|
|
return modelsv2.Item(
|
|
new_title="", new_size=0, new_sub=modelsv2.SubItem(new_sub_name="")
|
|
)
|
|
|
|
|
|
@app.post("/v2-to-v1/item-to-list")
|
|
def handle_v2_item_to_v1_list(data: modelsv2.Item) -> List[modelsv1.Item]:
|
|
converted = modelsv1.Item(
|
|
title=data.new_title,
|
|
size=data.new_size,
|
|
description=data.new_description,
|
|
sub=modelsv1.SubItem(name=data.new_sub.new_sub_name),
|
|
multi=[modelsv1.SubItem(name=s.new_sub_name) for s in data.new_multi],
|
|
)
|
|
return [converted, converted]
|
|
|
|
|
|
@app.post("/v2-to-v1/list-to-list")
|
|
def handle_v2_list_to_v1_list(data: List[modelsv2.Item]) -> List[modelsv1.Item]:
|
|
result = []
|
|
for item in data:
|
|
result.append(
|
|
modelsv1.Item(
|
|
title=item.new_title,
|
|
size=item.new_size,
|
|
description=item.new_description,
|
|
sub=modelsv1.SubItem(name=item.new_sub.new_sub_name),
|
|
multi=[modelsv1.SubItem(name=s.new_sub_name) for s in item.new_multi],
|
|
)
|
|
)
|
|
return result
|
|
|
|
|
|
@app.post("/v2-to-v1/list-to-item")
|
|
def handle_v2_list_to_v1_item(data: List[modelsv2.Item]) -> modelsv1.Item:
|
|
if data:
|
|
item = data[0]
|
|
return modelsv1.Item(
|
|
title=item.new_title,
|
|
size=item.new_size,
|
|
description=item.new_description,
|
|
sub=modelsv1.SubItem(name=item.new_sub.new_sub_name),
|
|
multi=[modelsv1.SubItem(name=s.new_sub_name) for s in item.new_multi],
|
|
)
|
|
return modelsv1.Item(title="", size=0, sub=modelsv1.SubItem(name=""))
|
|
|
|
|
|
@app.post("/v2-to-v1/same-name")
|
|
def handle_v2_same_name_to_v1(
|
|
item1: modelsv2.Item, item2: modelsv2b.Item
|
|
) -> modelsv1.Item:
|
|
return modelsv1.Item(
|
|
title=item1.new_title,
|
|
size=item2.dup_size,
|
|
description=item1.new_description,
|
|
sub=modelsv1.SubItem(name=item1.new_sub.new_sub_name),
|
|
multi=[modelsv1.SubItem(name=s.dup_sub_name) for s in item2.dup_multi],
|
|
)
|
|
|
|
|
|
@app.post("/v2-to-v1/list-of-items-to-list-of-items")
|
|
def handle_v2_items_in_list_to_v1_item_in_list(
|
|
data1: List[modelsv2.ItemInList], data2: List[modelsv2b.ItemInList]
|
|
) -> List[modelsv1.ItemInList]:
|
|
result = []
|
|
item1 = data1[0]
|
|
item2 = data2[0]
|
|
result = [
|
|
modelsv1.ItemInList(name1=item1.name2),
|
|
modelsv1.ItemInList(name1=item2.dup_name2),
|
|
]
|
|
return result
|