mirror of
https://github.com/mealie-recipes/mealie.git
synced 2025-12-06 10:25:18 -05:00
22 lines
658 B
Python
22 lines
658 B
Python
from pydantic import BaseModel
|
|
|
|
|
|
def mapper[U: BaseModel, T: BaseModel](source: U, dest: T, **_) -> T:
|
|
"""
|
|
Map a source model to a destination model. Only top-level fields are mapped.
|
|
"""
|
|
|
|
for field in source.__class__.model_fields:
|
|
if field in dest.__class__.model_fields:
|
|
setattr(dest, field, getattr(source, field))
|
|
|
|
return dest
|
|
|
|
|
|
def cast[U: BaseModel, T: BaseModel](source: U, dest: type[T], **kwargs) -> T:
|
|
create_data = {
|
|
field: getattr(source, field) for field in source.__class__.model_fields if field in dest.model_fields
|
|
}
|
|
create_data.update(kwargs or {})
|
|
return dest(**create_data)
|