Search code examples
swiftvapor

How to make "future" from an array in Vapor?


Have following code:

router.get("/fetchOngoingReleases", String.parameter) { (request) -> Future<[ReleaseWithUser]> in
    return Release.query(on: request).filter(\.inProgress == true).all().flatMap { (ra) -> EventLoopFuture<[ReleaseWithUser]> in
        let userId = try request.parameters.next(String.self)
        return User.query(on: request).filter(\.fbId == userId).first().flatMap { (user) -> EventLoopFuture<[ReleaseWithUser]> in
            let a = ra.map { (r) -> ReleaseWithUser in
                // some condition and logic here
            }

            return a. //need this to make future
        }
    }
}

I checked all the possible method calls but none of converts [ReleaseWithUser] to Future<[ReleaseWithUser]>. Do you have any idea?


Solution

  • solution is:

    ra.map { (r) -> ReleaseWithUser in
    // some condition and logic here
    }.flatten(on: request)
    

    Array can be converted to future array with flatten().