Saltar al contenido principal

Configurar la generación de métodos del servicio

[Traducción Beta No Oficial]

Esta página fue traducida por PageTurner AI (beta). No está respaldada oficialmente por el proyecto. ¿Encontraste un error? Reportar problema →

Por defecto, entproto generará varios métodos de servicio para un ent.Schema anotado con ent.Service(). La generación de métodos se puede personalizar incluyendo el argumento entproto.Methods() en la anotación entproto.Service(). entproto.Methods() acepta banderas de bits para determinar qué métodos de servicio deben generarse. Las banderas incluyen:

// Generates a Create gRPC service method for the entproto.Service.
entproto.MethodCreate

// Generates a Get gRPC service method for the entproto.Service.
entproto.MethodGet

// Generates an Update gRPC service method for the entproto.Service.
entproto.MethodUpdate

// Generates a Delete gRPC service method for the entproto.Service.
entproto.MethodDelete

// Generates a List gRPC service method for the entproto.Service.
entproto.MethodList

// Generates a Batch Create gRPC service method for the entproto.Service.
entproto.MethodBatchCreate

// Generates all service methods for the entproto.Service.
// This is the same behavior as not including entproto.Methods.
entproto.MethodAll

Para generar un servicio con múltiples métodos, realiza una operación OR bit a bit entre las banderas.

Para ver esto en acción, podemos modificar nuestro esquema de ent. Supongamos que queremos evitar que nuestro cliente gRPC modifique entradas. Podemos lograrlo modificando ent/schema/user.go:

ent/schema/user.go
func (User) Annotations() []schema.Annotation {
return []schema.Annotation{
entproto.Message(),
entproto.Service(
entproto.Methods(entproto.MethodCreate | entproto.MethodGet | entproto.MethodList | entproto.MethodBatchCreate),
),
}
}

Si volvemos a ejecutar go generate ./..., obtendremos la siguiente definición de servicio en entpb.proto:

ent/proto/entpb/entpb.proto
service UserService {
rpc Create ( CreateUserRequest ) returns ( User );

rpc Get ( GetUserRequest ) returns ( User );

rpc List ( ListUserRequest ) returns ( ListUserResponse );

rpc BatchCreate ( BatchCreateUsersRequest ) returns ( BatchCreateUsersResponse );
}

Observa que el servicio ya no incluye los métodos Update y Delete. ¡Perfecto!