Support nested folders in `config/queries/` for query organization

Abierto
#218 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 3 días

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
3/5
Tiempo estimado
1-2 días
Aptitud para principiantes
72/100
Tipo de issue
Nueva funcionalidad
Claridad
Bastante claro
Estado de actividad
Tranquilo
Stack tecnológico
sql, typescript
Área
backend, tooling

Línea de trabajo

Empieza leyendo AppManager.getAppQuery(), getQueries() en plugins/server/utils.js y generateQueriesFromDescribe() en typegen; después, inspecciona cómo gestionan flat readdir y path.basename. Se considera terminado cuando los archivos .sql anidados se resuelvan en claves de consulta relativas estables, la validación acepte el separador elegido y la generación de tipos y la búsqueda en frontend cubran los ejemplos documentados.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Support nested folders in config/queries/ for query organization

Problem

As the number of SQL queries in a project grows, config/queries/ becomes a flat bag of files with no way to organize them by feature or domain. The only option is naming conventions (e.g. nego_chart_data.sql, trip_summary.sql), which doesn't scale well and provides no structural separation.

Current behavior

  • AppManager hardcodes queriesDir to path.resolve(process.cwd(), "config/queries")
  • fs.readdir() is non-recursive — subdirectories are silently ignored
  • Query key validation (/^[a-zA-Z0-9_-]+$/) rejects any delimiter that could encode a path
  • generate-types (typegen) also uses flat readdir + path.basename

Proposed behavior

Allow queries to live in subdirectories:

config/queries/
  negotiations/
    chart_data.sql
    spend_summary.sql
  dashboard/
    trip_summary.sql
    trips_by_day.sql
  docs/
    annotations.obo.sql

Query key derivation would use the relative path with a separator (e.g. / or .):

  • negotiations/chart_data or negotiations.chart_data

Frontend usage:

useAnalyticsQuery('negotiations/chart_data', params)

Minimal change required

The fix is small — roughly 3-4 locations need updating:

  1. AppManager.getAppQuery() — change fs.readdir() to fs.readdir(dir, { recursive: true }) and adjust filename matching to include relative subdirectory paths
  2. getQueries() in plugins/server/utils.js — same recursive readdir change
  3. generateQueriesFromDescribe() in typegen — derive query names from relative paths instead of just path.basename()
  4. Query key validation regex — allow / or . as a path separator

Workarounds

Currently using prefix naming (nego_*, trip_*) which works but doesn't provide IDE folder navigation or structural grouping benefits.

Lenguaje dominante
TypeScript
Estrellas
119
Forks
36
Merge medio
4 d 16 h
PR fusionados (30 d)
37

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de databricks/appkit

Todos los issues de databricks/appkit

Issues similares

Más issues de TypeScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.