pub trait GrpcLinkService
where Self::LinkedResourceObject: ObjectType<Self::LinkedData> + PsqlType + PsqlSearch + LinkedResource<Self::LinkedData> + From<Ids> + From<Self::LinkedData> + Clone + Sync + Send + 'static, Self::LinkedData: GrpcDataObjectType + TryFrom<Row> + 'static, Self::ResourceObject: ObjectType<Self::Data> + PsqlType + PsqlSearch + SimpleResource<Self::Data> + From<Id> + From<Self::Data> + Clone + Sync + Send + 'static, Self::Data: GrpcDataObjectType + TryFrom<Row> + 'static, Self::OtherResourceObject: ObjectType<Self::OtherData> + PsqlType + PsqlSearch + SimpleResource<Self::OtherData> + From<Id> + From<Self::OtherData> + Clone + Sync + Send + 'static, Self::OtherData: GrpcDataObjectType + TryFrom<Row> + 'static, Self::OtherList: TryFrom<Vec<Row>>, Status: From<<Self::LinkedData as TryFrom<Row>>::Error> + From<<Self::OtherList as TryFrom<Vec<Row>>>::Error>,
{ type LinkedResourceObject; type LinkedData; type ResourceObject; type Data; type OtherResourceObject; type OtherList; type OtherData; // Provided methods fn generic_link<'life0, 'async_trait>( &'life0 self, id: String, other_ids: Vec<Uuid>, replace: bool ) -> Pin<Box<dyn Future<Output = Result<Response<()>, Status>> + Send + 'async_trait>> where Self: Sync + 'async_trait, 'life0: 'async_trait { ... } fn generic_unlink<'life0, 'async_trait>( &'life0 self, request: Request<Id> ) -> Pin<Box<dyn Future<Output = Result<Response<()>, Status>> + Send + 'async_trait>> where Self: Sync + 'async_trait, 'life0: 'async_trait { ... } fn generic_get_linked_ids<'life0, 'async_trait>( &'life0 self, request: Request<Id> ) -> Pin<Box<dyn Future<Output = Result<Response<IdList>, Status>> + Send + 'async_trait>> where Self: Send + 'async_trait + Sync, 'life0: 'async_trait { ... } fn generic_get_linked<'life0, 'async_trait>( &'life0 self, request: Request<Id> ) -> Pin<Box<dyn Future<Output = Result<Response<Self::OtherList>, Status>> + Send + 'async_trait>> where Self: Send + 'async_trait + Sync, 'life0: 'async_trait { ... } fn _get_linked<'async_trait>( id: Id ) -> Pin<Box<dyn Future<Output = Result<Vec<String>, ArrErr>> + Send + 'async_trait>> where Self: Send + 'async_trait { ... } fn generic_is_ready<'life0, 'async_trait>( &'life0 self, _request: Request<ReadyRequest> ) -> Pin<Box<dyn Future<Output = Result<Response<ReadyResponse>, Status>> + Send + 'async_trait>> where Self: Sync + 'async_trait, 'life0: 'async_trait { ... } }
Expand description

Generic gRPC object traits to provide wrappers for common Resource functions

T: ResourceObject<super::Data> Resource type of ‘super’ resource being linked U: super::Data Data type of ‘super’ resource being linked V: ResourceObject<Data> combined resource Resource type W: Data combined resource Data type

Required Associated Types§

source

type LinkedResourceObject

The type expected for the ResourceObject<Data> type of the linked resource. Must implement; ObjectType<Self::Data>, PsqlType, PsqlSearch, LinkedResource<Self::Data>, From<Id>, From<Self::Data>, From<Self::UpdateObject>, Clone, sync, send

source

type LinkedData

The type expected for the Data struct of the linked resource. Must implement; GrpcDataObjectType, TryFrom<Row>

source

type ResourceObject

The type expected for the ResourceObject<Data> type of the ‘main’ resource. Must implement; ObjectType<Self::Data>, PsqlType, PsqlSearch, SimpleResource<Self::Data>, From<Id>, From<Self::Data>, From<Self::UpdateObject>, Clone, sync, send

source

type Data

The type expected for the Data struct of the ‘main’ resource. Must implement; GrpcDataObjectType, TryFrom<Row>

source

type OtherResourceObject

The type expected for the ResourceObject<Data> type of the ‘other’ resource. Must implement; ObjectType<Self::Data>, PsqlType, PsqlSearch, SimpleResource<Self::Data>, From<Id>, From<Self::Data>, From<Self::UpdateObject>, Clone, sync, send

source

type OtherList

The type expected for the List struct of the ‘other’ resource. Must implement; TryFrom<[Vec<Row>]>

source

type OtherData

The type expected for the Data struct of the ‘other’ resource. Must implement; GrpcDataObjectType, TryFrom<Row>

Provided Methods§

Returns an empty tonic gRCP Response on success

Inserts new entries into the database for each id, other_id combination if they don’t exist yet. When replace is set to true, all existing entries will be removed first. The existence of the provided resource id will be validated before insert.

Errors

Returns Status with Code::NotFound if no record exists for the given id. Returns Status with Code::Internal if the provided Id can not be converted to a uuid::Uuid.
Returns Status with Code::Internal if any error is returned from the db search result.

Returns an empty tonic gRCP Response on success

Removes all entries from the link table for the given id. The existence of the provided resource id will be validated before unlink.

Errors

Returns Status with Code::NotFound if no record exists for the given id. Returns Status with Code::Internal if the provided Id can not be converted to valid uuid::Uuid.
Returns Status with Code::Internal if any error is returned from the db search result.

source

fn generic_get_linked_ids<'life0, 'async_trait>( &'life0 self, request: Request<Id> ) -> Pin<Box<dyn Future<Output = Result<Response<IdList>, Status>> + Send + 'async_trait>>
where Self: Send + 'async_trait + Sync, 'life0: 'async_trait,

Returns a tonic gRCP Response with IdList of found ids on success

The existence of the provided resource id will be validated first.

Errors

Returns Status with Code::NotFound if no record exists for the given id. Returns Status with Code::Internal if the provided Id can not be converted to a uuid::Uuid.
Returns Status with Code::Internal if any error is returned from the db search result.

source

fn generic_get_linked<'life0, 'async_trait>( &'life0 self, request: Request<Id> ) -> Pin<Box<dyn Future<Output = Result<Response<Self::OtherList>, Status>> + Send + 'async_trait>>
where Self: Send + 'async_trait + Sync, 'life0: 'async_trait,

Returns a tonic gRCP Response containing an object of provided type [Self::OtherList].

The existence of the provided resource id will be validated first.

Errors

Returns Status with Code::NotFound if no record exists for the given id. Returns Status with Code::Internal if the provided Id can not be converted to a uuid::Uuid.
Returns Status with Code::Internal if any error is returned from the db search result.

source

fn _get_linked<'async_trait>( id: Id ) -> Pin<Box<dyn Future<Output = Result<Vec<String>, ArrErr>> + Send + 'async_trait>>
where Self: Send + 'async_trait,

Internal function used for generic_get_linked_ids and generic_get_linked

source

fn generic_is_ready<'life0, 'async_trait>( &'life0 self, _request: Request<ReadyRequest> ) -> Pin<Box<dyn Future<Output = Result<Response<ReadyResponse>, Status>> + Send + 'async_trait>>
where Self: Sync + 'async_trait, 'life0: 'async_trait,

Returns ready:true when service is available

Object Safety§

This trait is not object safe.

Implementors§

source§

impl GrpcLinkService for svc_storage::grpc::server::group_user::GrpcServer

source§

impl GrpcLinkService for svc_storage::grpc::server::group_vehicle::GrpcServer

source§

impl GrpcLinkService for svc_storage::grpc::server::group_vertipad::GrpcServer

source§

impl GrpcLinkService for svc_storage::grpc::server::group_vertiport::GrpcServer

source§

impl GrpcLinkService for svc_storage::grpc::server::itinerary_flight_plan::GrpcServer

source§

impl GrpcLinkService for svc_storage::grpc::server::user_group::GrpcServer

source§

impl GrpcLinkService for svc_storage::grpc::server::vehicle_group::GrpcServer

source§

impl GrpcLinkService for svc_storage::grpc::server::vertipad_group::GrpcServer

source§

impl GrpcLinkService for svc_storage::grpc::server::vertiport_group::GrpcServer