En este artículo vamos a ver como usar Nextjs y Kysely para poder consultar una base de datos de forma sencilla, crear tablas, crear migraciones, transacciones, etc.
Instalación
Lo primero que necesitamos es nuestro proyecto creado de Nextjs, para eso ejecutamos el siguiente comando:
Luego de que se haya creado nuestro proyecto, vamos a instalar las dependencias de Kysely, en este caso también instalare pg para poder conectarme a una base de datos de postgresql.
Nota: si estas ocupando una base de datos diferente a postgresql, puedes instalar el driver de tu base de datos, por ejemplo para mysql seria
npm install mysql2
y para sqlite seriabetter-sqlite3
.
Configuración
Ocuparemos esta estructura para ordenar nuestros archivos:
En el archivo db.ts
vamos a crear nuestra conexión a la base de datos, en mi caso ocuparé (Supabase)[https://supabase.io/], pero puedes ocupar cualquier base de datos que quieras.
Ahora tendremos que crear un archivo .env
para poder guardar nuestras variables de entorno, en este caso ocuparemos las siguientes variables:
también vamos a crear un archivo types.ts
para definir nuestros tipos de datos
Nota: en este caso vamos a usar
Generated
para definir el tipo de dato de una columna que se genera automáticamente, por ejemplo un ID.
Estos tipos de datos nos ayudarán a tener un mejor autocompletado al momento de escribir nuestras consultas.
Migraciones
Ahora vamos a crear un archivo migrations.ts
para poder crear nuestras tablas en la base de datos.
En este archivo tenemos 2 partes, la primera es la función up
que se encarga de crear la tabla en la base de datos, y la segunda parte es la función executeMigration
que se encarga de ejecutar las migraciones.
Podríamos dividir estas 2 partes en 2 archivos diferentes, pero para este ejemplo lo dejaré en un solo archivo.
Ejecutar migraciones
Para ejecutar nuestras migraciones, vamos a crear un script en nuestro package.json
utilizaremos bun para poder ejecutar nuestro archivo typescript, ya que con bun podemos ejecutar archivos typescript sin necesidad de compilarlos.
para instalar bun
ejecutamos el siguiente comando:
y luego ejecutamos el siguiente comando para ejecutar nuestras migraciones:
Ejecutar consultas
para probar que todo esté funcionando correctamente, voy a crear una nueva carpeta en la raíz de mi proyecto llamada actions
y dentro de esta carpeta voy a crear un archivo user.ts
con el siguiente contenido:
en este archivo estamos exportando una función llamada getUsers
que se encarga de obtener todos los usuarios de la base de datos.
Nota: estamos usando
use server
para poder ejecutar este archivo en el servidor
Ahora si vamos a nuestro archivo app/page.tsx
y vamos a importar nuestra función getUsers
y la vamos a ejecutar.
Si todo está funcionando correctamente, deberíamos ver en la consola de nuestro navegador un array con todos los usuarios de nuestra base de datos.
Conclusión
Como podemos ver utilizar Kysely con Nextjs es muy sencillo, y nos permite crear consultas de forma sencilla, crear tablas, crear migraciones, transacciones, etc.
Kysely es para mi la mejor librería para crear consultas SQL, ya que al estar escrita en typescript nos permite tener un mejor autocompletado al momento de escribir nuestras consultas, y también nos permite tener un mejor control de errores.