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.
