‫-: Vamos agora, muito rapidamente, criar
‫o modelo para nossas reservas para que então, no
‫próximo vídeo, possamos realmente começar a criar algumas reservas reais.
‫Então, vamos
‫fechar alguns desses arquivos aqui, também essas pastas.
‫Aqui está a pasta de modelos e o modelo de reserva. js.
‫E isso, é claro, será muito semelhante
‫ao que já fizemos antes, então
‫farei isso muito rapidamente.
‫Como sempre, precisamos do mangusto e criamos nosso mangusto
‫de esquema de reserva. Esquema, e agora,
‫lembre-se de como dissemos antes que
‫iríamos usar referência de parágrafo
‫aqui nas reservas, basicamente mantendo uma referência ao
‫tour e também ao usuário que reservou o tour.
‫Então isso é muito fácil.
‫Já fizemos isso muitas vezes antes.
‫Então mangusto. Esquema. ObjectId, certo?
‫E então a referência, e este vai
‫apontar para o modelo turístico.
‫Então, digamos também que eles
‫sejam obrigatórios. A reserva deve pertencer a um Tour.
‫Agora vamos pegar
‫isso e criar a mesma coisa para um usuário, ok?
‫Então, é o que acabamos de dizer que
‫faríamos mantendo uma referência do
‫tour que está sendo comprado e do usuário que faz a compra.
‫Então, também queremos saber o
‫preço pelo qual a compra realmente aconteceu,
‫e isso é porque o preço
‫pode mudar no futuro e, então, não saberíamos mais
‫quanto um determinado usuário pagou por um tour.
‫E então é importante também ter isso aqui
‫na reserva, então isso vai ser um número, e
‫nós também exigimos isso,
‫a reserva deve ter um preço.
‫Em seguida, vamos também criar nosso timestamp createdAt, que é
‫uma data,
‫e então simplesmente adicionar default para
‫que não tenhamos que fazer nada.
‫Por fim, também desejo criar uma propriedade paga, e
‫esta será automaticamente definida como verdadeira, mas isso é apenas
‫para o caso de, por
‫exemplo, um administrador querer criar uma
‫reserva fora do Stripe.
‫Então, por exemplo, se um cliente não tiver cartão de
‫crédito e quiser pagar diretamente, como em uma loja à vista,
‫ou algo parecido.
‫E, neste caso, um administrador pode usar
‫nossa API de reservas para basicamente criar
‫manualmente um tour, e então isso pode ser pago ou
‫ainda não pago.
‫Então, apenas um pequeno
‫detalhe aqui, pensando nisso, e pensei que poderia
‫ser interessante incluir isso aqui também.
‫Mas é claro que, por padrão, será verdade para
‫que não tenhamos que fazer nada.
‫Agora, finalmente, vamos criar um modelo com isso, então
‫reserva é igual a mangusto. model, e então, é
‫claro, nosso bookingSchema e depois exportar
‫tudo, é
‫igual a Booking.
‫Agora, o que também
‫queremos fazer aqui é preencher o tour e o usuário
‫automaticamente sempre que houver uma consulta, certo?
‫Portanto, lembre-se de como costumávamos fazer isso usando
‫o middleware de consulta.
‫Então, direto no Schema. pre, e então
‫aqui ou como usual expressão regular e o
‫que quer que comece com find.
‫Então aqui a seguir,
‫e então isso. preencher, e vamos fazê-lo
‫automaticamente para
‫o usuário e os passeios.
‫E nesse caso não há
‫problema nenhum para o desempenho, porque
‫não haverá muitas ligações para as marcações, pois só os
‫guias e admins terão permissão para fazer isso, certo?
‫Então, basicamente, para um guia
‫verificar foi realmente reservado seus passeios.
‫Então, esse é um dos casos
‫de uso que vejo para esta parte da API, certo?
‫Portanto, novamente, essa consulta não acontecerá com frequência, então
‫podemos preencher tudo isso facilmente sem
‫nenhum problema.
‫Então, vamos preencher também o passeio, mas aqui,
‫na verdade, desejo selecionar apenas o nome do passeio.
‫Então, digamos caminho, passeio e selecione apenas o nome, certo?
‫Bem, aqui temos algum tipo de erro, certo, então
‫é claro que deveria ser mangusto, não alce.
‫Então, mais uma vez, o ESLint nos salvou aqui.
‫Ah, e na verdade há mais.
‫Salve mais uma vez e agora estamos bem.
‫Então é isso.
‫Este é o nosso modelo de
‫reservas que podemos começar a usar no próximo vídeo.