Documentación - Generador de Consultas SQL

Introducción

Esta documentación proporciona una descripción detallada del código Python basado en Flask que permite generar consultas SQL a partir de diagramas en lenguaje Mermaid. El objetivo principal de esta aplicación es facilitar la creación de consultas y relaciones de tablas a partir de un formato visual más amigable, como lo es Mermaid.

Rutas y funciones

@app.route('/generate_queries', methods=['POST'])

Esta ruta recibe las solicitudes POST que contienen el código Mermaid y llama a la función generate_queries para procesar el código y generar las consultas SQL.

@app.route('/generate_queries', methods=['POST'])
def generate_queries():
    try:
        mermaid_code = request.json['code']
        queries = generate_oracle_queries(mermaid_code)

        if queries:
            return jsonify({'queries': queries})
        else:
            return jsonify({'error': 'Error generando las consultas SQL'})
    except Exception as e:
        return jsonify({'error': f'Error generando las consultas SQL: {e}'})

def extract_relation(mermaid_code)

Esta función toma el código Mermaid y utiliza expresiones regulares para extraer información sobre las relaciones entre tablas. Las relaciones se definen en el diagrama Mermaid utilizando la siguiente sintaxis: TablaA --|Relacion|--> TablaB.

def extract_relation(mermaid_code):
    relation_pattern = r"(\w+)\s*[|\-o{}]+\s*(\w+)\s*:\s*\"(\w+)\""
    matches = re.findall(relation_pattern, mermaid_code)
    relations = []

    for match in matches:
        from_table = match[0]
        to_table = match[1]
        attribute = match[2]
        relations.append((from_table, to_table, attribute))

    return relations

def generate_oracle_queries(mermaid_code)

Esta función toma el código Mermaid y procesa tanto las tablas como las relaciones utilizando la función extract_relation. Luego, genera las consultas SQL necesarias para crear las tablas y establecer las restricciones de clave externa (FK) en función de las relaciones identificadas.

def generate_oracle_queries(mermaid_code):
    try:
        table_pattern = r"(\w+)\s+{([\w\s\n\t\"\',]+)}"
        tables = re.findall(table_pattern, mermaid_code, re.MULTILINE)

        relations = extract_relation(mermaid_code)

        # ... (continúa la generación de las consultas SQL)

Ejemplo de uso

Puede probar la aplicación enviando una solicitud POST con el código Mermaid a la siguiente ruta: http://your-server-address:your-port/generate_queries. Asegúrese de reemplazar your-server-address y your-port con la dirección y el puerto de su servidor donde se está ejecutando la aplicación Flask.

El código Mermaid debe enviarse en formato JSON con la clave "code" que contiene el código Mermaid como valor. Por ejemplo:

{
  erDiagram

    ACA_RHS_CONTRACTS ||--o{ ACA_RHS_USERS : "ID_CONTRACT"


    ACA_RHS_CONTRACTS {
        ID int "NN,AI"
        TITLE varchar
        HOURS int
    }


}

La aplicación responderá con un JSON que contiene las consultas SQL generadas para crear las tablas y establecer las restricciones de clave externa (FK) en función del código Mermaid proporcionado.

Conclusión

Esta documentación proporciona una visión general del código de Flask utilizado para generar consultas SQL desde diagramas Mermaid. El código es una herramienta útil para facilitar la creación de esquemas de base de datos a partir de representaciones visuales en lugar de escribir manualmente las consultas SQL. Puede personalizarse y ampliarse según las necesidades específicas del proyecto.