Skip to content

Commit

Permalink
add videos
Browse files Browse the repository at this point in the history
  • Loading branch information
kentcdodds committed Oct 5, 2023
1 parent a6f2155 commit 079dfac
Show file tree
Hide file tree
Showing 62 changed files with 138 additions and 2 deletions.
2 changes: 2 additions & 0 deletions exercises/01.schema/01.problem.init/README.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# prisma init

<EpicVideo url="https://www.epicweb.dev/workshops/data-modeling-deep-dive/database-schema/setting-up-the-database-with-prisma" />

👨‍💼 Let's initialize our application with a database and prisma schema. We don't
have an existing database to pull from, so we'll create a new one using the
Prisma CLI.
Expand Down
2 changes: 2 additions & 0 deletions exercises/01.schema/01.solution.init/README.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# prisma init

<EpicVideo url="https://www.epicweb.dev/workshops/data-modeling-deep-dive/database-schema/setting-up-the-database-with-prisma/solution" />

👨‍💼 Great job making the schema. We're a little ways away from actually being
able to use this in our application since we've got more models we need to
create, but this is a good start.
Expand Down
3 changes: 3 additions & 0 deletions exercises/01.schema/FINISHED.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Database Schema

<EpicVideo url="https://www.epicweb.dev/workshops/data-modeling-deep-dive/database-schema/dad-joke-break-database-schema" />
2 changes: 2 additions & 0 deletions exercises/01.schema/README.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Database Schema

<EpicVideo url="https://www.epicweb.dev/workshops/data-modeling-deep-dive/database-schema/intro-to-database-schema" />

SQLite uses SQL for querying the database. SQL stands for Structured Query
Language and is a language used to communicate with the most widely used
databases.
Expand Down
2 changes: 2 additions & 0 deletions exercises/02.relationships/01.problem.one-to-many/README.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# One-to-Many Relationships

<EpicVideo url="https://www.epicweb.dev/workshops/data-modeling-deep-dive/data-relationships/one-to-many-relationships" />

👨‍💼 We need to add the `Notes` model to our schema. This is a one-to-many
relationship. A `User` can have many `Notes`, but a `Note` can only have one
`User` (who we call an "owner").
Expand Down
2 changes: 2 additions & 0 deletions exercises/02.relationships/01.solution.one-to-many/README.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# One-to-Many Relationships

<EpicVideo url="https://www.epicweb.dev/workshops/data-modeling-deep-dive/data-relationships/one-to-many-relationships/solution" />

👨‍💼 Great work! Now we've got the most important parts of our application's data
model worked out. But we've still got another relationship to deal with, so
let's get to that next.
2 changes: 2 additions & 0 deletions exercises/02.relationships/02.problem.one-to-one/README.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# One-to-One Relationships

<EpicVideo url="https://www.epicweb.dev/workshops/data-modeling-deep-dive/data-relationships/database-design" />

👨‍💼 We still need to deal with the Note images. And we're also going to add
images to the users as well. Before we do, Olivia the Owl would like to have a
word with you about data modeling...
Expand Down
2 changes: 2 additions & 0 deletions exercises/02.relationships/02.solution.one-to-one/README.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# One-to-One Relationships

<EpicVideo url="https://www.epicweb.dev/workshops/data-modeling-deep-dive/data-relationships/database-design/solution" />

👨‍💼 Great job! Our data model is now pretty much done and we're just about ready
to start working with it. But how do we get this thing properly deployed and
handle changes to our schema in the future. Let's look at that next.
3 changes: 3 additions & 0 deletions exercises/02.relationships/FINISHED.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Data Relationships

<EpicVideo url="https://www.epicweb.dev/workshops/data-modeling-deep-dive/data-relationships/dad-joke-break-data-relationships" />
2 changes: 2 additions & 0 deletions exercises/02.relationships/README.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Data Relationships

<EpicVideo url="https://www.epicweb.dev/workshops/data-modeling-deep-dive/data-relationships/intro-to-data-relationships" />

Models in a database often have relationships, like like objects in our code or
even things in real life. There are a few types of relationships. We'll talk
about three of the most common:
Expand Down
2 changes: 2 additions & 0 deletions exercises/03.migrations/01.problem.migrations/README.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Migrations

<EpicVideo url="https://www.epicweb.dev/workshops/data-modeling-deep-dive/data-migrations/creating-migration-files-for-database-management-with-prisma" />

👨‍💼 Alright, let's get our migration file generated.

🐨 Run the following command:
Expand Down
2 changes: 2 additions & 0 deletions exercises/03.migrations/01.solution.migrations/README.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Migrations

<EpicVideo url="https://www.epicweb.dev/workshops/data-modeling-deep-dive/data-migrations/creating-migration-files-for-database-management-with-prisma/solution" />

👨‍💼 Great! We can now commit this migration file and as we make changes to the
data model we can continue committing migration files and feel confident that
our production database can follow along.
Expand Down
3 changes: 3 additions & 0 deletions exercises/03.migrations/FINISHED.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Data Migrations

<EpicVideo url="https://www.epicweb.dev/workshops/data-modeling-deep-dive/data-migrations/dad-joke-break-data-migrations" />
2 changes: 2 additions & 0 deletions exercises/03.migrations/README.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Data Migrations

<EpicVideo url="https://www.epicweb.dev/workshops/data-modeling-deep-dive/data-migrations/intro-to-data-migrations" />

It's great that Prisma allows us to easily represent our database models and
their relationships in a `schema.prisma` file. And we can easily make our
database just look like our schema by running `npx prisma db push`. But what
Expand Down
2 changes: 2 additions & 0 deletions exercises/04.seed/02.problem.nested/README.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Nested Writes

<EpicVideo url="https://www.epicweb.dev/workshops/data-modeling-deep-dive/seeding-data/optimizing-queries-with-nested-mutations-in-prisma" />

Check out the code for the note we're creating:

```ts lines=9-24
Expand Down
2 changes: 2 additions & 0 deletions exercises/04.seed/02.solution.nested/README.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Nested Writes

<EpicVideo url="https://www.epicweb.dev/workshops/data-modeling-deep-dive/seeding-data/optimizing-queries-with-nested-mutations-in-prisma/solution" />

👨‍💼 Great! Now our queries are a bit more optimized. Cleanup is in order for sure
and I'll have Kellie do that soon 🧝‍♂️. But let's take a quick break and then
we'll talk about seeding more data.
3 changes: 3 additions & 0 deletions exercises/04.seed/FINISHED.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Seeding Data

<EpicVideo url="https://www.epicweb.dev/workshops/data-modeling-deep-dive/seeding-data/dad-joke-break-seeding-data" />
2 changes: 2 additions & 0 deletions exercises/04.seed/README.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Seeding Data

<EpicVideo url="https://www.epicweb.dev/workshops/data-modeling-deep-dive/seeding-data/intro-to-seeding-data" />

Seeding data means to create data in your database that you can use to test your
application. It's also useful for initializing your database with data that you
know you'll need.
Expand Down
2 changes: 2 additions & 0 deletions exercises/05.generated/01.problem.generated/README.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Generated Data

<EpicVideo url="https://www.epicweb.dev/workshops/data-modeling-deep-dive/generating-seed-data/generating-fake-data-for-efficient-testing" />

👨‍💼 It's nice to have our hard-coded user that we can rely on during development,
but it would be nice to have more data, so let's generate it!

Expand Down
2 changes: 2 additions & 0 deletions exercises/05.generated/01.solution.generated/README.mdx
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
# Generated Data

<EpicVideo url="https://www.epicweb.dev/workshops/data-modeling-deep-dive/generating-seed-data/generating-fake-data-for-efficient-testing/solution" />

👨‍💼 Great, now every time we run the seed script we'll get new data. But we're
not quite generating a _lot_ of data yet. Let's fix that.
2 changes: 2 additions & 0 deletions exercises/05.generated/02.problem.dynamic/README.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Dynamic Data

<EpicVideo url="https://www.epicweb.dev/workshops/data-modeling-deep-dive/generating-seed-data/dynamically-generating-data" />

🧝‍♂️ I've fixed things up a little bit and add some organization for us. Just so
you know. I've also created a couple utility functions for creating users to
make that data a tad bit more realistic and creating images that we've already
Expand Down
2 changes: 2 additions & 0 deletions exercises/05.generated/02.solution.dynamic/README.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Dynamic Data

<EpicVideo url="https://www.epicweb.dev/workshops/data-modeling-deep-dive/generating-seed-data/dynamically-generating-data/solution" />

👨‍💼 Great! Now we can easily adjust how much data we're inserting into our
database for local testing. But there's still a problem. It won't happen often,
but we have a unique constraint on a few fields and they could definitely clash.
Expand Down
2 changes: 2 additions & 0 deletions exercises/05.generated/03.problem.unique/README.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Unique Constraints

<EpicVideo url="https://www.epicweb.dev/workshops/data-modeling-deep-dive/generating-seed-data/creating-unique-user-data-with-enforce-unique-library" />

👨‍💼 We have a `@unique` constraint on several fields. The `id` is fine because
that's either generated by the database or hard-coded. But the `username` and
`email` fields are generated by `faker` which can technically generate the same
Expand Down
2 changes: 2 additions & 0 deletions exercises/05.generated/03.solution.unique/README.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Unique Constraints

<EpicVideo url="https://www.epicweb.dev/workshops/data-modeling-deep-dive/generating-seed-data/creating-unique-user-data-with-enforce-unique-library/solution" />

👨‍💼 Great work. Thank you for doing that. Our seed script is now pretty awesome!

💯 For extra credit, if you've got some time, go ahead and move some of the
Expand Down
3 changes: 3 additions & 0 deletions exercises/05.generated/FINISHED.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Generating Seed Data

<EpicVideo url="https://www.epicweb.dev/workshops/data-modeling-deep-dive/generating-seed-data/dad-joke-break-generating-seed-data" />
2 changes: 2 additions & 0 deletions exercises/05.generated/README.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Generating Seed Data

<EpicVideo url="https://www.epicweb.dev/workshops/data-modeling-deep-dive/generating-seed-data/intro-to-generating-seed-data" />

Hard-coding data works great for small datasets. But as your application data
requirements grow you're going to find it hard to keep up. You can certainly use
production data to help you come up with your seed data, but there are privacy
Expand Down
2 changes: 2 additions & 0 deletions exercises/06.querying/01.problem.client/README.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Setup App Client

<EpicVideo url="https://www.epicweb.dev/workshops/data-modeling-deep-dive/querying-data/connecting-to-a-real-database-with-prisma-and-sqlite" />

👨‍💼 We are _finally_ ready to start using our new SQLite database in our
application. We've already created a `PrismaClient` in our seed script, but now
we want to access our SQLite data in our application.
Expand Down
2 changes: 2 additions & 0 deletions exercises/06.querying/01.solution.client/README.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Setup App Client

<EpicVideo url="https://www.epicweb.dev/workshops/data-modeling-deep-dive/querying-data/connecting-to-a-real-database-with-prisma-and-sqlite/solution" />

👨‍💼 Terrific work 👏 Now we can start querying our _real_ database for data
instead of the fake old one 🎉 Let's get started on that next.

Expand Down
2 changes: 2 additions & 0 deletions exercises/06.querying/02.problem.select/README.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Select

<EpicVideo url="https://www.epicweb.dev/workshops/data-modeling-deep-dive/querying-data/transitioning-to-real-database-with-prisma-api" />

Let's talk about this:

```sql
Expand Down
2 changes: 2 additions & 0 deletions exercises/06.querying/02.solution.select/README.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Select

<EpicVideo url="https://www.epicweb.dev/workshops/data-modeling-deep-dive/querying-data/transitioning-to-real-database-with-prisma-api/solution" />

👨‍💼 Great, we've optimized things nicely for our queries!

<callout-success>
Expand Down
6 changes: 4 additions & 2 deletions exercises/06.querying/03.problem.nested-select/README.mdx
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
# Nested Select

👨‍💼 On our `/users/:username/notes` page, we're currently doing two queries to
our in-memory database:
<EpicVideo url="https://www.epicweb.dev/workshops/data-modeling-deep-dive/querying-data/database-queries-and-migrating-to-prisma" />

👨‍💼 On our `/users/:username/notes` page, we're currently doing two queries to our
in-memory database:

1. Get the owner
2. Get the notes
Expand Down
2 changes: 2 additions & 0 deletions exercises/06.querying/03.solution.nested-select/README.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Nested Select

<EpicVideo url="https://www.epicweb.dev/workshops/data-modeling-deep-dive/querying-data/database-queries-and-migrating-to-prisma/solution" />

👨‍💼 That's enough for now. Migrating the rest of our `select`s will be more of
the same. 💯 As extra credit, you can update the `loader`
for <InlineFile file="app/routes/users+/$username_+/notes.$noteId.tsx" />
Expand Down
3 changes: 3 additions & 0 deletions exercises/06.querying/FINISHED.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Querying Data

<EpicVideo url="https://www.epicweb.dev/workshops/data-modeling-deep-dive/querying-data/dad-joke-break-querying-data" />
2 changes: 2 additions & 0 deletions exercises/06.querying/README.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Querying Data

<EpicVideo url="https://www.epicweb.dev/workshops/data-modeling-deep-dive/querying-data/intro-to-querying-data" />

<callout-info class="important">
Starting with this exercise, we're going to start migrating away from our
in-memory database to our SQLite database. Because our seed data for each is
Expand Down
2 changes: 2 additions & 0 deletions exercises/07.updating/01.problem.delete/README.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Delete

<EpicVideo url="https://www.epicweb.dev/workshops/data-modeling-deep-dive/updating-data/mutating-data-with-prisma" />

👨‍💼 This first part of the exercise is going to be a bit on the easy side,
because the update note bit is going to be a little more complicated 😅

Expand Down
2 changes: 2 additions & 0 deletions exercises/07.updating/01.solution.delete/README.mdx
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
# Delete

<EpicVideo url="https://www.epicweb.dev/workshops/data-modeling-deep-dive/updating-data/mutating-data-with-prisma/solution" />

👨‍💼 Huzzah, now when we delete a note it is deleting it from the right database
so we should see it disappear from the list of notes 😅
2 changes: 2 additions & 0 deletions exercises/07.updating/02.problem.update/README.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Update

<EpicVideo url="https://www.epicweb.dev/workshops/data-modeling-deep-dive/updating-data/updating-page-mutations-for-images-and-notes-with-efficient-cache-control" />

👨‍💼 We need to fix our note edit so we can save edits to our notes in the SQLite
database instead of our old in-memory database.

Expand Down
2 changes: 2 additions & 0 deletions exercises/07.updating/02.solution.update/README.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Update

<EpicVideo url="https://www.epicweb.dev/workshops/data-modeling-deep-dive/updating-data/updating-page-mutations-for-images-and-notes-with-efficient-cache-control/solution" />

👨‍💼 Nice work 👏 Now users can delete images, update existing images, and create
new images. In addition to update the `content` and `title` of the note as well.
But we've got a problem... These are a bunch of sequential operations. But what
Expand Down
2 changes: 2 additions & 0 deletions exercises/07.updating/03.problem.transactions/README.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Transactions

<EpicVideo url="https://www.epicweb.dev/workshops/data-modeling-deep-dive/updating-data/implementing-transactions-for-reliable-data-operations" />

👨‍💼 Whoops! So we've got an issue. If one of the steps in our multi-step process
to update a note fails, we'll end up with a halfway updated note. This is
problematic for our situation, but it could be worse (like in the banking
Expand Down
2 changes: 2 additions & 0 deletions exercises/07.updating/03.solution.transactions/README.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Transactions

<EpicVideo url="https://www.epicweb.dev/workshops/data-modeling-deep-dive/updating-data/implementing-transactions-for-reliable-data-operations/solution" />

👨‍💼 Great! Now our data can't get in this weird halfway saved state if there's a
save failure! But you know what... The Prisma Client is pretty powerful and
expressive and 🧝‍♂️ Kellie had an idea that I think you'd be interested in...
2 changes: 2 additions & 0 deletions exercises/07.updating/04.problem.nested/README.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Nested Update

<EpicVideo url="https://www.epicweb.dev/workshops/data-modeling-deep-dive/updating-data/optimizing-database-calls-with-nested-queries-in-prisma" />

👨‍💼 the Prisma Client is pretty powerful and expressive with its nested queries.
For example:

Expand Down
2 changes: 2 additions & 0 deletions exercises/07.updating/04.solution.nested/README.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Nested Update

<EpicVideo url="https://www.epicweb.dev/workshops/data-modeling-deep-dive/updating-data/optimizing-database-calls-with-nested-queries-in-prisma/solution" />

👨‍💼 That's great work! So which do you prefer? Sometimes you can't represent a
transaction in a single Prisma call like that, but it all comes back to the fact
that these things are run as a part of a transaction. So you can do multiple
Expand Down
3 changes: 3 additions & 0 deletions exercises/07.updating/FINISHED.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Updating Data

<EpicVideo url="https://www.epicweb.dev/workshops/data-modeling-deep-dive/updating-data/dad-joke-break-updating-data" />
2 changes: 2 additions & 0 deletions exercises/07.updating/README.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Updating Data

<EpicVideo url="https://www.epicweb.dev/workshops/data-modeling-deep-dive/updating-data/intro-to-updating-data" />

Here's how you insert data into a table in SQL:

```sql
Expand Down
2 changes: 2 additions & 0 deletions exercises/08.sql/01.problem.sql/README.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Raw SQL

<EpicVideo url="https://www.epicweb.dev/workshops/data-modeling-deep-dive/sql/sql-queries-for-user-search-in-prisma" />

👨‍💼 Our user search is the last thing that needs to be updated to use SQLite
instead of the in-memory database. I've got some requirements in mind for this
feature, but for now, we're going to start small with something you could
Expand Down
2 changes: 2 additions & 0 deletions exercises/08.sql/01.solution.sql/README.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Raw SQL

<EpicVideo url="https://www.epicweb.dev/workshops/data-modeling-deep-dive/sql/sql-queries-for-user-search-in-prisma/solution" />

👨‍💼 Great job! So far we're not doing anything you couldn't do with regular
Prisma, but we'll get there. I've got some more requirements for you than we
had before. Let's take care of the TypeScript issues first though...
Expand Down
2 changes: 2 additions & 0 deletions exercises/08.sql/02.problem.validation/README.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Validation

<EpicVideo url="https://www.epicweb.dev/workshops/data-modeling-deep-dive/sql/handling-typescript-errors-and-runtime-type-checking-with-prisma-and-zod" />

👨‍💼 When you execute a raw query like this, it's not possible to determine the
actual types for what the database gives back to you. Because we're querying our
own database, we can pretty well trust the data that will come back. So we could
Expand Down
2 changes: 2 additions & 0 deletions exercises/08.sql/02.solution.validation/README.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Validation

<EpicVideo url="https://www.epicweb.dev/workshops/data-modeling-deep-dive/sql/handling-typescript-errors-and-runtime-type-checking-with-prisma-and-zod/solution" />

👨‍💼 Looking good! Now we can more safely change our database schema and the
query! You will want to make sure to add a test to this page to help catch
mistakes, but we're much better off having this validation in place.
Expand Down
2 changes: 2 additions & 0 deletions exercises/08.sql/03.problem.join/README.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Joins

<EpicVideo url="https://www.epicweb.dev/workshops/data-modeling-deep-dive/sql/working-with-joins-in-sql" />

👨‍💼 Currently our user search page is only showing the fallback image for our
users because our query is too simple and doesn't include the users' images.

Expand Down
2 changes: 2 additions & 0 deletions exercises/08.sql/03.solution.join/README.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Joins

<EpicVideo url="https://www.epicweb.dev/workshops/data-modeling-deep-dive/sql/working-with-joins-in-sql/solution" />

👨‍💼 It's nice to have our users' images on there now! We've hit feature parity
with what things used to look like.

Expand Down
2 changes: 2 additions & 0 deletions exercises/08.sql/04.problem.order/README.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Order By

<EpicVideo url="https://www.epicweb.dev/workshops/data-modeling-deep-dive/sql/sorting-users-by-recent-entry-with-raw-sql" />

👨‍💼 Ok ok, here me out. It's awesome that we can search by our user's names and
usernames. But what would be more awesome is if the users were sorted by how
active they've been. We don't want to have a user who hasn't added or updated
Expand Down
2 changes: 2 additions & 0 deletions exercises/08.sql/04.solution.order/README.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Order By

<EpicVideo url="https://www.epicweb.dev/workshops/data-modeling-deep-dive/sql/sorting-users-by-recent-entry-with-raw-sql/solution" />

👨‍💼 Terrific work! You should be proud of yourself! Give yourself a pat on the
back! (I would, but I'm just a 👨‍💼 emoji).

Expand Down
3 changes: 3 additions & 0 deletions exercises/08.sql/FINISHED.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# SQL

<EpicVideo url="https://www.epicweb.dev/workshops/data-modeling-deep-dive/sql/dad-joke-bread-sql" />
Loading

0 comments on commit 079dfac

Please sign in to comment.