Bun.js
adalah lingkungan runtime JavaScript baru yang mirip dengan Node.js dan Deno, tetapi lebih cepat dan lebih mandiri. Ini ditulis dalam Zig, bahasa rendah tingkat tinggi yang cepat, dan menggunakan Mesin JavaScriptCore
, yang mendukung browser Webkit seperti Safari. Penggabungan Zig dan mesin JavaScriptCore
telah menjadikan Bun salah satu runtime JavaScript tercepat.
Lakukan instalasi dahulu jika belum ada, buka terminal (macOS
, Linux
, or Windows Subsystem for Linux (WSL)
):
curl -fsSL https://bun.sh/install | bash
This project was created using bun init
in bun v1.0.4. Bun is a fast all-in-one JavaScript runtime.
Beberapa dependesi yang digunakan:
Elysia
: sebuah kerangka kerja web untuk Bun yang menyederhanakan penggunaan Bun, mirip dengan peran yang dimainkan oleh Express untuk Node.js.Prisma
: sebuah pemetaan objek-relasional (ORM) untuk JavaScript dan TypeScript.Dotenv
: paket NPM yang memuat variabel lingkungan dari file.env
ke dalamprocess.env
. Ini umumnya digunakan untuk mengelola konfigurasi lingkungan di aplikasi.PG
: driver natif untukPostgreSQL
. Ini memungkinkan aplikasi JavaScript untuk terhubung dan berinteraksi dengan databasePostgreSQL
.jsonwebtoken@8.5.1
: Sebuah paket yang mengimplementasikan standar JWT (JSON Web Token) dalam versi 8.5.1. JWT sering digunakan untuk otentikasi dan pertukaran informasi yang aman antara pihak yang terlibat.
Untuk instalasi silahkan ketikkan di terminal berikut:
bun install
Buat database dahulu sesuaikan dengan yang ada di .env
. Jika belum ada silahkan buat (duplicate) dari .env.example
.
Contoh:
CREATE DATABASE recipe_app;
Kemudian buka terminal ketikkan berikut:
bunx prisma init --datasource-provider postgresql
Setelah itu akan terbuat sebuah folder dengan nama prisma. Kemudian buka file schema.prisma
di dalam folder prisma. Kemudian tambahkan ini:
model User {
id Int @id @default(autoincrement())
email String @unique
name String?
password String
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
recipies Recipe[]
comments Comment[]
}
model Recipe {
id Int @id @default(autoincrement())
title String
body String
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
user User @relation(fields: [userId], references: [id])
userId Int
comments Comment[]
}
model Comment {
id Int @id @default(autoincrement())
body String
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
user User @relation(fields: [userId], references: [id])
userId Int
recipe Recipe @relation(fields: [recipeId], references: [id])
recipeId Int
}
Terakhir lakukan ini:
bunx prisma migrate dev --name init
To run:
bun run index.ts