Peserta dapat membuat dan menampilkan data kontak yang terkoneksi dengan database
- Download source code melalui link yang telah disediakan dari halaman assesment
- Extract source code yang sudah terdownload pada perangkat anda
- Buka source code yang sudah diextract menggunakan Code Editor, contoh Visual Studio Code
- Salin isi dari file
.env.example
ke dalam file.env
- Lakukan migrasi database dengan mengikuti langkah-langkahnya yang bisa dilihat disini
- Jalankan
npm install
pada terminal - Jalankan
npm start
ataunpm run dev
untuk mode development pada terminal
- Pastikan anda sudah meng-install tools yang diperlukan. Jika belum, silahkan ikuti langkah-langkahnya disini
- Sesuaikan request dan response pada route GET
/contacts
pada fileapp.js
sesuai dengan Dokumentasi API pada Postman - Sesuaikan request dan response pada route POST
/contacts
pada fileapp.js
sesuai dengan Dokumentasi API pada Postman - Lakukan unit testing pada local anda dengan menggunakan Docker, langkah-langkahnya dapat dilihat disini
- Push projek ke docker hub setelah semua test case berhasil dijalankan, langkah-langkahnya dapat dilihat disini
- Submit image docker yang telah dipush ke Docker Hub ke Halaman Submission Devcode, langkah-langkahnya dapat dilihat disini
Jika anda sudah menginstall docker, anda bisa menjalankan perintah docker-compose up -d
untuk menjalankan API Contact Manager dan juga database Mysql. Tetapi pastikan environment
pada file .env yang telah kamu buat dari .env.example sesuai dengan environment
pada file docker-compose.yaml
.
Apabila ada perubahan pada file kodingan anda, anda bisa build ulang container dengan perintah :
docker-compose up -d --force-recreate
Anda bebas menggunakan libary apapun untuk membuat koneksi pada database.
Contoh koneksi database Mysql menggunakan libary mysql2.
const mysql = require('mysql2/promise');
const db = mysql.createPool({
host: process.env.MYSQL_HOST || 'localhost',
user: process.env.MYSQL_USER || 'root',
database: process.env.MYSQL_DBNAME || 'hello',
password: process.env.MYSQL_PASSWORD || 'root',
waitForConnections: true,
connectionLimit: 10,
queueLimit: 0,
});
Contoh koneksi database Posgresql menggunakan libary pg.
const pg = require('pg');
const db = new pg.Pool({
host: process.env.PGSQL_HOST,
user: process.env.PGSQL_USER,
password: process.env.PGSQL_PASSWORD,
database: process.env.PGSQL_DBNAME,
port: process.env.PGSQL_PORT,
max: 10,
idleTimeoutMillis: 30000,
connectionTimeoutMillis: 2000,
});
Contoh koneksi database Mongodb menggunakan libary mongodb.
const {MongoClient} = require('mongodb');
const mongoURI = `mongodb:127.0.0.1`;
const client = new MongoClient(mongoURI);
Migrasi table berada pada fungsi migration
di file db.js
, fungsi migration dijalankan didalam fungsi run
yang berada pada app.js
. Anda bisa menyesuaikan fungsi migration
dalam file db.js
sesuai struktur data pada tabel yang ingin dibuat.
Contoh ketika ingin membuat migrasi sebuah tabel:
- Mysql
await db.query(
`
CREATE TABLE IF NOT EXISTS contact (
id int not null auto_increment,
email varchar(255) not null,
password varchar(255) not null,
primary key (id)
)
`
);
- Postgresql
await db.query(
`
CREATE TABLE IF NOT EXISTS contacts (
id SERIAL,
full_name varchar(255) not null,
phone_number varchar(255) not null,
email varchar(255) not null,
primary key (id)
)
`
);
Pastikan environment database dan port API pada file .env
sama dengan file docker-compose.yaml
.
Dan pastikan anda telah menjalakan database dan api pada docker lokal, kalau belum jalankan perintah berikut docker-compose up -d
atau docker-compose up -d --build --force-recreate
untuk build ulang image ketika ada perubahan pada file.
Jalankan perintah berikut untuk melakukan unit testing:
docker run --network="host" -e API_URL=http://localhost:3030 -e LEVEL=3 alfi08/hello-unit-testing
Jalankan perintah berikut untuk Build docker image docker build . -t {name}
contoh :
docker build . -t devcode-nodejs
Pastikan sudah memiliki akun docker hub, dan login akun docker anda di lokal dengan perintah docker login
.
Setelah itu jalankan perintah berikut untuk push docker image lokal ke docker hub.
docker tag devcode-nodejs {username docker}/devcode-nodejs
docker push {username docker}/devcode-nodejs
Setelah itu submit docker image ke Devcode.
{username docker}/devcode-nodejs