Skip to content

Instantly share code, notes, and snippets.

@jhoughjr
Last active March 16, 2018 16:47
Show Gist options
  • Save jhoughjr/0eb2588c279e561e0ed9c283934e8d69 to your computer and use it in GitHub Desktop.
Save jhoughjr/0eb2588c279e561e0ed9c283934e8d69 to your computer and use it in GitHub Desktop.
Migrating mysql DB
Migrations complete
Server starting on http://localhost:8080
[ ERROR ] RoutingError.insufficientParameters: Insufficient parameters (ParameterContainer.swift:61)
POST /api/teams/422E63EA-0750-4C3F-81D1-A4CF047D6E11
Accept: */*
Accept-Encoding: gzip, deflate
Content-Type: application/json
Accept-Language: en-us
{
"userID": "1AC397D3-44D6-4BF0-BF10-8800D1F40436"
}
//
// TeamsController.swift
// App
//
// Created by Jimmy Hough Jr on 3/15/18.
//
import Foundation
import Vapor
struct TeamsController: RouteCollection {
func boot(router:Router) throws {
let teamRoutes = router.grouped("api", "teams")
teamRoutes.post(use: createHandler)
teamRoutes.get(use: getAllHandler)
teamRoutes.get(GNTeam.parameter,
use:getHandler)
teamRoutes.get(GNTeam.parameter, "members",
use:getMembersHandler)
teamRoutes.post(GNUser.self,
at: GNTeam.parameter,
use: postMembersHandler)
teamRoutes.get(GNTeam.parameter, "owner",
use:getOwnerHandler)
}
func createHandler(_ req:Request) throws -> Future<GNTeam> {
return try req.content.decode(GNTeam.self).flatMap(to: GNTeam.self, { (team) -> Future<GNTeam> in
return team.save(on:req)
})
}
func getAllHandler(_ req:Request) throws -> Future<[GNTeam]> {
return GNTeam.query(on: req).all()
}
func getHandler(_ req:Request) throws -> Future<GNTeam> {
return try req.parameter(GNTeam.self)
}
// relations
func getMembersHandler(_ req:Request) throws -> Future<[GNUser]> {
return try req.parameter(GNTeam.self).flatMap(to: [GNUser].self, { (team) -> Future<[GNUser]> in
return try team.members.query(on:req).all()
})
}
func postMembersHandler(_ req:Request, _ user: GNUser) throws -> Future<HTTPStatus> {
return try req.parameter(GNTeam.self).flatMap(to: HTTPStatus.self) { team in
return try req.parameter(GNUser.self).flatMap(to: HTTPStatus.self) { user in
let pivot = TeamMembersPivot(try team.requireID(), try user.requireID())
return pivot.save(on: req).transform(to: .ok)
}
}
}
func getOwnerHandler(_ req:Request) throws -> Future<GNUser> {
return try req.parameter(GNTeam.self).flatMap(to: GNUser.self, { (team) -> Future<GNUser> in
return team.owner.get(on: req)
})
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment