<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Caio Felipe</title>
    <description>The latest articles on DEV Community by Caio Felipe (@caiofelipe97).</description>
    <link>https://dev.to/caiofelipe97</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F349857%2F27e0aa9f-4b3b-44c4-a3ac-daed7ea7bbf3.jpeg</url>
      <title>DEV Community: Caio Felipe</title>
      <link>https://dev.to/caiofelipe97</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/caiofelipe97"/>
    <language>en</language>
    <item>
      <title>Building a Nest.JS backend with Prisma (ORM)</title>
      <dc:creator>Caio Felipe</dc:creator>
      <pubDate>Mon, 26 Sep 2022 21:27:43 +0000</pubDate>
      <link>https://dev.to/caiofelipe97/building-a-nestjs-backend-with-prisma-orm-53a4</link>
      <guid>https://dev.to/caiofelipe97/building-a-nestjs-backend-with-prisma-orm-53a4</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Whenever we are starting a backend project in NodeJS, there's always a question about which frameworks we are going to use, although there is no correct answer to this question, it is always good to use new and famous technologies, they came to solve existing problems and make it easy to develop robust applications.&lt;/p&gt;

&lt;p&gt;Let me show you how to build a initial project structure using some of the new frameworks to build NodeJS scalable and efficient applications: &lt;strong&gt;NestJS&lt;/strong&gt; and &lt;strong&gt;Prisma&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Starting the backend using NestJS
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Nest (NestJS)&lt;/strong&gt; is a framework for building efficient, scalable Node.js server-side applications. Nest makes use of robust HTTP Server frameworks like &lt;a href="https://expressjs.com/"&gt;Express&lt;/a&gt;. Nest provides an out-of-the-box application architecture that allows developers and teams to create highly testable, scalable, loosely coupled, and easily maintainable applications. For more information:(&lt;a href="https://docs.nestjs.com/"&gt;https://docs.nestjs.com/&lt;/a&gt;)&lt;/p&gt;

&lt;h3&gt;
  
  
  Installation
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Run &lt;code&gt;npm i -=g @nestjs/cli&lt;/code&gt; to install the NestJS cli.&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;nest new &amp;lt;project-name&amp;gt;&lt;/code&gt; to create the Nest project &lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;project-name&lt;/strong&gt; folder will be created with node_modules and some files. A &lt;strong&gt;src/&lt;/strong&gt; directory will be created and populated with some main files:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--OsqoPwzI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ejwnmllr6kalc4n9gmcy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--OsqoPwzI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ejwnmllr6kalc4n9gmcy.png" alt="Nest project initial structure" width="256" height="440"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;We can delete all &lt;strong&gt;test&lt;/strong&gt; files and &lt;strong&gt;jest&lt;/strong&gt; commands inside the package.json file because it won't be our focus on this article.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--uoJkneWC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/w42cj9rffwl6b4zhhqca.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--uoJkneWC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/w42cj9rffwl6b4zhhqca.png" alt="Nest project without test files" width="253" height="332"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the structure generated by &lt;strong&gt;NestJS&lt;/strong&gt; contains the file &lt;strong&gt;main.ts&lt;/strong&gt; that &lt;strong&gt;Nest Factory&lt;/strong&gt; starts the main module and listens on some defined port.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--SfHZfHpJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6xo7wivkzhafglokmzft.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SfHZfHpJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6xo7wivkzhafglokmzft.png" alt="main.ts" width="447" height="175"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  A briefly introduction to the &lt;strong&gt;Nest&lt;/strong&gt; files:
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Module&lt;/strong&gt;: Group controllers and providers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Controller&lt;/strong&gt;: Route that calls a service to do something.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Services&lt;/strong&gt;: Functions with the logic and business rules from the backend.&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  Basically the &lt;strong&gt;NestJS&lt;/strong&gt; works based on &lt;strong&gt;decorators&lt;/strong&gt;:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Decorators declare routes, services, controllers and anything else.&lt;/li&gt;
&lt;li&gt;Decorators connect classes with common backend functionalities.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;hint&lt;/strong&gt;: It's possible to access the &lt;strong&gt;nest&lt;/strong&gt; commands by: &lt;strong&gt;&lt;em&gt;nest -h&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  First Steps
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Run &lt;code&gt;npm run start:dev&lt;/code&gt; to start the project and watch your files, automatically recompiling and reloading the server if something changes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Something cool about &lt;strong&gt;nest&lt;/strong&gt; is that it's possible to generate classes by the command: &lt;strong&gt;&lt;em&gt;nest generate FILE_TIPE FILE_NAME&lt;/em&gt;&lt;/strong&gt; as we gonna do right now:&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;1.&lt;code&gt;nest generate module database&lt;/code&gt;&lt;br&gt;
2.&lt;code&gt;nest generate module http&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Basically, each command will generate a module. The first module will handle the database, it will contain the Prisma service and the another one is to handle the HTTP requests, it will contain our controllers.&lt;/p&gt;

&lt;p&gt;Before anything is important to add a &lt;strong&gt;.env&lt;/strong&gt; file to our API to use secret variables. Run &lt;strong&gt;&lt;em&gt;npm i @nestjs/config&lt;/em&gt;&lt;/strong&gt; to be possible to use &lt;strong&gt;&lt;em&gt;.env&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Import the ConfigModule in the &lt;strong&gt;http.module.ts&lt;/strong&gt; file:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nG-Zp35W--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/18z73jz7fih36sj7h27a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nG-Zp35W--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/18z73jz7fih36sj7h27a.png" alt="http.module.ts" width="413" height="169"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;This way it's possible to access the .env file from the &lt;strong&gt;proccess.env&lt;/strong&gt; inside the &lt;strong&gt;Http Module&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Configuring the Application Database, using &lt;strong&gt;Prisma&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Prisma&lt;/strong&gt; is a &lt;strong&gt;Typescript ORM&lt;/strong&gt; developed mainly to SQL databases.&lt;br&gt;
Some &lt;strong&gt;features&lt;/strong&gt; of &lt;strong&gt;Prisma&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;It helps to write queries by warning errors and auto-completing when writing queries on the backend (Using Typescript).&lt;/li&gt;
&lt;li&gt;It creates &lt;strong&gt;migrations&lt;/strong&gt; automatically from changes made by the developer.
For more info: &lt;a href="https://prisma.io/"&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Adding &lt;strong&gt;Prisma&lt;/strong&gt; to the backend project
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Install prisma: &lt;code&gt;npm i prisma -D&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Then run: &lt;code&gt;npx prisma init&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;In the Prisma folder we got the configuration file, we need to set the &lt;strong&gt;DATABASE_URL&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Inside the &lt;strong&gt;.env&lt;/strong&gt; file add the &lt;strong&gt;DATABASE_URL&lt;/strong&gt; variable. To start and get our &lt;strong&gt;DATABASE_URL&lt;/strong&gt; I'll provide to you a &lt;strong&gt;docker-compose.yml&lt;/strong&gt; file and you just need to run &lt;code&gt;docker-compose up -d&lt;/code&gt; to start the postgreSQL database.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ec3fpBxW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nn012y0ox3ebt8bdelc8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ec3fpBxW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nn012y0ox3ebt8bdelc8.png" alt="DATABASE_URL .env variable" width="519" height="22"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Setting up &lt;strong&gt;Prisma&lt;/strong&gt; Service
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;First of all we'll add a new &lt;strong&gt;User&lt;/strong&gt; Table inside &lt;strong&gt;prsima/schema.prisma&lt;/strong&gt;:
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LKdi4Y5J--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vkho7sjvp6lrcaoknibu.png" alt="User Model" width="227" height="51"&gt;
&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;npx prisma migrate dev&lt;/code&gt; to check the changes on the &lt;strong&gt;schema.prisma&lt;/strong&gt; file and generate our first migration. You should give a name for it, for instance: &lt;strong&gt;create_users_table&lt;/strong&gt;. (Migrations will be available in the &lt;strong&gt;prisma/migrations/&lt;/strong&gt;* folder).&lt;/li&gt;
&lt;li&gt;After create our first migration with &lt;strong&gt;prisma&lt;/strong&gt; install the package: &lt;code&gt;npm i @prisma/client&lt;/code&gt;. Ref: &lt;a href="https://www.prisma.io/docs/concepts/components/prisma-client"&gt;Prisma Client&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Inside the Nest project we'll generate a new prisma service: &lt;code&gt;nest generate service prisma&lt;/code&gt;. This service will be located on &lt;strong&gt;src/database/prisma/prisma/service.ts&lt;/strong&gt; and it will be responsible to initiate &lt;strong&gt;Prisma&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2ah-12Ud--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1coni1dqddg9v6gpqx7c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2ah-12Ud--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1coni1dqddg9v6gpqx7c.png" alt="Prisma Configuration" width="390" height="495"&gt;&lt;/a&gt;&lt;br&gt;
(This configuration can be found on &lt;strong&gt;Prisma&lt;/strong&gt; documentation)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Now to use &lt;strong&gt;PrismaService&lt;/strong&gt; we should export it inside &lt;strong&gt;DatabaseModule&lt;/strong&gt; (Which contains &lt;strong&gt;PrismaService&lt;/strong&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--lkAmSA8n--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rxezqdrtj2uw1hi0kfsl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--lkAmSA8n--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rxezqdrtj2uw1hi0kfsl.png" alt="DatabaseModule" width="413" height="143"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Furthermore, we should import &lt;strong&gt;DatabaseModule&lt;/strong&gt; in our &lt;strong&gt;HttpModule&lt;/strong&gt; in order to get access to &lt;strong&gt;PrismaService&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fSZnfT-M--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/90e2i1e7n88nkxs4tyst.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fSZnfT-M--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/90e2i1e7n88nkxs4tyst.png" alt="HttpModule imports DatabaseModule" width="445" height="179"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Finished&lt;/strong&gt;! Prisma is configured, and you can run the project by &lt;code&gt;npm run start:dev&lt;/code&gt;. You can also using another terminal you can run &lt;code&gt;npx prisma studio&lt;/code&gt;. (&lt;strong&gt;Prisma studio&lt;/strong&gt; is a friendly interface that allows us to create/access/filter/delete database data)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Testing &lt;strong&gt;Prisma&lt;/strong&gt; by creating our first route
&lt;/h3&gt;

&lt;p&gt;Now that we have the &lt;strong&gt;PrismaService&lt;/strong&gt; is possible to create DB queries. So we gonna create a route to &lt;strong&gt;get all users&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;We start it by creating a new &lt;strong&gt;Controller&lt;/strong&gt;. (Controllers are responsible to handle requests and return a response to the client, just like a standard &lt;strong&gt;Express&lt;/strong&gt; NodeJS application)&lt;/li&gt;
&lt;li&gt;We can delete &lt;strong&gt;app.controller.ts&lt;/strong&gt; and &lt;strong&gt;app.service.ts&lt;/strong&gt; files that were generated by Nest, and generate a new user controller by the command: &lt;code&gt;nest g controller users&lt;/code&gt;. This command will generate a &lt;strong&gt;users&lt;/strong&gt; folder with a &lt;strong&gt;user.controller.ts&lt;/strong&gt; file. This controller will be part of &lt;strong&gt;http.module.ts&lt;/strong&gt; (as we going to receive &lt;strong&gt;HTTP&lt;/strong&gt; requests from it).&lt;/li&gt;
&lt;li&gt;The new project structure: 
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---UnP8msD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/22c988f5bowmsfu1zsj6.png" alt="Project source folder" width="206" height="146"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Controller&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;To define a route on a controller we use the &lt;code&gt;@Controller('users')&lt;/code&gt; decorator, we specify a path prefix optional as 'users'.&lt;/li&gt;
&lt;li&gt;The routes also will be defined with decorators (Everything on NestJS uses decorators). As we going to get data we will use the &lt;code&gt;@Get()&lt;/code&gt; decorator, without defining any route path.&lt;/li&gt;
&lt;li&gt;The new &lt;strong&gt;user.controller.ts&lt;/strong&gt; file:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--M2udE1KZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/npnri0omy71f0mucr1ht.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--M2udE1KZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/npnri0omy71f0mucr1ht.png" alt="Users Controller" width="366" height="166"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Now you can make a GET request to &lt;strong&gt;/users&lt;/strong&gt; and receive a response from the controller. (It's possible to access the request body, query, params, etc. All this through decorators, check the NestJS documentation: &lt;a href="https://docs.nestjs.com/controllers"&gt;https://docs.nestjs.com/controllers&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Service&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;After creating our first controller, it's time to create our first &lt;strong&gt;service&lt;/strong&gt;. On Prisma, services are also &lt;strong&gt;providers&lt;/strong&gt;. The main idea of ​​a &lt;strong&gt;provider&lt;/strong&gt; is that it can be injected as a dependency; this means that objects can create multiple relationships with each other, and the function of "linking" object instances can be largely delegated to the Nest runtime system.&lt;/li&gt;
&lt;li&gt;Our &lt;strong&gt;controller&lt;/strong&gt; should handle HTTP requests and delegate complex tasks to &lt;strong&gt;providers&lt;/strong&gt;. Our provider will be a &lt;strong&gt;service&lt;/strong&gt; called &lt;strong&gt;UsersService&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt; First run &lt;code&gt;nest g service users&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Move the &lt;strong&gt;users.service.ts&lt;/strong&gt; file to a new folder &lt;strong&gt;src/service&lt;/strong&gt;, and import this as a provider on &lt;strong&gt;http.module.ts&lt;/strong&gt; to be possible to call it from the &lt;strong&gt;UsersController&lt;/strong&gt;:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9Aq95Smt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u3cts7n0lrdgbzh9vwvc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9Aq95Smt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u3cts7n0lrdgbzh9vwvc.png" alt="HttpModule import UsersService provider" width="445" height="208"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;This &lt;strong&gt;service&lt;/strong&gt; will be responsible for manipulating data from the Database using &lt;strong&gt;PrismaService&lt;/strong&gt; and it's also a &lt;strong&gt;Provider&lt;/strong&gt;. &lt;/li&gt;
&lt;li&gt;The best part of &lt;strong&gt;NestJS&lt;/strong&gt; it is that is simple to use services by dependency injection. See how I import and use &lt;strong&gt;PrismaService&lt;/strong&gt;:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--uys6NymL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/aq70l3hdyjngxfrlm8o3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--uys6NymL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/aq70l3hdyjngxfrlm8o3.png" alt="UsersService import PrismaService" width="483" height="175"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Through &lt;strong&gt;Typescript&lt;/strong&gt;, &lt;strong&gt;Prisma&lt;/strong&gt; helps us to do database operations in a much easier way. &lt;/li&gt;
&lt;li&gt;Now to test you can run prism studio and add some data to your database using &lt;strong&gt;Prisma Studio&lt;/strong&gt;: &lt;code&gt;npx prism studio&lt;/code&gt;. And everything should be working just fine!&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;That's an initial structure for a NestJS backend project using Prisma, you can clone my repo and start your own project from there.&lt;/li&gt;
&lt;li&gt;Thank you for reading this article! Check out the &lt;strong&gt;Github repo link&lt;/strong&gt;: &lt;a href="https://github.com/caiofelipe97/nestjs-prisma"&gt;https://github.com/caiofelipe97/nestjs-prisma&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;You can also reach me on &lt;strong&gt;LinkedIn&lt;/strong&gt;: &lt;a href="https://www.linkedin.com/in/caio-melo-281705119/"&gt;https://www.linkedin.com/in/caio-melo-281705119/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>node</category>
      <category>prisma</category>
      <category>nestjs</category>
      <category>typescript</category>
    </item>
    <item>
      <title>Hábitos de um bom líder e a importância da liderança na prevenção do Burnout para os profissionais de Engenharia de Software</title>
      <dc:creator>Caio Felipe</dc:creator>
      <pubDate>Thu, 17 Sep 2020 18:52:33 +0000</pubDate>
      <link>https://dev.to/caiofelipe97/habitos-de-um-bom-lider-e-a-importancia-da-lideranca-na-prevencao-do-burnout-para-os-profisisonais-de-ti-336a</link>
      <guid>https://dev.to/caiofelipe97/habitos-de-um-bom-lider-e-a-importancia-da-lideranca-na-prevencao-do-burnout-para-os-profisisonais-de-ti-336a</guid>
      <description>&lt;h2&gt;
  
  
  Introdução
&lt;/h2&gt;

&lt;p&gt;A liderança é um atributo desejável em todo profissional de TI, seja ele CEO, gerente ou apenas um desenvolvedor. Existem empresas como a Amazon que durante o processo de ingresso na empresa é dito para ler sobre os &lt;a href="https://www.amazon.jobs/pt/principles"&gt;Princípios de liderança da Amazon&lt;/a&gt;, que seria um guia de como se tornar um bom líder na empresa, e seus relatos de experiências como Engenheiro de Software devem se assemelhar a esses princípios.&lt;/p&gt;

&lt;h4&gt;
  
  
  Existe formula mágica para se tornar um bom líder?
&lt;/h4&gt;

&lt;p&gt;Existem estratégias para influenciar e se relacionar com pessoas, entretanto, se eu tentar usar táticas que levem os outros a fazer aquilo que eu quero - ou a trabalhar melhor, ou a estar mais motivados, ou a gostar mais de mim e de todos - enquanto meu caráter revela defeitos profundos e está marcado pela ambiguidade e pela falta de sinceridade, então não conseguirei obter o sucesso a longo prazo. Minha ambiguidade vai gerar desconfiança, e tudo que eu fizer - mesmo usando as chamadas boas técnicas de relações humanas - será percebido como tentativa de manipulação.&lt;/p&gt;

&lt;h4&gt;
  
  
  A construção de bons hábitos que definem quem você é
&lt;/h4&gt;

&lt;p&gt;É por isso que deve existir uma mudança interna, a pessoa seguindo uma mentalidade de crescimento, deve buscar o amadurecimento e construção do seu caráter a partir dos hábitos corretos que o irá colocar em posição de referência, como indivíduo e líder. Esse líder pode “puxar” a responsabilidade, promover a contribuição entre os individuos através da comunicação transparente, sendo de papel importante na prevenção do Burnout para os profissionais de TI.&lt;/p&gt;

&lt;h2&gt;
  
  
  A busca da independência para alcançar a interdependência
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--wHM93-qr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/wZDk7qD.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--wHM93-qr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/wZDk7qD.jpg" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Somos o que repetidamente fazemos. A excelência, portanto, não é um feito, mas um hábito -- Aristóteles.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Nosso caráter, basicamente, é composto pelos hábitos que desenvolvemos, muitas vezes com o intuito de alcançar nossa indepedência, no plano intelectual e emocional. A independência é, em si e por si, uma grande conquista.&lt;/p&gt;

&lt;p&gt;Mas a indepêndencia não é suprema,  pessoas independentes podem ser eficazes em nivel individual, mas não constituem lideres adequados ou bons elementos em uma equipe, nesse paradigma o trabalho em equipe e a cooperação são valores secundários diferente que é no paradigma da interdependência.&lt;/p&gt;

&lt;p&gt;Sendo assim, deve existir uma conquista da indepêndencia para só então alcançar a interdependência. A independência é o paradgima do eu, se eu sou independente seguiria minhas proprias ideias, saberia reconhecer meu valor sozinho, conduziria minha vida tendo meu valor como base. Já a interdependência é o paradgma do nós, eu sou autoconfiante e capaz, mas sei que nós dois juntos podemos fazer muito mais que um de nós isoladamente, por melhor que seja.&lt;/p&gt;

&lt;h2&gt;
  
  
  Líder com Mindset Fixo x Líder com Mindset de crescimento
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--PJMb4RW---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/SIIxc7d.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--PJMb4RW---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/SIIxc7d.jpg" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Chefes ruins dando feedback são assim:
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;Você errou e ME prejudicou&lt;/li&gt;
&lt;li&gt;Você não está indo bem&lt;/li&gt;
&lt;li&gt;Não sei mais o que faço com você&lt;/li&gt;
&lt;li&gt;Você deveria se espelhar no fulano&lt;/li&gt;
&lt;li&gt;Você é difícil de lidar e não sabe direito o seu serviço&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  Já bons Líderes dando feedback:
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;Você errou, mas VAMOS corrigir&lt;/li&gt;
&lt;li&gt;Você não está bem, tem algo acontecendo com você que posso ajudar?&lt;/li&gt;
&lt;li&gt;Em seu feedback anterior já falamos sobre esse tema, mas vejo que ainda está com dificuldade, como podemos mudar isso?&lt;/li&gt;
&lt;li&gt;O time todo está aqui pra te ajudar&lt;/li&gt;
&lt;li&gt;Eu vou te mostrar como faz e te acompanharei no começo para te dar confiança em seguir sozinho&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Você consegue notar a diferença de um “líder” com mindset fixo e um líder com mindset  de crescimento? O segundo têm a crença no potencial e no desenvolvimento humanos, tanto nos deles próprios quanto nos de outras pessoas. Falam em trajetos inclusivos, cheios de aprendizado e satifação.&lt;/p&gt;

&lt;h2&gt;
  
  
  O papel da liderança na prevenção do Burnout
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Jn_s3Ptt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/wVVGUxy.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Jn_s3Ptt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/wVVGUxy.jpg" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;De acordo com a &lt;a href="https://usblog.teamblind.com/wp-content/uploads/2020/05/StateofBurnoutCovid19.pdf"&gt;The Evolution of Burnout&lt;/a&gt;, que obteve respostas de funcionários de grandes empresas de tecnologia como Cisco, Oracle, LinkedIn, Salesforce, Apple, Uber, entre outras, os profissionais estão em um ritmo de trabalho que consideram mais estressante como consequência da pandemia de covid-19.&lt;br&gt;
Uma liderança que administrar de forma mais humanizada será uma marca muito aderente ao que todos buscam. Tendo assim um papel fundamental na detecção, entendendo os limites e o contexto de cada colaborador seu. E a colaboração é uma roda que o líder sempre deve estar girando, pois promovendo essas interações irá gerar criatividade e tornar as pessoas mais protagonistas&lt;/p&gt;

&lt;h4&gt;
  
  
  Comunicação transparente é chave para afastar o Burnout
&lt;/h4&gt;

&lt;p&gt;A comunicação transparente é a arma chave para a colaboração acontecer, trabalhando com transparência pode criar confiança entre os colaboradores. O líder também pode contribuir passando uma visão positiva, sendo um farol, mesmo em situações em que a falha é eminente. &lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusão
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Nunca vou ser como Fulano - Sicrano&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Você provavelmente tem um líder como referência do que você almeja ser, seja ele famoso ou não. Não desista de se tornar a pessoa que você almeja, nossa inteligência, conhecimento, e carater são desenvolvidos com o tempo e os hábitos corretos.&lt;br&gt;
 O "Fulano" um dia já foi uma pessoa tão inexperiente quanto você quando estava iniciando a busca de ser quem ele almejava. &lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;center&gt;. . .&lt;/center&gt;
&lt;/h1&gt;

&lt;h4&gt;
  
  
  Citações, fontes de inspiração e fontes:
&lt;/h4&gt;

&lt;p&gt;[1]: Stephen R. Covey. The 7 Habits of Highly Effective People: Powerful Lessons in Personal Change&lt;br&gt;
&lt;a href="https://www.amazon.com.br/dp/B00GOZV3TM/ref=dp-kindle-redirect?_encoding=UTF8&amp;amp;btkr=1"&gt;https://www.amazon.com.br/dp/B00GOZV3TM/ref=dp-kindle-redirect?_encoding=UTF8&amp;amp;btkr=1&lt;/a&gt;&lt;br&gt;
[2]: Carol S. Dweck. Mindset: A nova psicologia do sucesso eBook Kindle &lt;a href="https://www.amazon.com.br/dp/B01NASOQGG/ref=dp-kindle-redirect?_encoding=UTF8&amp;amp;btkr=1"&gt;https://www.amazon.com.br/dp/B01NASOQGG/ref=dp-kindle-redirect?_encoding=UTF8&amp;amp;btkr=1&lt;/a&gt;&lt;br&gt;
[3]: Carla Matsu. COMO PROFISSIONAIS DE TI PODEM LIDAR COM O BURNOUT ACELERADO NA PANDEMIA?&lt;br&gt;
&lt;a href="https://itforum365.com.br/como-profissionais-de-ti-podem-lidar-com-o-burnout-acelerado-na-pandemia/?fbclid=IwAR0BTAOxtq9NI3AMXAiG_9fB166p596aWmkewoH-2F1yWxW0A3WRZfHHCrI#"&gt;https://itforum365.com.br/como-profissionais-de-ti-podem-lidar-com-o-burnout-acelerado-na-pandemia/?fbclid=IwAR0BTAOxtq9NI3AMXAiG_9fB166p596aWmkewoH-2F1yWxW0A3WRZfHHCrI#&lt;/a&gt;&lt;/p&gt;

</description>
      <category>leadership</category>
      <category>productivity</category>
      <category>habits</category>
      <category>burnout</category>
    </item>
  </channel>
</rss>
