Code Monkey home page Code Monkey logo

cs-api's Introduction

cs-api

Deploy

Membuat Sistem Informasi InUnsri (Informasi Unsri)

Deskripsi: Sistem Informasi yang membuat Mahasiswa Unsri mengetahui informasi terupdate.

Latar Belakang: Informasi yang beredar biasanya tidak beraturan, dimana informasi event, lomba, masih tersebar pada platform atau media yang berbeda.

Sebab itulah InUnsri dibuat untuk membuat semua informasi menyatu dan beraturan.

Resource Backend:

  • Database: PostgreSQL
  • Bahasa Server: Nodejs

Cara memulai :

  • ubah nama file .example.env menjadi .env dan ubah isi variabel environtment
npm install
npm start

Menjalankan test :

npm run test

Mengambil Token Owner :

npm run auth-owner

API Docs

Click Here

Accessing API Collection

Run in Postman

Manually Importing Collection

  1. Download .json postman collection in dev > DSC.postman_collection.json
  2. Download .json postman environment in dev > DSC CS-API.postman_environment.json
  3. Import .json collection and .json environment file to postman
  4. Use the environment before start to sending requests

cs-api's People

Contributors

kmhalvin avatar kbiits avatar bayudarupangestu avatar ikhwanperwira avatar asyraf07 avatar

Watchers

James Cloos avatar

Forkers

ikhwanperwira

cs-api's Issues

Buat Table Migration Event + Table Authentication

events

name type null constraint
id VARCHAR(50) PRIMARY KEY
id_ormawa VARCHAR(50)
judul TEXT
deskripsi TEXT
url_foto_pamflet TEXT
url_pendaftaran TEXT
waktu_acara TIMESTAMP
waktu_ditambah TIMESTAMP

Boleh tambah kolom lain
Tipe Data Kolom

authentication

name type null constraint
token TEXT

command membuat table migration

npm run migrate-dev create "create table <nama tabel>"

jsdoc tipe data pgm

/**
 * @param {import('node-pg-migrate').MigrationBuilder} pgm
 */

API Ormawa + Validator

  • Plugin
    • index
    • handler
      • postOrmawa (register)
      • getAllOrmawa
      • getOrmawaById
    • routes
      • post
      • get
      • get by id
  • Validator
    • email
    • password
    • nama
    • urlFotoUser

API Authentication

  • Plugin
    • index
    • handler
      • postAuthentication
      • putAuthentication
      • deleteAuthentication
    • routes
      • post
      • put
      • delete
  • No Validator

catatan:
isi fungsi di handler cukup sampe try catch, sistem autentikasinya nanti :v

Buat Table Migration Ormawa

ormawa

name type null constraint
id VARCHAR(50) PRIMARY KEY
email VARCHAR(50) UNIQUE
password TEXT
nama TEXT
url_foto_user TEXT

Boleh tambah kolom lain
Tipe Data Kolom

command membuat table migration

npm run migrate-dev create "create table <nama tabel>"

Ormawa Service

  • insertOrmawa
    INSERT INTO ormawa VALUES(id, email, password, nama, urlFotoUser) RETURNING id
  • getOrmawa
    SELECT id, email, nama, url_foto_user FROM ormawa
  • getOrmawaById
    SELECT id, email, nama, url_foto_user FROM ormawa WHERE id = $1
  • verifyOrmawaCredential
    SELECT id, password FROM ormawa WHERE email = $1
  • verifyNewEmail
    SELECT email FROM ormawa WHERE email = $1

Error Classes

  • Client Error
    • 400 = Bad Request
    • 401 = unauthorized / unauthenticated
    • 403 = unauthorized resource
    • 404 = not found

Boleh tambah status code lain

class ServerError extends Error {
  constructor(message, code = 500) {
    super(message);
    this.code = code;
  }
}

module.exports = ServerError;

Update Jest Test

Variables

  • PORT = env.PORT
  • HOST = env.HOST
  • testmail = "[email protected]"
  • testpassword = "supersecretpassword"
  • testname = "Ormawa Fasilkom"
  • testuserphoto = "https://via.placeholder.com/100"
  • ormawaId = undefined
  • accessToken = undefined
  • refreshToken = undefined
  • eventId = undefined

Testing

  • Post Ormawa = POST {HOST}:{PORT}/ormawa
    keterangan : registrasi ormawa
    Request Body :

    {
      "email": "{testmail}",
      "password": "{testpassword}",
      "nama": "{testname}",
      "urlFotoUser": "{testuserphoto}"
    }

    Response :

    • status code = 201
    • response.json() = Object
    • response.json() =
      {
        "status": "success",
        "message": "Ormawa ditambahkan",
        "data": {
          "ormawaId": "randomId" // simpan
        },
      }
  • Post Authentication = POST {HOST}:{PORT}/authentications
    keterangan : login ormawa
    Request Body :

    {
      "email": "{testmail}",
      "password": "{testpassword}"
    }

    Response :

    • status code = 200
    • response.json() = Object
    • response.json() =
      {
        "status": "success",
        "message": "Berhasil Autentikasi",
        "data": {
          "accessToken": "randomToken", // simpan ke variabel
          "refreshToken": "randomToken" // simpan ke variabel
        },
      }
  • Post Event With Auth = POST {HOST}:{PORT}/events
    keterangan : login ormawa
    Request Header :

    Authorization: Bearer {accessToken}
    

    Request Body :

    {
      "judul": "Seminar Fasilkom",
      "deskripsi": "Seminar Fasilkom",
      "urlFotoPamflet": "https://via.placeholder.com/120x350",
      "urlPendaftaran": "https://bit.ly/seminarfasilkom2021",
      "waktuAcara": "2021-06-19T09:56:25.087Z"
    }

    Response :

    • status code = 201
    • response.json() = Object
    • response.json() =
      {
        "status": "success",
        "message": "Event Berhasil Ditambah",
        "data": {
          "eventId": "randomId" // simpan
        },
      }
  • Get All Events = GET {HOST}:{PORT}/events
    Response :

    • status code = 200
    • response.json() = Object
    • response.json() =
      {
        "status": "success",
        "data": {
          "events": [
            {
              "ormawaId": "randomId",
              "judul": "Seminar Fasilkom",
              "urlFotoPamflet": "https://via.placeholder.com/120x350",
              "waktuAcara": "2021-06-19T09:56:25.087Z"
            }
          ] // test events > 0, ormawaId == {ormawaId}
        },
      }
  • Get Detailed Events = GET {HOST}:{PORT}/events/{eventId}
    Response :

    • status code = 200
    • response.json() = Object
    • response.json() =
      {
        "status": "success",
        "data": {
          "event": {
            "ormawaId": "randomId",
            "judul": "Seminar Fasilkom",
            "deskripsi": "Seminar Fasilkom",
            "urlFotoPamflet": "https://via.placeholder.com/120x350",
            "urlPendaftaran": "https://bit.ly/seminarfasilkom2021",
            "waktuAcara": "2021-06-19T09:56:25.087Z"
          }
        },
      }

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.