diff --git a/main.go b/main.go index 0102520..89aca49 100644 --- a/main.go +++ b/main.go @@ -12,6 +12,10 @@ import ( "github.com/tokopedia/tdk/go/log" ) +const ( + InvalidProductIDErrorMessage string = "Product ID is Invalid" +) + func main() { // Set Standard Log Config @@ -23,7 +27,7 @@ func main() { }) if err != nil { - log.StdInfo(context.Background(), nil, err, "Failed to start Log") + log.StdFatal(context.Background(), nil, err, "Failed to start Log") } http.HandleFunc("/", HelloHandler) @@ -44,22 +48,19 @@ func HelloHandler(w http.ResponseWriter, r *http.Request) { keys, ok := r.URL.Query()["product_id"] if !ok { - log.StdFatal(ctx, nil, nil, "No product id supplied") - fmt.Fprint(w, "No product id supplied") + log.StdWarn(ctx, nil, nil, "[HelloHandler][Query] No Product ID supplied") return } // parse the product id if len(keys) < 1 { - log.StdFatal(ctx, nil, nil, "No product id found") - fmt.Fprint(w, "No product id supplied") + log.StdWarn(ctx, nil, nil, "[HelloHandler] No Product ID found") return } productID, err = strconv.Atoi(keys[0]) if err != nil { - log.StdFatalf(ctx, nil, nil, "Product id not valid %s", keys[0]) - fmt.Fprint(w, "No product id supplied") + log.StdWarnf(ctx, keys[0], err, "[HelloHandler][Atoi] Error when parse Product ID") return } @@ -68,13 +69,18 @@ func HelloHandler(w http.ResponseWriter, r *http.Request) { product, err := GetProductFromDB(ctx, productID) if err != nil { - fmt.Fprint(w, "Invalid id") + if err.Error() == InvalidProductIDErrorMessage { + log.StdWarn(ctx, productID, err, "[HelloHandler][GetProductFromDB] Invalid Product ID") + } else { + log.StdError(ctx, productID, err, "[HelloHandler][GetProductFromDB] Error when get Product from DB") + } + return } err = CalculateDiscount(ctx, product) if err != nil { - fmt.Fprint(w, "Invalid id") + log.StdErrorf(ctx, product, err, "[HelloHandler][CalculateDiscount] Error on Calculating Discount") return } @@ -84,7 +90,7 @@ func HelloHandler(w http.ResponseWriter, r *http.Request) { func GetProductFromDB(ctx context.Context, id int) (*external.Product, error) { var result external.Product if id < 1 { - return nil, errors.New("Product id Invalid") + return nil, errors.New(InvalidProductIDErrorMessage) } result.Name = "product testing" @@ -95,7 +101,7 @@ func GetProductFromDB(ctx context.Context, id int) (*external.Product, error) { func CalculateDiscount(ctx context.Context, p *external.Product) error { if p.Stock%2 == 0 { p.Discount = 20 - log.StdError(ctx, p, nil, "User get 20 discount") + log.StdDebug(ctx, p, nil, "[CalculateDiscount] User get 20 discount") } else { p.Discount = 0 }