class CassandraMailboxMapper implements MailboxMapper {

    @Override
    public Flux<Mailbox> findMailboxWithPathLike(MailboxQuery.UserBound query) {
        String fixedNamespace = query.getFixedNamespace();
        Username fixedUser = query.getFixedUser();

        return listPaths(fixedNamespace, fixedUser)
            .filter(idAndPath -> query.isPathMatch(idAndPath.getMailboxPath()))
            .distinct(CassandraIdAndPath::getMailboxPath)
            .concatMap(this::retrieveMailbox);
    }

    @Inject public  CassandraMailboxMapper(CassandraMailboxDAO mailboxDAO,
                                  CassandraMailboxPathDAOImpl mailboxPathDAO,
                                  CassandraMailboxPathV2DAO mailboxPathV2DAO,
                                  CassandraUserMailboxRightsDAO userMailboxRightsDAO,
                                  CassandraACLMapper aclMapper,
                                  CassandraSchemaVersionManager versionManager);

}