예제 #1
0
    def on_post(self, req: falcon.Request, resp: falcon.Response) -> None:
        """
        ---
        summary: Add new movie to database
        tags:
            - Movie
        parameters:
            - in: body
              schema: MovieSchema
        consumes:
            - application/json
        produces:
            - application/json
        responses:
            201:
                description: Movie created successfully
                schema: MovieSchema
            401:
                description: Unauthorized
            422:
                description: Input body formatting issue
        """
        db = req.context["db"]
        db.session.add(req._deserialized)
        db.session.commit()

        resp.status = falcon.HTTP_CREATED
        resp._data = req._deserialized
예제 #2
0
    def on_get(self, req: falcon.Request, resp: falcon.Response,
               args: dict) -> None:
        """
        ---
        summary: Get all movies in the database
        tags:
            - Movie
        parameters:
            - in: query
              schema: MovieQuerySchema
        produces:
            - application/json
        responses:
            200:
                description: List of movies
                schema:
                    type: array
                    items: MovieSchema
            401:
                description: Unauthorized
        """
        db = req.context["db"]
        page = args.get("page")
        per_page = args.get("per_page")

        resp.status = falcon.HTTP_OK
        all_items_query = db.query(Movie)
        paginated_query = Paginator(all_items_query,
                                    page=page,
                                    per_page=per_page)

        resp._data = paginated_query
예제 #3
0
    def on_post(self, req: falcon.Request, resp: falcon.Response) -> None:
        """
        ---
        summary: Create new user
        tags:
            - User
        parameters:
            - in: body
              schema: UserSchema
        consumes:
            - application/json
        produces:
            - application/json
        responses:
            201:
                description: User created successfully
                schema: UserSchema
            401:
                description: Unauthorized
            422:
                description: Input body formatting issue
        """
        db = req.context["db"]
        user = req._deserialized

        user = process_new_user(db, user)

        resp.status = falcon.HTTP_CREATED
        resp._data = user
예제 #4
0
 def on_get(self, req: falcon.Request, resp: falcon.Response,
            id: int) -> None:
     """
     ---
     summary: Get movie from database
     tags:
         - Movie
     parameters:
         - in: path
           schema: MoviePathSchema
     produces:
         - application/json
     responses:
         200:
             description: Return requested movie details
             schema: MovieSchema
         401:
             description: Unauthorized
         404:
             description: Movie does not exist
     """
     resp.status = falcon.HTTP_OK
     resp._data = req._item
예제 #5
0
    def on_patch(self, req: falcon.Request, resp: falcon.Response,
                 id: int) -> None:
        """
        ---
        summary: Update movie details in database
        tags:
            - Movie
        parameters:
            - in: path
              schema: MoviePathSchema
            - in: body
              schema: MoviePatchSchema
        consumes:
            - application/json
        produces:
            - application/json
        responses:
            200:
                description: Return requested movie details
                schema: MovieSchema
            401:
                description: Unauthorized
            404:
                description: Movie does not exist
            422:
                description: Input body formatting issue
        """
        movie = req._item
        movie.patch(req._deserialized)

        db = req.context["db"]
        db.session.add(movie)
        db.session.commit()

        resp.status = falcon.HTTP_OK
        resp._data = movie