Implementing database interactions
Any application that needs to persist data such that it can be retrieved at a later time needs some form of a database. Our blog is no different as we will need a way to store the articles that make up the blog. There are various types of databases, such as NoSQL or relational, among others, each of which has its pros and cons. For our blog, we are going to keep things simple and go with a relational database, such as MySQL or PostgreSQL. Feel free to use the database of your choice that best fits the needs of your application, but I am going to be using PostgreSQL for the purposes of this chapter.
Setting up the database
Crystal provides a database abstraction shard, https://github.com/crystal-lang/crystal-db, that defines the high-level API for database interactions. Each database implementation uses this as a base and implements how to get data from the underlying store. This provides a unified API and common features that all database implementations...