I'm using Elixir for the data model part of an MVC app I'm designing.
I often come accross similar 'queries' I want to run against my data
from various parts of the app, and I wonder what would be the 'ideal'
place to put them? (ideal as in, best programming practice).

Let's take the usual movie db as an example and suppose I often want
to get the set of Movies of a given Genre, made by a given Director,
after some given year.

Should I add a simple function in my model, like
getMoviesByDirectorGenreYear(director, genre, starting_year) ?
It would run a query as usual in the form
Movie.query...filtering...all()

Or maybe a @classmethod Movie.getByDirectorGenreYear(cls, director,
genre, starting_year)?
Would run a query like before but gets the class as a paramenter,
could use that to be generic and adaptable to different classes /
inherited classes.

Or an instance method like Director.getMoviesByGenreAndYear(self,
genre, starting_year) ?
And if I do that, it would be equally good to also write a
Genre.getMoviesByDirectorAndYear(self, director, starting_year)
method...

To me, the classmethod approach seems more logical, since if I ever
subclass Movie I've already got my ready-made query. Also because it
would actually return a list of Movies. What do you think?

Also, how would the same idea change if I'm not getting a set of
instances for one of my model classes but building a whole class of
data? (eg. resulting from some joins between my actual raw data) - the
equivalent of some CREATE VIEW ... AS SELECT ... JOIN ... etc...

-- 
You received this message because you are subscribed to the Google Groups 
"SQLElixir" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/sqlelixir?hl=en.

Reply via email to