Pattern of Using Tagged Classes with Service Functions in Effect Typescript

Is it a common and recommended pattern to have a service that returns a tagged class that has functions that invoke other services? i.e.
export class StorageUnit extends Data.TaggedClass('StorageUnit')<{
  id: StorageUnitID;
  coordinatorID: StorageCoordinatorID;
  capacity: number
}> {
  fetchCoordinator() {
    return StorageCoordinatorService.get(this.coordinatorID);
  }
}

export class StorageUnitService extends Effect.Tag('StorageUnitService')<
  StorageUnitService,
  {
    list(): Effect.Effect<StorageUnit[], DrizzleDatabaseError, never>;
    listForCoordinator(id: StorageCoordinatorID): Effect.Effect<StorageUnit[], DrizzleDatabaseError, never>;
  }
>() {}
Was this page helpful?