"""follow domain — model, schemas, validators, and repository for user follows.

Follow records link a user to any target type (event, story, person, source,
entity) via a polymorphic (type, id) pair — no separate join tables needed.
"""

from repo_core.domains.follow.model import Follow, FollowTargetType
from repo_core.domains.follow.schema import (
    CreateFollowRequest,
    PatchFollowRequest,
    FollowResponse,
)
from repo_core.domains.follow.validator import (
    FollowTargetTypeValidator,
    TargetIdValidator,
    build_follow_pipeline,
)
from repo_core.domains.follow.repository import FollowRepository

__all__ = [
    "Follow",
    "FollowTargetType",
    "CreateFollowRequest",
    "PatchFollowRequest",
    "FollowResponse",
    "FollowTargetTypeValidator",
    "TargetIdValidator",
    "build_follow_pipeline",
    "FollowRepository",
]
