Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
G
GoLang_Test
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
rima anggraini
GoLang_Test
Commits
7bd57fb0
Commit
7bd57fb0
authored
Jul 13, 2019
by
rima anggraini
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
udah terstruktur ya
parent
617ac106
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
199 additions
and
111 deletions
+199
-111
Connection.go
Connection.go
+19
-0
MainAPI.go
MainAPI.go
+137
-106
model.go
model.go
+43
-5
No files found.
Connection.go
0 → 100644
View file @
7bd57fb0
package
main
//initial Connection ke DB
import
(
"database/sql"
"fmt"
_
"github.com/go-sql-driver/mysql"
)
func
connect
()
(
*
sql
.
DB
,
error
)
{
db
,
err
:=
sql
.
Open
(
"mysql"
,
"root:@tcp(localhost:3306)/test"
)
if
err
!=
nil
{
return
nil
,
err
}
fmt
.
Println
(
db
)
return
db
,
nil
}
Web
API.go
→
Main
API.go
View file @
7bd57fb0
...
...
@@ -10,53 +10,6 @@ import (
_
"github.com/go-sql-driver/mysql"
)
type
student
struct
{
ID
string
Name
string
Grade
int
}
type
product
struct
{
ProductID
uint64
ProductName
string
Stock
int
}
type
Response
struct
{
Status
int
`json:"status"`
Message
string
`json:"message"`
Data
[]
product
}
type
productCategory
struct
{
ProductID
int
ProductName
string
Stock
int
}
type
category
struct
{
CategoryID
int
CategoryName
string
}
type
CategoryArr
struct
{
CategoryName
string
DataProduct
[]
productCategory
}
type
ResponseCategory
struct
{
Status
string
Message
string
data
CategoryArr
}
var
data
=
[]
student
{
student
{
"E001"
,
"ethan"
,
21
},
student
{
"W001"
,
"wick"
,
22
},
student
{
"B001"
,
"bourne"
,
23
},
student
{
"B002"
,
"bond"
,
23
},
}
func
users
(
w
http
.
ResponseWriter
,
r
*
http
.
Request
)
{
w
.
Header
()
.
Set
(
"Content-Type"
,
"application/json"
)
...
...
@@ -75,16 +28,6 @@ func users(w http.ResponseWriter, r *http.Request) {
http
.
Error
(
w
,
""
,
http
.
StatusBadRequest
)
}
func
connect
()
(
*
sql
.
DB
,
error
)
{
db
,
err
:=
sql
.
Open
(
"mysql"
,
"root:@tcp(localhost:3306)/test"
)
if
err
!=
nil
{
return
nil
,
err
}
fmt
.
Println
(
db
)
return
db
,
nil
}
func
user
(
w
http
.
ResponseWriter
,
r
*
http
.
Request
)
{
w
.
Header
()
.
Set
(
"Content-Type"
,
"application/json"
)
...
...
@@ -143,9 +86,11 @@ func products(w http.ResponseWriter, r *http.Request) {
log
.
Print
(
err
)
}
for
rows
.
Next
()
{
//buat model sesuai field yang diselect
if
err
:=
rows
.
Scan
(
&
products
.
ProductID
,
&
products
.
ProductName
,
&
products
.
Stock
);
err
!=
nil
{
log
.
Fatal
(
err
.
Error
())
}
else
{
//put product ke array
arr_product
=
append
(
arr_product
,
products
)
}
}
...
...
@@ -161,6 +106,122 @@ func products(w http.ResponseWriter, r *http.Request) {
http
.
Error
(
w
,
""
,
http
.
StatusBadRequest
)
}
func
insertProduct
(
w
http
.
ResponseWriter
,
r
*
http
.
Request
)
{
w
.
Header
()
.
Set
(
"Content-Type"
,
"application/json"
)
if
r
.
Method
==
"POST"
{
var
productName
=
r
.
FormValue
(
"product_name"
)
var
stock
=
r
.
FormValue
(
"stock"
)
var
category
=
r
.
FormValue
(
"category_id"
)
var
response
Response
db
,
err
:=
connect
()
if
err
!=
nil
{
fmt
.
Println
(
err
.
Error
())
return
}
defer
db
.
Close
()
fmt
.
Println
(
"OK"
)
fmt
.
Println
(
"=============="
+
productName
)
_
,
err
=
db
.
Exec
(
"INSERT INTO Product (ProductName, Stock, CategoryID) values (?,?,?)"
,
productName
,
stock
,
category
,
)
if
err
!=
nil
{
log
.
Print
(
err
)
}
response
.
Status
=
1
response
.
Message
=
"Success Insert Data"
w
.
Header
()
.
Set
(
"Content-Type"
,
"application/json"
)
json
.
NewEncoder
(
w
)
.
Encode
(
response
)
}
http
.
Error
(
w
,
""
,
http
.
StatusBadRequest
)
}
func
checkCount
(
rows
*
sql
.
Rows
)
(
count
int
)
{
for
rows
.
Next
()
{
err
:=
rows
.
Scan
(
&
count
)
checkErr
(
err
)
}
return
count
}
func
checkErr
(
err
error
)
{
if
err
!=
nil
{
panic
(
err
)
}
}
func
updateProduct
(
w
http
.
ResponseWriter
,
r
*
http
.
Request
)
{
w
.
Header
()
.
Set
(
"Content-Type"
,
"application/json"
)
if
r
.
Method
==
"POST"
{
var
productName
=
r
.
FormValue
(
"product_name"
)
var
stock
=
r
.
FormValue
(
"stock"
)
var
category
=
r
.
FormValue
(
"category_id"
)
var
productId
=
r
.
FormValue
(
"product_id"
)
var
ResponseCRUD
ResponseCRUD
db
,
err
:=
connect
()
if
err
!=
nil
{
fmt
.
Println
(
err
.
Error
())
return
}
defer
db
.
Close
()
fmt
.
Println
(
"OK"
)
rows
,
err
:=
db
.
Query
(
"select COUNT(ProductID) as count from Product WHERE ProductID = "
+
productId
)
if
err
!=
nil
{
fmt
.
Println
(
err
.
Error
())
return
}
defer
rows
.
Close
()
if
checkCount
(
rows
)
>
0
{
fmt
.
Println
(
"=============="
+
productName
)
_
,
err
=
db
.
Exec
(
"UPDATE Product Set ProductName = ?, Stock = ?, CategoryID = ? Where ProductID = ? "
,
productName
,
stock
,
category
,
productId
,
)
if
err
!=
nil
{
log
.
Print
(
err
)
}
else
{
ResponseCRUD
.
Status
=
1
ResponseCRUD
.
Message
=
"Success Update Data"
ResponseCRUD
.
DataProduct
=
productId
w
.
Header
()
.
Set
(
"Content-Type"
,
"application/json"
)
json
.
NewEncoder
(
w
)
.
Encode
(
ResponseCRUD
)
}
}
else
{
ResponseCRUD
.
Status
=
0
ResponseCRUD
.
Message
=
"Data Not Found"
ResponseCRUD
.
DataProduct
=
productId
w
.
Header
()
.
Set
(
"Content-Type"
,
"application/json"
)
json
.
NewEncoder
(
w
)
.
Encode
(
ResponseCRUD
)
}
}
http
.
Error
(
w
,
""
,
http
.
StatusBadRequest
)
}
func
categoryfunc
(
w
http
.
ResponseWriter
,
r
*
http
.
Request
)
{
w
.
Header
()
.
Set
(
"Content-Type"
,
"application/json"
)
...
...
@@ -175,23 +236,32 @@ func categoryfunc(w http.ResponseWriter, r *http.Request) {
defer
db
.
Close
()
fmt
.
Println
(
"OK"
)
var
productsresult
productCategory
var
arrayProduct
[]
productCategory
//var productsresult Category
var
products
product
var
arrayProduct
[]
product
var
response
ResponseCategory
productCategory
,
err
:=
db
.
Query
(
"select ProductID, ProductName, Stock from Product WHERE CategoryID = 1"
)
rows
,
err
:=
db
.
Query
(
"select ProductID, ProductName, Stock from Product"
)
//rows, err := db.Query("select ProductID, ProductName, Stock from Product WHERE CategoryID = 1")
if
err
!=
nil
{
fmt
.
Println
(
err
.
Error
())
return
}
defer
rows
.
Close
()
//productCategory, err := db.Query("select ProductID, ProductName, Stock from Product WHERE CategoryID = 1")
fmt
.
Println
(
"-----------------"
)
if
err
!=
nil
{
log
.
Print
(
err
)
}
for
productCategory
.
Next
()
{
if
err
:=
productCategory
.
Scan
(
productsresult
.
ProductID
,
productsresult
.
ProductName
,
productsresult
.
Stock
);
err
!=
nil
{
for
rows
.
Next
()
{
if
err
:=
rows
.
Scan
(
products
.
ProductID
,
products
.
ProductName
,
products
.
Stock
);
err
!=
nil
{
log
.
Fatal
(
err
.
Error
())
}
else
{
arrayProduct
=
append
(
arrayProduct
,
products
result
)
arrayProduct
=
append
(
arrayProduct
,
products
)
}
}
...
...
@@ -213,56 +283,17 @@ func categoryfunc(w http.ResponseWriter, r *http.Request) {
http
.
Error
(
w
,
""
,
http
.
StatusBadRequest
)
}
func
sqlQuery
()
{
db
,
err
:=
connect
()
if
err
!=
nil
{
fmt
.
Println
(
err
.
Error
())
return
}
defer
db
.
Close
()
fmt
.
Println
(
"OK"
)
rows
,
err
:=
db
.
Query
(
"select ProductID, ProductName, Stock from Product"
)
if
err
!=
nil
{
fmt
.
Println
(
err
.
Error
())
return
}
defer
rows
.
Close
()
var
result
[]
product
for
rows
.
Next
()
{
var
each
=
product
{}
var
err
=
rows
.
Scan
(
&
each
.
ProductID
,
&
each
.
ProductName
,
&
each
.
Stock
)
if
err
!=
nil
{
fmt
.
Println
(
err
.
Error
())
return
}
result
=
append
(
result
,
each
)
}
if
err
=
rows
.
Err
();
err
!=
nil
{
fmt
.
Println
(
err
.
Error
())
return
}
for
_
,
each
:=
range
result
{
fmt
.
Println
(
each
.
ProductName
)
}
}
func
main
()
{
//ini route yang di panggil di postman
http
.
HandleFunc
(
"/users"
,
users
)
http
.
HandleFunc
(
"/user"
,
user
)
http
.
HandleFunc
(
"/product"
,
products
)
http
.
HandleFunc
(
"/category"
,
categoryfunc
)
http
.
HandleFunc
(
"/insertproduct"
,
insertProduct
)
http
.
HandleFunc
(
"/updateproduct"
,
updateProduct
)
sqlQuery
()
//initial url yang di panggil di postman
fmt
.
Println
(
"starting web server at http://localhost:8080/"
)
http
.
ListenAndServe
(
":8080"
,
nil
)
...
...
model.go
View file @
7bd57fb0
package
main
type
Products
struct
{
Id
int64
`form:"id" json:"ProductId"`
ProductName
string
`form:"firstname" json:"Productname"`
Stock
int
`form:"lastname" json:"Stock"`
//initial model yang di panggil di main api
type
student
struct
{
ID
string
Name
string
Grade
int
}
type
product
struct
{
ProductID
uint64
`json:"ProductID"`
ProductName
string
Stock
int
}
type
Response
struct
{
Status
int
`json:"status"`
Message
string
`json:"message"`
Data
[]
Products
Data
[]
product
}
type
ResponseCRUD
struct
{
Status
int
`json:"status"`
Message
string
`json:"message"`
DataProduct
string
}
type
Category
struct
{
ProductID
string
`json:"ProductID"`
ProductName
string
`json:"ProductName"`
Stock
int
`json:"Stock"`
}
type
CategoryArr
struct
{
CategoryName
string
DataProduct
[]
product
}
type
ResponseCategory
struct
{
Status
string
Message
string
data
CategoryArr
}
var
data
=
[]
student
{
student
{
"E001"
,
"ethan"
,
21
},
student
{
"W001"
,
"wick"
,
22
},
student
{
"B001"
,
"bourne"
,
23
},
student
{
"B002"
,
"bond"
,
23
},
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment