74 lines
2.0 KiB
Python
74 lines
2.0 KiB
Python
from __future__ import annotations
|
|
|
|
from app.domain.admin import Experiment, ExperimentRelease, Goal, SdkConfig, Site, Variant
|
|
|
|
|
|
def to_site(raw: dict) -> Site:
|
|
return Site(
|
|
id=str(raw["id"]),
|
|
site_key=str(raw["site_key"]),
|
|
name=str(raw["name"]),
|
|
primary_domain=str(raw["primary_domain"]),
|
|
status=str(raw["status"]),
|
|
settings=raw.get("site_settings"),
|
|
)
|
|
|
|
|
|
def to_experiment(raw: dict) -> Experiment:
|
|
return Experiment(
|
|
id=str(raw["id"]),
|
|
site_id=str(raw["site_id"]),
|
|
experiment_key=str(raw["experiment_key"]),
|
|
name=str(raw["name"]),
|
|
module_type=str(raw["module_type"]),
|
|
status=str(raw["status"]),
|
|
start_at=raw.get("start_at"),
|
|
end_at=raw.get("end_at"),
|
|
targeting_config=raw.get("targeting_config"),
|
|
)
|
|
|
|
|
|
def to_variant(raw: dict) -> Variant:
|
|
return Variant(
|
|
id=str(raw["id"]),
|
|
experiment_id=str(raw["experiment_id"]),
|
|
variant_key=str(raw.get("variant_key", "")),
|
|
name=str(raw.get("name", "")),
|
|
traffic_weight=int(raw.get("traffic_weight", 0)),
|
|
content_config=raw.get("content_config"),
|
|
)
|
|
|
|
|
|
def to_release(raw: dict) -> ExperimentRelease:
|
|
return ExperimentRelease(
|
|
id=str(raw["id"]),
|
|
experiment_id=str(raw["experiment_id"]),
|
|
version_no=int(raw["version_no"]),
|
|
status=str(raw["status"]),
|
|
runtime_payload=raw.get("runtime_payload"),
|
|
)
|
|
|
|
|
|
def to_goal(raw: dict) -> Goal:
|
|
return Goal(
|
|
id=str(raw["id"]),
|
|
site_id=str(raw["site_id"]),
|
|
goal_key=str(raw["goal_key"]),
|
|
name=str(raw["name"]),
|
|
goal_type=str(raw["goal_type"]),
|
|
match_rule=raw.get("match_rule"),
|
|
)
|
|
|
|
|
|
def to_sdk_config(raw: dict) -> SdkConfig:
|
|
return SdkConfig(
|
|
id=str(raw["id"]),
|
|
site_id=str(raw["site_id"]),
|
|
sdk_key=str(raw["sdk_key"]),
|
|
status=str(raw["status"]),
|
|
origin_url=raw.get("origin_url"),
|
|
cdn_url=raw.get("cdn_url"),
|
|
sdk_config=raw.get("sdk_config"),
|
|
)
|
|
|