Así que vamos a empezar ya que no tenemos mucho tiempo, vamos a saltar directamente a la codificación. Así que aquí vamos a quitar la pantalla completa, deshacernos de esto, Remix puedes encontrarlo en Remix.run y puedes leer todo sobre ello y desplazarte por esto, es en realidad una experiencia de desplazamiento bastante genial para pasar por eso y tener una idea de lo que es Remix.
Esta es la aplicación en la que vamos a trabajar, Remix, es tan genial que es divertido. Es una aplicación de chistes donde puedes obtener chistes aleatorios y simplemente tendrá un montón de diferentes chistes para ti. Es bastante divertido y luego tienes permalinks y cosas así y en el tutorial añadimos la capacidad de borrar los chistes, puedes añadir los tuyos, y esto en realidad funciona ahora mismo, pero el problema es que no hay autenticación aquí así que cualquiera en el mundo podría añadir sus propios chistes, nunca sabríamos quién lo hizo y las personas que añaden chistes no pueden eliminar esos chistes y no queremos añadir esa capacidad hasta que puedan iniciar sesión porque no queremos que la gente elimine los chistes de otras personas.
Así que eso es lo que vamos a añadir a nuestra aplicación, es simplemente la capacidad de autenticar. Así que vamos a empezar en nuestro archivo schema.prisma, así que ya tenemos Prisma en funcionamiento que está sosteniendo todos nuestros chistes y tenemos una semilla para poner todos estos chistes en la base de datos ya, pero queremos añadir autenticación de usuario y para hacer eso vamos a necesitar un modelo de usuario para poder asociar chistes a usuarios específicos. Así que vamos a decir modelo de usuario y Copilot nos va a ayudar con esto. No todo esto es lo que queremos, así que obtenemos un ID, me gusta el UUID personalmente, gracias mucho Copilot. Queremos la aplicación creada, queremos la aplicación actualizada, y luego vamos a tener un nombre de usuario, no sólo un nombre y esto necesita ser único. Y luego realmente no necesitamos un correo electrónico aquí así que nos desharemos de eso, sí queremos una contraseña aunque, pero no estamos almacenando contraseñas crudas, vamos a almacenar un hash de las contraseñas para hacerlo agradable y seguro. Y luego tenemos una relación con el modelo de chiste dentro de este usuario así que tendremos chistes y eso es un array de chistes. Y parece que mi datetime, o Copilot no lo entendió bien así que esto va a ser por defecto ahora, y ahí vamos. Así que ahora estamos obteniendo una línea roja aquí porque el modelo de chiste no está asociado al modelo de usuario y, uff, eso fue un susto, teníamos dos N's justo ahí. Así que ahora queremos añadir un ID de bromista, y esto va a ser una cadena, y luego tendremos al bromista, que en este caso va a ser un usuario, y vamos a añadir una relación con los campos para esta relación es sólo el ID del bromista, ahí vamos, gracias, y las referencias son sólo el ID, y luego en la eliminación vamos a hacer un cascade. Así que cuando eliminamos al bromista todos sus chistes se van a ir. Y asegurémonos de deletrear esto correctamente. Ahí vamos. Bueno, genial, hemos actualizado Prisma, vamos a ejecutar un par de scripts de Prisma así que ejecutaremos npx Prisma db push, para implementar todos estos cambios. Sí, íbamos a eliminar todas las cosas, y ahora deberíamos tener algunos errores de tipo justo aquí, porque ahora estamos sembrando la base de datos con chistes que no tienen bromistas asociados. Así que vamos a hacer nuestro primer bromista. Y este va a ser Cody, vamos a esperar Prisma user create, y los datos para esto van a tener el nombre de usuario de Cody. Y el hash de la contraseña, en realidad va a ser twixrocks. Y tengo esto pegado por aquí, porque yo, no quieres verme escribir eso. Pero esto es básicamente twixrocks, hasheado. Y así va a ser nuestra contraseña para nuestro usuario Cody. Así que ahora que tenemos a Cody, podemos usar a Cody para generar o crear todos estos chistes. Así que diremos que nuestros datos van a ser todas las propiedades del chiste más el ID del bromista de Cody.ID. Y así pueden ser nuestros datos. Y ahora nuestro TypeScript cosas, esperemos que se vaya.
Comments