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>;
}
>() {}