Code Monkey home page Code Monkey logo

alta-store's Introduction

Hello, I'am Gerry ๐Ÿ‘‹

I am a Freelance Fullstack Web Developer and also a Programming Teacher. Currently focusing on Backend Engineering.

๐Ÿ”— ย Connect with me

@9tw @9tw @9tw

๐Ÿ› ๏ธ ย Language and Tools

Programming Language

html5 php javascript go go py

Database

mysql mysql mongo

Frameworks

mysql mysql mysql

Tools

git postman aws gcp docker

alta-store's People

Contributors

9tw avatar ridhof avatar

Watchers

 avatar

Forkers

ridhof

alta-store's Issues

Refactor model user

Refactor model user untuk membuat proses berikut menjadi lebih terstruktur

  • Pengecekan kesesuaian format email
  • Pengecekan kesesuaian format password
  • Pembaruan nilai token

MVP check

MVP checklist to check which feature that haven't finished yet

  • 1. Customer dapat melihat list products berdasarkan product category
  • 2. Customer dapat memasukkan product ke shopping cart
  • 3. Customer dapat melihat list product yang telah ditambahkan pada shopping cart
  • 4. Customer dapat menghapus list product pada shopping cart
  • 5. Customer dapat melakukan checkout dan melakukan transaksi pembayaran

Checkout dari Cart ke Transaksi Pembayaran

  1. User menembak endpoint untuk mengubah Items pada Cart menjadi Transactions
  • Membuat Data Transactions baru
  • Seluruh Items pada Cart, nilai Status berubah menjadi 1 dan nilai transactions_id juga berdasarkan data Transactions yang baru ditambahkan
  1. User menembak GetTransactions => menampilkan transaksi yang dimiliki oleh User

Data products yang tersimpan di database berbeda dengan yang dikirim

Data yang dikirim:

key value
produk Wafer Kaleng
stok 25
harga 42000
kode 0

Data yang tersimpan di database:

{
    "status": "success",
    "users": {
        "Id": "",
        "NamaProduk": "",
        "Stok": "25",
        "Deskripsi": "",
        "Harga": "42000",
        "IdKategori": "",
        "Gambar": ""
    }
}

Data yang seharusnya tersimpan di database:

{
    "status": "success",
    "users": {
        "Id": 1,
        "NamaProduk": "Wafer Kaleng",
        "Stok": 25,
        "Deskripsi": "",
        "Harga": 42000,
        "IdKategori": 0,
        "Gambar": ""
    }
}

Transactions mengembalikan Transaction milik seluruh User

GetTransactionsControllers mengembalilkan Transactions milik seluruh User ketika User yang sedang login (Auth Token) belum memiliki data Transactions yang tersimpan.
Namun sebaliknya jika User yang sedang login sudah memiliki data Transactions, GetTransactionsControllers hanya mengembalikan Transactions milik User saja.

  • Cari tahu penyebab terjadinya bug
  • Tentukan metode penyelesaian
  • Solve

GetProducts hanya return 1 data

  • Ada pengecekan jika tidak ada kategori yang diberikan, maka query semua data
  • Jika ada kategori, maka query terhadap kategori yang diberikan (bisa Categories ID saja, atau Categories Kodes aja)

Endpoint yang diakses: http://localhost:8000/products
Ekspetasi Output:

{
    "status": "success",
    "users": [
        {
            "id": 1,
            "produk": "Wafer Kaleng",
            "stok": 0,
            "deskripsi": "",
            "harga": 42000,
            "kode": 0,
            "gambar": ""
        },
        {
            "id": 2,
            "produk": "Wafer Toples",
            "stok": 62,
            "deskripsi": "",
            "harga": 25000,
            "kode": 1,
            "gambar": ""
        }
    ]
}

Output:

{
    "status": "success",
    "users": [
        {
            "id": 1,
            "produk": "Wafer Kaleng",
            "stok": 0,
            "deskripsi": "",
            "harga": 42000,
            "kode": 0,
            "gambar": ""
        }
    ]
}

ALTA-store RESTful API Design

  • Tabel berisi route name, HTTP, deskripsi, dan admin dari semua route yang ada di ALTA-store
  • Setiap route name memiliki Response Code apa saja
  • Contoh return seperti apa
  • Example request bodyt

Products dan Categories controllers mengembalikan interface users

Pada Products dan Categories saat ini mengembalikan format JSON seperti berikut ketika berhasi :

func GetProductControllers(c echo.Context) error {
	id := c.Param("id")
	prods, e := database.GetProduct(id)

	if e != nil {
		return echo.NewHTTPError(http.StatusBadRequest, e.Error())
	}
	return c.JSON(http.StatusOK, map[string]interface{}{
		"status": "success",
		"users":  prods,
	})
}

untuk membuat JSON lebih mudah dibaca oleh developer, perlu memberikan penamaan yang sesuai yakni products pada controller products dan categories pada controller categories. Sehingga developer tidak kebingungan saat melihat JSON yang memiliki nama users tetapi memiliki nilai products/categories.

Relasi antara Products dengan Categories

Relasi antara Products dengan Categories membuat beberapa perubahan

  • attribute kategori_id pada Products menjadi menggunakan gorm.Models relation (jika memungkinkan)
  • adanya pengecekan pada proses penambahan data products baru untuk mengecek apakah data kategori yang diberikan tersimpan di database? return error jika tidak ditemukan.

Implementasi best practice dari endpoint pencarian detail suatu data

Contoh endpoint /users/:id
Output sekarang ketika ada data user:

{
    "data": [
        {
            "id": 1,
            "nama": "",
            "email": "[email protected]",
            "password": "601f1889667efaebb33b8c12572835da3f027f78",
            "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdXRob3JpemVkIjp0cnVlLCJleHAiOjE2MTQyMzA5MzUsInVzZXJJRCI6MX0.yW4M6pA6KjZCN28tLdJqj-OA9O9D6pidxQbIUS8GaIY",
            "no_hp": "",
            "foto": "",
            "alamat": "",
            "status": "",
            "is_verified": false
        }
    ],
    "status": "success"
}

output sekarang ketika tidak ada data yang ditemukan:

{
    "data": [],
    "status": "success"
}
  • cari tahu best practice
  • jika ternyata belum sesuai dengan best practice, bisa diimplementasikan per modul.

Penambahan data kategori baru menyimpan data kosong

Penambahan data kategori baru menyimpan data yang tidak sesuai dengan data yang diberikan pada form-data.

Form data:

key value
kategori Makanan
kode makanan

Output sekarang:

{
    "status": "success",
    "users": {
        "Id": "",
        "NamaKategori": "",
        "KodeKategori": ""
    }
}

Output seharusnya:

{
    "status": "success",
    "users": {
        "Id": 1,
        "NamaKategori": "Makanan",
        "KodeKategori": "makanan"
    }
}

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.