Book Image

Crystal Programming

By : George Dietrich, Guilherme Bernal
Book Image

Crystal Programming

By: George Dietrich, Guilherme Bernal

Overview of this book

Crystal is a programming language with a concise and user-friendly syntax, along with a seamless system and a performant core, reaching C-like speed. This book will help you gain a deep understanding of the fundamental concepts of Crystal and show you how to apply them to create various types of applications. This book comes packed with step-by-step explanations of essential concepts and practical examples. You'll learn how to use Crystal’s features to create complex and organized projects relying on OOP and its most common design patterns. As you progress, you'll gain a solid understanding of both the basic and advanced features of Crystal. This will enable you to build any application, including command-line interface (CLI) programs and web applications using IOs, concurrency and C bindings, HTTP servers, and the JSON API. By the end of this programming book, you’ll be equipped with the skills you need to use Crystal programming for building and understanding any application you come across.
Table of Contents (26 chapters)
1
Part 1: Getting Started
5
Part 2: Learning by Doing – CLI
10
Part 3: Learn by Doing – Web Application
13
Part 4: Metaprogramming
18
Part 5: Supporting Tools

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...