Tutorial Restful API Bun dan Elysia.js #4 : Insert Data ke Dalam Database


Tutorial Restful API Bun dan Elysia.js #4 : Insert Data ke Dalam Database

Halo teman-teman semuanya, pada artikel sebelumnya kita telah belajar bagaimana cara menampilkan list data dari database di Elysia.js dalam format JSON. Dan pada kesempatan kali ini kita semua akan belajar bagaimana cara melakukan proses insert data ke dalam database.

Langkah 1 - Menambahkan Function createPost di Controller

Pertama, kita akan menambahakn function baru di dalam controller untuk proses insert data ke dalam database.

Silahkan buka file src/controllers/PostController.ts, kemudian ubah semua kode-nya menjadi seperti berikut ini.

src/controllers/PostController.ts

//import prisma client
import prisma from "../../prisma/client";

/**
 * Getting all posts
 */
export async function getPosts() {
    try {
        //get all posts
        const posts = await prisma.post.findMany({ orderBy: { id: 'desc' } });

        //return response json
        return {
            success: true,
            message: "List Data Posts!",
            data: posts,
        };
    } catch (e: unknown) {
        console.error(`Error getting posts: ${e}`);
    }
}

/**
 * Creating a post
 */
export async function createPost(options: { title: string; content: string }) {
    try {

        //get title and content
        const { title, content } = options;

        //create data post
        const post = await prisma.post.create({
            data: {
                title: title,
                content: content,
            },
        });

        //return response json
        return {
            success: true,
            message: "Post Created Successfully!",
            data: post,
        }
    } catch (e: unknown) {
        console.error(`Error creating post: ${e}`);
    }
}

Dari perubahan kode di atas, pertama kita membuat function baru dengan nama createPost.

export async function createPost(options: { title: string; content: string }) {

	//...
	
}

Di dalamnya, kita lakukan destruct object title dan content dari paramater function.

//get title and content
const { title, content } = options;

Kemudian kita lakukan proses insert data ke dalam database menggunakan Prisma.

//create data post
const post = await prisma.post.create({
    data: {
        title: title,
        content: content,
    },
});

Setelah itu, kita return ke dalam format JSON.

//return response json
return {
    success: true,
    message: "Post Created Successfully!",
    data: post,
}

Langkah 2 - Membuat Route API Insert

Silahkan teman-teman buka file src/routes/index.ts, kemudian ubah semua kode-nya menjadi seperti berikut ini.

src/routes/index.ts

//import elysia
import { Elysia, t } from 'elysia';

//import controller
import { getPosts, createPost } from '../controllers/PostController';
 
const Routes = new Elysia({ prefix: '/posts' })

  //route get all posts
  .get('/', () => getPosts())

  //route create post
  .post('/', ({body}) => createPost(body as { title: string; content: string }), {
    body: t.Object({
      title: t.String({
        minLength: 3,
        maxLength: 100,
      }),
      content: t.String({
        minLength: 3,
        maxLength: 1000,
      }),
    })
  })

export default Routes;

Dari perubahan kode di atas, pertama kita import t dari Elysia. Ini digunakan untuk mendefinisikan sebuah validasi.

//import elysia
import { Elysia, t } from 'elysia';

Setelah itu, kita membuat route baru dengan path / dan method yang digunakan adalah POST.

.post('/', ({body}) => createPost(body as { title: string; content: string }), {

	//...
	
})

Di dalamnya, kita juga mendefinisikan beberapa validasi untuk data title dan content.

body: t.Object({
  title: t.String({
    minLength: 3,
    maxLength: 100,
  }),
  content: t.String({
    minLength: 3,
    maxLength: 1000,
  }),
})

Langkah 3 - Uji Coba Insert Data

Silahkan teman-teman buka aplikasi Postman, kemudian masukkan URL berikut ini : http://localhost:3000/api/posts. Kemudian untuk method-nya silahkan teman-teman pilih POST.

Setelah itu, klik tab Body dan pilih form-data dan masukkan key dan value berikut ini.

KEY VALUE
title Belajar Bun dan Elysia.js di SantriKoding
content Belajar Bun dan Elysia.js di SantriKoding

Jika sudah, silahkan klik Send dan jika berhasil maka kurang lebih hasilnya seperti berikut ini.

{
    "success": true,
    "message": "Post Created Successfully!",
    "data": {
        "id": 1,
        "title": "Belajar Bun dan Elysia.js di SantriKoding",
        "content": "Belajar Bun dan Elysia.js di SantriKoding",
        "createdAt": "2024-05-11T07:42:57.733Z",
        "updatedAt": "2024-05-11T07:42:57.733Z"
    }
}

Kesimpulan

Pada artikel kali ini, kita semua telah belajar bagaimana cara membuat proses insert data di dalam Elysia.js menggunakan Rest API.

Pada artikel berikutnya, kita semua akan belajar bagaimana cara menampilkan detail data berdasarkan ID di Elysia.js.

Terima Kasih



Fika Ridaul Maulayya
Full-Stack Developer, Content Creator and CO-Founder SantriKoding.com

Suka dengan tulisan di SantriKoding? Kamu bisa memberikan dukungan dengan berdonasi atau bagikan konten ini di sosial media. Terima kasih atas dukungan Anda!

KEBIJAKAN KOMENTAR

Saat memberikan komenatar silahkan memberikan informasi lengkap tentang error, seperti: screenshot, link kode, dll. Baca aturan komentar kami