from dagster import Definitions
from dagster_components import (
    Component,
    ComponentLoadContext,
    DefaultComponentScaffolder,
    registered_component_type,
)
from pydantic import BaseModel

class {{ component_type_class_name }}Params(BaseModel):
    ...

@registered_component_type(name="{{ name }}")
class {{ component_type_class_name }}(Component):
    """COMPONENT SUMMARY HERE.

    COMPONENT DESCRIPTION HERE.
    """

    @classmethod
    def get_schema(cls):
        return {{ component_type_class_name }}Params

    @classmethod
    def get_scaffolder(cls) -> DefaultComponentScaffolder:
        return DefaultComponentScaffolder()

    @classmethod
    def load(
        cls,
        params: {{ component_type_class_name }}Params,
        context: ComponentLoadContext,
    ) -> "{{ component_type_class_name }}":
        # Add logic for mapping schema parameters to constructor args here.
        return cls()

    def build_defs(self, load_context: ComponentLoadContext) -> Definitions:
        # Add definition construction logic here.
        return Definitions()
