TurnoClase meltdown

Ayer en clase la aplicación se volvió loca y descubrí que no está preparada para que 40 usuarios le pidan simultáneamente el turno.

¿Qué ocurre? Que el código que desarrollé en su día para Parse funciona bien siempre y cuando no haya dos accesos a la vez al aula.

En Firestore, la cola se almacena como un array y el cliente actualiza ese array cuando pide el turno, añadiendo su ID al final. El problema es que en el tiempo que pasa desde que lee, actualiza y vuelve a escribir, otro cliente puede haber leído el mismo estado de la cola, añadirse a sí mismo, actualizar y, sin enterarse, ver sus datos sobrescritos por la primera petición que todavía no había llegado a la base de datos. Un desastre.

Toca rehacer el proceso usando una colección de turnos, en vez de un array simple.