Skip to content

Migración de campos de dirección de usuario a componentes de tipo "Address" en Strapi

Estas consultas se utilizarán para el paso de los campos de dirección de un usuario en la bbdd hacia la nueva estructura de strapi. Para ello se utilizarán dos componentes de tipo “Address” los cuales serán: “user_address” y “billing_address” para diferenciar la dirección de un usuario con la dirección de facturación del mismo. Esto se aplicará en las verticales que tienen la estructura de los usuarios anterior a esta.

Tener en cuenta que los datos de dirección de un usuario se almacena en la tablas up_users, los datos de los componentes en las tablas components_address_user_addresses y components_address_billing_addresses, y la relación entre el usuario y el componente asignado, se almacenará en la tabla up_users_components.

Esta consulta tiene dos partes:

1-Primera parte:

INSERT INTO components_address_user_addresses (line_1, city, postal_code, country, dni_nif)
SELECT line_1, city, postal_code, country, nif
FROM up_users;

2-Seguna parte:

INSERT INTO up_users_components (entity_id, component_id, component_type, field)
SELECT u.id, a.id, 'address.user_address', 'user_address'
FROM up_users u
JOIN components_address_user_addresses a
ON u.line_1 = a.line_1;

Explicación del funcionamiendo de cada parte de la consulta:

  1. Primera parte (INSERT INTO components_address_user_addresses):

    • Selecciona los campos line_1, city, postal_code, country, y dni_nif de la tabla up_users.
    • Inserta estos campos en la tabla components_address_user_addresses.

Esta parte de la consulta copia los datos de dirección de los usuarios desde la tabla up_users a la tabla components_address_user_addresses.

  1. Segunda parte (INSERT INTO up_users_components):

    • Selecciona el id del usuario (u.id) y el id correspondiente de la tabla components_address_user_addresses (a.id).
    • Inserta estos valores en la tabla up_users_components.
    • Realiza una operación de combinación (JOIN) entre las tablas up_users y components_address_user_addresses usando el campo line_1 para relacionar los usuarios con sus direcciones.

En resumen, esta consulta copia las direcciones de los usuarios desde la tabla up_users a la tabla components_address_user_addresses y luego crea relaciones entre los usuarios y sus direcciones en la tabla up_users_components. Sin embargo, es importante tener en cuenta que la segunda parte de la consulta solo usa el campo line_1 para hacer la unión entre las tablas, lo que significa que solo se crearán relaciones entre usuarios y direcciones que tengan el mismo valor en el campo line_1. Esto podría limitar la precisión de las relaciones si hay múltiples usuarios con la misma dirección.