From af7970d432b84998c62fcbce3ebc4c94a8219566 Mon Sep 17 00:00:00 2001
From: Renzo Beux <renzobeux@gmail.com>
Date: Wed, 8 Sep 2021 19:38:16 -0300
Subject: [PATCH] feat: Swagger implementation

---
 src/Controllers/SheetController.ts | 32 +-----------------
 src/Controllers/SwaggerEndpoints   | 54 ++++++++++++++++++++++++++++++
 src/Controllers/SwaggerSchemas     | 41 +++++++++++++++++++++++
 src/index.ts                       |  2 +-
 4 files changed, 97 insertions(+), 32 deletions(-)
 create mode 100644 src/Controllers/SwaggerEndpoints
 create mode 100644 src/Controllers/SwaggerSchemas

diff --git a/src/Controllers/SheetController.ts b/src/Controllers/SheetController.ts
index 63b65e7..cc09403 100644
--- a/src/Controllers/SheetController.ts
+++ b/src/Controllers/SheetController.ts
@@ -3,7 +3,7 @@ import {
 } from 'express';
 import { SheetParserResponse } from '../Models/SheetParserResponse';
 import SheetService from '../Services/SheetService';
-
+// import SwaggerSchemas from './Controllers/SwaggerSchemas';
 const router = Router();
 
 const parseSheet: Handler = async (req: Request, res: Response) => {
@@ -17,36 +17,6 @@ const parseSheet: Handler = async (req: Request, res: Response) => {
   }
 };
 
-/**
- * @swagger
- * /excelParser:
- *  post:
- *      tags:
- *          -   parser
- *      description: Sheet Parser
- *      requestBody:
- *          required: true
- *          content:
- *              application/json:
- *                  schema:
- *                      type: object
- *                      required:
- *                          -   email
- *                          -   password
- *                      properties:
- *                          excel:
- *                              type: string
- *      responses:
- *          '200':
- *              description: returns the parsed JSON of the excel file provided
- *              content:
- *                  application/json:
- *                      schema:
- *                          type: object
- *                          properties:
- *                              excelParsed:
- *                                  type: string
- */
 router.post('/', parseSheet);
 
 export default router;
diff --git a/src/Controllers/SwaggerEndpoints b/src/Controllers/SwaggerEndpoints
new file mode 100644
index 0000000..2a98cbb
--- /dev/null
+++ b/src/Controllers/SwaggerEndpoints
@@ -0,0 +1,54 @@
+# /**
+#  * @swagger
+#  * components:
+#  *  schemas:
+#  *      Menores:
+#  *          type: object
+#  *          properties:
+#  *              edad:
+#  *                  type: integer
+#  *              peso:
+#  *                  type: integer
+#  *      Mayores:
+#  *          type: object
+#  *          properties:
+#  *              edad:
+#  *                  type: integer
+#  *              peso:
+#  *                  type: integer
+#  *              talla:
+#  *                  type: integer
+#  *      SheetParserResponse:
+#  *          type: object
+#  *          properties:
+#  *              hombresMenores:
+#  *                  type: Menores [] 
+#  *                      
+#  *
+#  *              mujeresMenores:
+#  *                  type: Menores []
+#  *              hombres:
+#  *                  type: Mayores []
+#  *              mujeres:
+#  *                  type: Mayores []
+#  */
+/**
+ * @swagger
+ * /excelParser:
+ *  post:
+ *      tags:
+ *          -   parser
+ *      description: Sheet Parser
+ *      requestBody:
+ *          required: true
+ *          content:
+ *              application/octet-stream:
+ *                  type: binary
+ *      responses:
+ *          '200':
+ *              description: returns the parsed JSON of the excel file provided
+ *              content:
+ *                  application/json:
+ *                      schema:
+ *                          $ref: '#/components/schemas/SheetParserResponse'
+ */
\ No newline at end of file
diff --git a/src/Controllers/SwaggerSchemas b/src/Controllers/SwaggerSchemas
new file mode 100644
index 0000000..65d51f4
--- /dev/null
+++ b/src/Controllers/SwaggerSchemas
@@ -0,0 +1,41 @@
+/**
+ * @swagger
+ * components:
+ *  schemas:
+ *      Menores:
+ *          type: object
+ *          properties:
+ *              edad:
+ *                  type: integer
+ *              peso:
+ *                  type: integer
+ *      Mayores:
+ *          type: object
+ *          required: ["edad"]
+ *          properties:
+ *              edad:
+ *                  type: integer
+ *              peso:
+ *                  type: integer
+ *              talla:
+ *                  type: integer
+ *      SheetParserResponse:
+ *          type: object
+ *          properties:
+ *              hombresMenores:
+ *                  type: array
+ *                  items:
+ *                      $ref: '#/components/schemas/Menores'
+ *              mujeresMenores:
+ *                  type: array
+ *                  items:
+ *                      $ref: '#/components/schemas/Menores'
+ *              hombres:
+ *                  type: array
+ *                  items:
+ *                      $ref: '#/components/schemas/Mayores'
+ *              mujeres:
+ *                  type: array
+ *                  items:
+ *                      $ref: '#/components/schemas/Mayores'
+ */
\ No newline at end of file
diff --git a/src/index.ts b/src/index.ts
index 52cbdc3..fc61b0a 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -21,7 +21,7 @@ const swaggerOptions: Options = {
       servers: ['http://localhost:3000'],
     },
   },
-  apis: ['src/routes.ts'],
+  apis: ['src/Controllers/*'],
 };
 const swaggerDocs = swaggerJsDoc(swaggerOptions);
 
-- 
GitLab