handler.go
# handler.go
package registration
import (
“github.com/cosmos/cosmos-sdk/types”
“github.com/cosmos/cosmos-sdk/types/sdkerrors”
"github.com/your_username/experience/x/registration/types"
)
// NewHandler crea un nuovo handler per il modulo di registrazione dei pazienti
func NewHandler(k Keeper) types.Handler {
return func(ctx types.Context, msg types.Msg) (*types.Result, error) {
switch msg := msg.(type) {
case *types.MsgRegisterPatient:
return handleMsgRegisterPatient(ctx, k, msg)
default:
return nil, sdkerrors.Wrap(sdkerrors.ErrUnknownRequest, “unrecognized registration message type”)
}
}
}
// handleMsgRegisterPatient gestisce il messaggio di registrazione del paziente
func handleMsgRegisterPatient(ctx types.Context, k Keeper, msg types.MsgRegisterPatient) (types.Result, error) {
// Creare un nuovo paziente e wallet associato
if err := k.RegisterPatient(ctx, msg.Creator, msg.Name, msg.Email); err != nil {
return nil, err
}
return &types.Result{Events: ctx.EventManager().Events()}, nil
}