10 Object Mapping

Object Relational Mapping

Objective

  1. Prisma ORM.
  2. Prisma schemas and data source providers.
  3. Prisma Migrate, Client, and Studio.

1 Task Tracker

Complete the 6 Relational Mapping guide to create a sample application that uses ORM.

Update the data repository service of 9.2 Task Tracker to use Prisma Client.

ER diagram for Task modelTaskid: Stringtitle: Stringcompleted: Booleandate: DateTime
  1. Install Prisma and initialize it with a SQLite provider:

    npm install --save-dev prisma
    npx prisma init --datasource-provider sqlite --output ./client
  2. Define the data models using a Prisma schema:

    prisma/schema.prisma
    model Task { }
  3. Use Prisma Migrate to create the database based on the schema, then access it using Prisma Studio:

    npx prisma migrate dev --name init
    npx prisma studio
  4. Create a data repository service with CRUD methods and use Prisma Client to access the data store:

    repos/prisma.js
    import { PrismaClient } from "@/prisma/client";
    const prisma = new PrismaClient();
    export default prisma;
    repos/tasks.js
    import prisma from "@/repos/prisma";
  5. Create a API using Next.js and use the data repository service in all routes.

  6. Test the routes using Postman (opens in a new tab).

2 Bank Accounts

Complete the 7 Server Actions guide to learn more about server actions.

Update the data repository service of 9.3 Bank Accounts to use Prisma Client.

ER diagram for Account and Transaction modelsAccountid: Stringtype: Stringbalance: FloatTransactionid: Stringtype: Stringamount: Floatdate: DateTimeaccount: String
  1. Install Prisma and initialize it with a SQLite provider:

    npm install --save-dev prisma
    npx prisma init --datasource-provider sqlite --output ./client
  2. Define the data models using a Prisma schema:

    prisma/schema.prisma
    model Account { }
     
    model Transaction { }
  3. Use Prisma Migrate to create the database based on the schema, then access it using Prisma Studio:

    npx prisma migrate dev --name init
    npx prisma studio
  4. Create a data repository service with CRUD methods and use Prisma Client to access the data store:

    repos/prisma.js
    import { PrismaClient } from "@/prisma/client";
    const prisma = new PrismaClient();
    export default prisma;
    repos/accounts.js
    import prisma from "@/repos/prisma";
    repos/transactions.js
    import prisma from "@/repos/prisma";
  5. Create a API using Next.js and use the data repository service in all routes.

  6. Test the routes using Postman (opens in a new tab).

Resources