Filtragem dinâmica OU - Slick

Ok, eu tenho um método com vários argumentos opcionais como este

def(username: Option[String], petname: Option[String], favouritefood: Option[String])

e eu quero escrever uma consulta dinâmica que será capaz de buscar os dados dos argumentos definidos de uma maneira

select * from table where un like username or pn like pn or ff like ff;

portanto, dependendo de quais argumentos estão definidos para adicioná-los à consulta com o operador OR?

questionAnswers(2)

yourAnswerToTheQuestion