/**
 * @openapi
 * /openai/generate-schema-chunks:
 *   get:
 *     tags:
 *       - OpenAI
 *     summary: Generate and store schema chunks for all database tables
 *     description: This endpoint generates embeddings for all table schemas and stores them for query generation
 *     security:
 *       - AccessToken: []
 *     responses:
 *       200:
 *         description: Schema chunks generated successfully
 *         content:
 *           application/json:
 *             schema:
 *               type: object
 *               properties:
 *                 success:
 *                   type: boolean
 *                   example: true
 *                 message:
 *                   type: string
 *                   example: Schema chunks generated and stored successfully
 *       401:
 *         description: Unauthorized - Invalid or missing token
 *       500:
 *         description: Internal server error
 */

/**
 * @openapi
 * /openai/generate-query:
 *   post:
 *     tags:
 *       - OpenAI
 *     summary: Generate SQL query from natural language prompt
 *     description: Converts a natural language prompt into a SQL query using OpenAI's capabilities
 *     security:
 *       - AccessToken: []
 *     requestBody:
 *       required: true
 *       content:
 *         application/json:
 *           schema:
 *             type: object
 *             required:
 *               - prompt
 *             properties:
 *               prompt:
 *                 type: string
 *                 description: Natural language description of the desired query
 *                 example: Get all users who registered in the last month
 *     responses:
 *       200:
 *         description: Query generated successfully
 *         content:
 *           application/json:
 *             schema:
 *               type: object
 *               properties:
 *                 success:
 *                   type: boolean
 *                   example: true
 *                 data:
 *                   type: object
 *                   properties:
 *                     query:
 *                       type: string
 *                       example: SELECT * FROM users WHERE created_at >= NOW() - INTERVAL '1 month'
 *                     explanation:
 *                       type: string
 *                       example: This query retrieves all users who registered within the last month
 *       400:
 *         description: Bad request - Missing or invalid prompt
 *         content:
 *           application/json:
 *             schema:
 *               type: object
 *               properties:
 *                 success:
 *                   type: boolean
 *                   example: false
 *                 message:
 *                   type: string
 *                   example: Prompt is required
 *       401:
 *         description: Unauthorized - Invalid or missing token
 *       500:
 *         description: Internal server error
 */ 


/**
 * @openapi
 * /openai/get-response-from-sql:
 *   post:
 *     tags:
 *       - OpenAI
 *     summary: Get response from SQL query
 *     description: Get response from SQL query using OpenAI's capabilities
 *     requestBody:
 *       required: true
 *       content:
 *         application/json:
 *           schema:
 *             type: object
 *             required:
 *               - sql
 *             properties:
 *               sql:
 *                 type: string
 *                 description: SQL query to execute
 *                 example: SELECT * FROM users WHERE created_at >= NOW() - INTERVAL '1 month'
 *     responses:
 *       200:
 *         description: OK
 *     security:
 *       - AccessToken: []        
 */


/**
 * @openapi
 * /openai/generate-vector:
 *   get:
 *     tags:
 *       - OpenAI
 *     summary: Generate vector for schema chunks
 *     description: Generate vector for schema chunks using OpenAI's capabilities
 *     security:
 *       - AccessToken: []        
 *     responses:
 *       200:
 *         description: Vector generated and stored successfully
 */

/**
 * @openapi
 * /openai/generate-vector-for-table:
 *   post:
 *     tags:
 *       - OpenAI
 *     summary: Generate vector for a specific table
 *     description: Generate vector for a specific table using OpenAI's capabilities
 *     security:
 *       - AccessToken: []        
 *     requestBody:
 *       required: true
 *       content:
 *         application/json:
 *           schema:
 *             type: object
 *             required:
 *               - uuid
 *             properties:
 *               uuid:
 *                 type: string
 *                 description: UUID of the table to generate vector for
 *                 example: 123e4567-e89b-12d3-a456-426614174000
 *     responses:
 *       200:
 *         description: Vector generated and stored successfully
 */

/**
 * @openapi
 * /openai/search-menu-target-embeddings:
 *   post:
 *     tags:
 *       - OpenAI
 *     summary: Search menu items using semantic search
 *     description: Performs semantic search on menu items using route keywords and embeddings to find the most relevant target URLs
 *     security:
 *       - AccessToken: []
 *     requestBody:
 *       required: true
 *       content:
 *         application/json:
 *           schema:
 *             type: object
 *             required:
 *               - query
 *             properties:
 *               query:
 *                 type: string
 *                 description: Natural language query to search for menu items
 *                 example: "can you go to user add screen"
 *     responses:
 *       200:
 *         description: Menu items found successfully
 *         content:
 *           application/json:
 *             schema:
 *               type: object
 *               properties:
 *                 success:
 *                   type: boolean
 *                   example: true
 *                 message:
 *                   type: string
 *                   example: Success.
 *                 data:
 *                   type: object
 *                   properties:
 *                     query:
 *                       type: string
 *                       example: "can you go to user add screen"
 *                     results:
 *                       type: array
 *                       items:
 *                         type: object
 *                         properties:
 *                           id:
 *                             type: integer
 *                             example: 1
 *                           name:
 *                             type: string
 *                             example: "Add User"
 *                           target:
 *                             type: string
 *                             nullable: true
 *                             example: "/add-user"
 *                           route_keywords:
 *                             type: string
 *                             nullable: true
 *                             example: "create user, add user, user creation"
 *                           menu_id:
 *                             type: integer
 *                             example: 2
 *                           menu_name:
 *                             type: string
 *                             nullable: true
 *                             example: "User Management"
 *                           similarity_distance:
 *                             type: number
 *                             nullable: true
 *                             example: 0.123
 *                           match_type:
 *                             type: string
 *                             enum: [semantic, text]
 *                             example: "semantic"
 *                     total_results:
 *                       type: integer
 *                       example: 1
 *       400:
 *         description: Bad request - Missing or invalid query
 *         content:
 *           application/json:
 *             schema:
 *               type: object
 *               properties:
 *                 success:
 *                   type: boolean
 *                   example: false
 *                 message:
 *                   type: string
 *                   example: Query is required
 *       401:
 *         description: Unauthorized - Invalid or missing token
 *       500:
 *         description: Internal server error
 */

/**
 * @openapi
 * /openai/generate-menu-embeddings:
 *   post:
 *     tags:
 *       - OpenAI
 *     summary: Generate embeddings for menu items
 *     description: Generates and stores vector embeddings for multiple menu items using provided targets and keywords. Updates existing RouteKeywordsEmbeddings or creates new ones if they don't exist. Language code is resolved to language_id from the Language table.
 *     security:
 *       - AccessToken: []
 *     requestBody:
 *       required: true
 *       content:
 *         application/json:
 *           schema:
 *             type: array
 *             minItems: 1
 *             description: Array of menu items with targets, keywords, and language codes
 *             items:
 *               type: object
 *               required:
 *                 - target
 *                 - keywords
 *                 - language_code
 *               properties:
 *                 target:
 *                   type: string
 *                   description: Target URL or route for the menu item
 *                   example: "/add-user"
 *                 keywords:
 *                   type: string
 *                   description: Keywords for generating embeddings (comma-separated)
 *                   example: "create user, add user, user creation"
 *                 language_code:
 *                   type: string
 *                   description: Language code (e.g., "en", "es", "fr")
 *                   example: "en"
 *           example:
 *             - target: "/tree-builder-example"
 *               keywords: "tree builder , tree builder example , tree builder example creation , tree builder example page , tree builder example screen , tree builder page,tree builder screen, tree builder grid"
 *               language_code: "en-GB"
 *             - target: "/users-activity-insights-example"
 *               keywords: "users activity insights example , users activity insights example page , users activity insights example screen , users activity insights example grid , users activity insights "
 *               language_code: "ar-QA"
 *             - target: "/users-example"
 *               keywords: "users page, users grid , users screen , users creation"
 *               language_code: "en-GB"
 *     responses:
 *       200:
 *         description: Menu embeddings generated successfully
 *         content:
 *           application/json:
 *             schema:
 *               type: object
 *               properties:
 *                 success:
 *                   type: boolean
 *                   example: true
 *                 message:
 *                   type: string
 *                   example: Menu embeddings generated successfully.
 *                 data:
 *                   type: object
 *                   properties:
 *                     success:
 *                       type: boolean
 *                       example: true
 *                     total_processed:
 *                       type: integer
 *                       example: 3
 *                     successful_updates:
 *                       type: integer
 *                       example: 3
 *                     failed_updates:
 *                       type: integer
 *                       example: 0
 *                     results:
 *                       type: array
 *                       items:
 *                         type: object
 *                         properties:
 *                           success:
 *                             type: boolean
 *                             example: true
 *                           action:
 *                             type: string
 *                             enum: [created, updated, not_found, language_not_found]
 *                             example: "created"
 *                           menu_item_id:
 *                             type: integer
 *                             example: 1
 *                           menu_name:
 *                             type: string
 *                             example: "Tree Builder Example"
 *                           target:
 *                             type: string
 *                             example: "/tree-builder-example"
 *                           keywords:
 *                             type: string
 *                             example: "tree builder , tree builder example , tree builder example creation"
 *                           language_code:
 *                             type: string
 *                             example: "en"
 *                           language_id:
 *                             type: integer
 *                             example: 1
 *                           embedding_generated:
 *                             type: boolean
 *                             example: true
 *                           message:
 *                             type: string
 *                             example: "Created new route keywords for menu item Tree Builder Example with language English"
 *       400:
 *         description: Bad request - Missing menu items array or invalid format
 *       401:
 *         description: Unauthorized - Invalid or missing token
 *       500:
 *         description: Internal server error
 */