PHP SQL

Resolviendo un problema de sobrescritura de configuración en devlog-ist/landing

En el proyecto devlog-ist/landing, una plataforma para blogs de desarrolladores, nos encontramos con un comportamiento inesperado en la configuración de la sincronización automática de publicaciones. El problema radicaba en cómo los valores por defecto de la columna auto_sync_max_posts_per_source interactuaban con los planes de suscripción de los tenants.

El Problema

Originalmente, la columna auto_sync_max_posts_per_source tenía un valor por defecto de 1 definido en una migración anterior. Esto causaba que, independientemente del plan de suscripción que tuviera un tenant, siempre se utilizara este valor por defecto, sobrescribiendo la configuración deseada de cada plan, que era de 10 posts.

La Solución

La solución consistió en modificar el valor por defecto de la columna auto_sync_max_posts_per_source a null. De esta manera, los tenants heredan la configuración por defecto definida en su plan de suscripción. Además, se implementó una mejora en la interfaz de AutomationSettings para mostrar los valores por defecto de cada plan como marcadores de posición (placeholders), ofreciendo así una mayor claridad al usuario.

El cambio en la definición de la columna se puede ilustrar conceptualmente de la siguiente manera:

-- Antes
ALTER TABLE tenants ALTER COLUMN auto_sync_max_posts_per_source SET DEFAULT 1;

-- Después
ALTER TABLE tenants ALTER COLUMN auto_sync_max_posts_per_source DROP DEFAULT;

Este cambio asegura que la configuración de cada tenant se base en el plan al que está suscrito, respetando la jerarquía de configuración definida y ofreciendo una experiencia de usuario más intuitiva.

Lecciones Aprendidas

Este incidente nos recuerda la importancia de considerar cuidadosamente los valores por defecto en las bases de datos y cómo estos pueden interactuar con la lógica de la aplicación. Un valor por defecto aparentemente inofensivo puede tener consecuencias inesperadas en la configuración general del sistema. Es crucial validar que los valores por defecto se comporten de la manera esperada en diferentes contextos, especialmente cuando se trabaja con sistemas de múltiples tenants y planes de suscripción.

Resolviendo un problema de sobrescritura de configuración en devlog-ist/landing
Gerardo Ruiz

Gerardo Ruiz

Author

Share: