Olhando pelo código por cima, aparentemente não há nenhum estado persistente na api em si, mas no banco de dados, no entando, percebi que você está usando o SQLite, que é um banco de dados que fica em um arquivo.

Como a vercel utiliza a arquitetura serverless, isso faz com que a sua aplicação seja recomeçada para o estado inicial toda vez que nenhuma request é enviada durante um tempo, a fim de preservar recursos computacionais.

isso faz com que qualquer estado salvo no código, ou em um arquivo (como no caso do SQLite) seja perdido quando em 30/40 minutos nenhuma request é feita à API (recomendo pesquisar sobre a arquitetura serverless).

para resolver isso, recomendo alterar o banco de dados para um MySQL ou Postgres e usar serviços de hospedagem de banco de dados como o PlanetScale (que possuí um free-tier que dá um banco MySQL gratuitamente), é possível fazer isso simplesmente mudando as configurações do prisma.

// antes
datasource db {
  provider = "sqlite"
  url      = env("DATABASE_URL")
}
// depois
datasource db {
  provider = "mysql"
  url      = env("DATABASE_URL") // mudar a URL do banco de dados para o endereço do MySQL
}

uma vez isso feito, é possível fazer deploy da sua aplicação na Vercel sem problemas, o próprio fastify tem um tópico na documentação falando sobre isso.

Caso queria continuar utilizando o SQLite, recomendo outras plataformas de deploy que não utilizam a arquitetura serverless, como o fly.io ou o render

Entendi! Cara, você respondeu até perguntas que eu não tinha pensado em fazer. Me ajudou muito, obrigado!