I always wished SQL had a better handle on sum types. If I have a user whose favorite story is an instance of Either[Movie, Book], then it's already a pain to deal with in a nice simple way. And that's as simple as sum types get.
type Movie {
property director -> str
};
type Book {
property author -> str
};
type User {
multi link favorites -> Movie | Book
};
SELECT User {
favorites: {
[IS Movie].director,
[IS Book].author,
}
};Would this query result in, e.g. [(director: Null, author: J.K Rowling), (director: Spielberg, Null), ...] or would it be [author: J.K. Rowling, director: Spielberg, ...] or just plain strings: [J.K. Rowling, Spielberg, ...]? I still don't totally get the model here.
You can also query the actual object type by referring to the __type__ link:
SELECT User {
favorites: {
__type__,
[IS Movie].director,
[IS Book].author,
}
};