In this chapter, we learned how to leverage Catalyst and
DBIx::Class to perform complex database actions. We also explored how to write custom resultsets. We learned how to use a shell-like environment (REPL) for quick debugging of the application. We explored chained actions. We learned all this by building a Chat Stat application that used all of the above concepts. In the process, we also discovered the benefits of good practices such as placing the data logic into the model.