"""Packages schemas.""" from __future__ import annotations from datetime import datetime, date, time from uuid import UUID from pydantic import BaseModel, ConfigDict, Field from app.models.types import LifecycleStatus from app.schemas.common import ORMBase _FORBID = ConfigDict(extra="forbid") class PackageDefinitionCreate(BaseModel): model_config = _FORBID organization_id: UUID code: str = Field(max_length=50) name: str = Field(max_length=255) description: str | None = None total_sessions: int = 1 price: float | None = None valid_days: int | None = None status: LifecycleStatus = LifecycleStatus.ACTIVE class PackageDefinitionRead(ORMBase): id: UUID tenant_id: UUID organization_id: UUID code: str name: str description: str | None total_sessions: int price: float | None valid_days: int | None status: LifecycleStatus is_deleted: bool created_by: str | None updated_by: str | None created_at: datetime updated_at: datetime from datetime import datetime, date, time from uuid import UUID from pydantic import BaseModel, ConfigDict, Field from app.models.types import LifecycleStatus from app.schemas.common import ORMBase _FORBID = ConfigDict(extra="forbid") class MembershipPlanCreate(BaseModel): model_config = _FORBID organization_id: UUID code: str = Field(max_length=50) name: str = Field(max_length=255) description: str | None = None billing_interval_days: int = 30 price: float | None = None benefits: dict | None = None status: LifecycleStatus = LifecycleStatus.ACTIVE class MembershipPlanRead(ORMBase): id: UUID tenant_id: UUID organization_id: UUID code: str name: str description: str | None billing_interval_days: int price: float | None benefits: dict | None status: LifecycleStatus is_deleted: bool created_by: str | None updated_by: str | None created_at: datetime updated_at: datetime