You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
senzapaura_es/scripts/db/resolver-lib.mjs

17 lines
635 B

Vuelca el catálogo a PostgreSQL, y lo comprueba Los 48 archivos entran en la base: 18 canciones con sus 5 versiones como filas hermanas, 4 discos, 4 estilos, 8 géneros, 14 capítulos, 9 personas, 53 etiquetas, 2 entradas, 5 legales y una página. La web sigue leyendo de los archivos; esto solo llena el sitio donde caben. Reutiliza los analizadores del sitio en vez de leer el frontmatter otra vez. Es la decisión que sostiene todo lo demás: si un valor por defecto o una normalización cambian, cambian para los dos. Un segundo analizador «parecido» es lo que garantiza que un día la base y la web cuenten cosas distintas sin que nadie lo note. Todo en una transacción, y al final comprueba lo escrito contra lo leído —la letra de cada tema carácter a carácter— porque «no dio error» no es lo mismo que «está bien». Si no cuadra, deshace y dice qué falló. Y es idempotente: se puede lanzar las veces que haga falta sin duplicar nada, sin tocar cuentas, pedidos ni compras. Para poder reutilizar ese código desde Node hizo falta un gancho de resolución —`$lib`, imports sin extensión y un sustituto de `$app/paths`— y quitar una propiedad de parámetro de `ErrorDeContenido`: es sintaxis exclusiva de TypeScript y ningún cargador que solo borre tipos puede con ella. Y una corrección: el cuerpo del Markdown de una canción NO era un comentario, es la letra. Lo dije al revés en el documento del modelo y lo repetí varias veces. El campo `letra:` del frontmatter —que aparece en un solo archivo— son los créditos de quién la firma. Corregido en el documento, en el esquema, y quitada la columna `nota` que sobraba. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
1 month ago
/**
* Enseña a Node lo que significa `$lib/…`.
*
* Los analizadores de contenido son código del sitio y usan el alias que
* resuelve Vite. El volcado los reutiliza a propósito —para que lo escrito en
* la base no pueda diferir de lo que enseña la web—, así que hay que darle a
* Node la misma equivalencia en vez de copiar los analizadores, que es lo que
* garantizaría que un día dejen de coincidir.
*
* Se engancha con `--import ./scripts/db/resolver-lib.mjs`.
*/
import { register } from 'node:module';
import { pathToFileURL } from 'node:url';
register('./gancho-lib.mjs', pathToFileURL('./scripts/db/'));

Powered by TurnKey Linux.