Up and Running with Quick
Event Information
About this Event
Up and Running with Quick
Interact with your database with ease using Quick, a ColdBox ORM framework.
Quick is an ORM (Object Relational Mapper) written in CFML for CFML.
With it you can map database tables to entities (CFCs), create relationships between entities,query and manipulate data, and persist all your changes to your database. Quick helps you give relevant names to important bits of SQL code, compose queries at runtime to get exactly the data you want in the most efficient way, and gets out of your way when you need or want to write barebones SQL.
This workshop will teach you how to use and configure Quick while building a real-world blogging application. By the end of the workshop, attendees will have the tools and knowledge to implement Quick in their own new or existing projects.
What We'll Cover
In this workshop you will learn the basics of Quick:
1. Installation and Configuration
2. The Quick philosophy
3. Mapping database tables to Entities
4. Defining relationships between Entities
5. Encapsulating query logic in scopes
We will also cover some specific use cases, such as:
1. Converting a ColdFusion ORM entity to a Quick entity
2. Solving the N+1 problem with Quick
3. Profiling SQL performance using cbDebugger
4. Improving execution time with subselects
5. Recommendations for testing Quick Entities
Prerequisites
Here's what you'll need to have ready on the day of the workshop:
Join the BoxTeam Slack Channel
Visit boxteam.herokuapp.com and invite yourself to the Slack.
CommandBox
Download and installation instructions are here: https://commandbox.ortusbooks.com/setup/download
CommandBox Modules
Once CommandBox is installed we will need to install some global modules. Start by opening a box shell by typing `box`. Once in the shell you can type:
`````bash
install commandbox-dotenv,commandbox-migrations,commandbox-cfconfig
MySQL 5.7
We tend to use a Docker container for this, but it is not a requirement. Here is a command that will give you a local MySQL container you can interact with:
```sh
docker run -d --name=quick_blog_example -p 3306:3306 -e MYSQL_DATABASE=quick_blog_example -e MYSQL_ROOT_PASSWORD=root mysql:5.7
```
After you have created the container, you can start and stop it using the following commands:
```bash
docker start quick_blog_example
docker stop quick_blog_example
```
(You may choose to use a different database that Quick supports if you desire, but all examples will be ran against MySQL 5.7. We won't be able to support you with database-specific issues in the workshop.)
MySQL Client
You will want a SQL client to inspect and interact with your database.
You can use any client you would like. Here are a few we like ourselves:
* [Sequel Pro](https://sequelpro.com) (Mac, Free)
* [Heidi SQL](https://www.heidisql.com) (Windows, Free)
* [TablePlus](https://tableplus.io/) (Cross Platform, Commercial / Free Trial)
* [Data Grip](https://www.jetbrains.com/datagrip/) (Cross Platform, Commercial / Free Trial)
IDE
We recommend the following IDEs for development for this workshop
* [Microsoft VSCode](https://code.visualstudio.com/)
* [Sublime](https://www.sublimetext.com/)
If using VS Code, please install the following extensions:
* CFML - KamasamaK
* vscode-coldbox
* vscode-testbox
* Docker
* Yaml
If using Sublime, please install the following extensions:
* ColdBox Platform
* CFML
* CFMLDocPlugin
* Enhanced HTML and CFML
* DockerFile Syntax Highlighting
* Yaml
Useful Resources
* Quick Docs: https://quick.ortusbooks.com
* QB Docs: https://qb.ortusbooks.com
* Migrations: https://www.forgebox.io/view/commandbox-migration