Skip to content
Snippets Groups Projects
Commit f7b595e7 authored by Trile Ro's avatar Trile Ro
Browse files

[+][FCB] Use the sharedFolderCid at fed mem information level rather than the changelog

+ There is a potential race condition here when using changelog. Not the case with fed mem information
+ It's simpler on domain terms. I have a contract for current shared folder CID I rely on it, do not trust the changelog, it only represents the bookkeeping, not processed state
parent 6af78a5a
No related branches found
No related tags found
No related merge requests found
...@@ -5,8 +5,8 @@ import acab.devcon0.domain.ports.input._ ...@@ -5,8 +5,8 @@ import acab.devcon0.domain.ports.input._
import acab.devcon0.domain.ports.input.federation.IpfsCidDeltaQuery import acab.devcon0.domain.ports.input.federation.IpfsCidDeltaQuery
import acab.devcon0.domain.ports.input.federation.IpfsCidDeltaQueryHandler import acab.devcon0.domain.ports.input.federation.IpfsCidDeltaQueryHandler
import acab.devcon0.domain.service._ import acab.devcon0.domain.service._
import acab.devcon0.domain.service.federationmember.ChangelogService
import acab.devcon0.domain.service.federationmember.CidsService import acab.devcon0.domain.service.federationmember.CidsService
import acab.devcon0.domain.service.federationmember.InformationService
import acab.devcon0.trile.domain.dtos.aliases.FederationMemberId import acab.devcon0.trile.domain.dtos.aliases.FederationMemberId
import acab.devcon0.trile.domain.dtos.aliases.IpfsCid import acab.devcon0.trile.domain.dtos.aliases.IpfsCid
import cats.effect.IO import cats.effect.IO
...@@ -16,7 +16,7 @@ import org.typelevel.log4cats.slf4j.Slf4jLogger ...@@ -16,7 +16,7 @@ import org.typelevel.log4cats.slf4j.Slf4jLogger
class IpfsCidDeltaQueryHandlerImpl( class IpfsCidDeltaQueryHandlerImpl(
federationMemberCidsService: CidsService[IO], federationMemberCidsService: CidsService[IO],
federationMemberChangelogService: ChangelogService[IO] federationMemberInformationService: InformationService[IO]
) extends IpfsCidDeltaQueryHandler { ) extends IpfsCidDeltaQueryHandler {
implicit val logger: Logger[IO] = Slf4jLogger.getLogger[IO] implicit val logger: Logger[IO] = Slf4jLogger.getLogger[IO]
...@@ -34,7 +34,7 @@ class IpfsCidDeltaQueryHandlerImpl( ...@@ -34,7 +34,7 @@ class IpfsCidDeltaQueryHandlerImpl(
} }
private def getExistsInOtherMembers(ipfsCids: List[IpfsCid], id: FederationMemberId): IO[List[IpfsCid]] = { private def getExistsInOtherMembers(ipfsCids: List[IpfsCid], id: FederationMemberId): IO[List[IpfsCid]] = {
getOtherMembersRootCid(id) getOtherMembersSharedFolderCid(id)
.flatMap(getExistingInOtherMembers(ipfsCids, _)) .flatMap(getExistingInOtherMembers(ipfsCids, _))
} }
...@@ -42,15 +42,14 @@ class IpfsCidDeltaQueryHandlerImpl( ...@@ -42,15 +42,14 @@ class IpfsCidDeltaQueryHandlerImpl(
ipfsCids: List[IpfsCid], ipfsCids: List[IpfsCid],
membersRootIpfsCid: List[(FederationMemberId, IpfsCid)] membersRootIpfsCid: List[(FederationMemberId, IpfsCid)]
): IO[List[IpfsCid]] = { ): IO[List[IpfsCid]] = {
for for existsResult: List[(IpfsCid, Boolean)] <- membersRootIpfsCid
existsResult: List[(IpfsCid, Boolean)] <- membersRootIpfsCid
.flatTraverse(tuple => federationMemberCidsService.exists(tuple._1, tuple._2, ipfsCids)) .flatTraverse(tuple => federationMemberCidsService.exists(tuple._1, tuple._2, ipfsCids))
yield existsResult.filter(_._2).map(_._1) yield existsResult.filter(_._2).map(_._1)
} }
private def getOtherMembersRootCid(id: FederationMemberId): IO[List[(FederationMemberId, IpfsCid)]] = { private def getOtherMembersSharedFolderCid(id: FederationMemberId): IO[List[(FederationMemberId, IpfsCid)]] = {
federationMemberChangelogService.getNewest federationMemberInformationService.getAll
.map(_.filterNot(_._1 == id).map(tuple => (tuple._1, tuple._2.ipfsCid))) .map(_.filter(_.id.equals(id)).map(information => (information.id, information.sharedFolderCid)))
} }
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment