-
Notifications
You must be signed in to change notification settings - Fork 0
/
test.go
156 lines (102 loc) · 2.86 KB
/
test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
package main
import (
_"github.com/go-sql-driver/mysql"
"github.com/jmoiron/sqlx"
"github.com/gin-gonic/gin"
"net/http"
"fmt"
_"database/sql"
"encoding/json"
)
var (
//DB *sqlx.DB
//Err error
)
const (
db_driver = "mysql"
db_source = "pasar:pasar@tcp(192.168.0.104:3306)/pasar?charset=utf8&timeout=3s"
)
func CheckErr(Err error) {
if Err != nil {
panic(Err)
}
}
func AddDB(db *sqlx.DB) gin.HandlerFunc {
return func(c *gin.Context) {
c.Set("database", db)
c.Next()
}
}
type device struct {
Id int
Device_name string
Host string
Port int
Token string
Description string
}
func NewDevice(db *sqlx.DB, name string, host string, port string, token string, description string){
tx := db.MustBegin()
tx.MustExec("INSERT INTO device_list (device_name, host, port, token, description) VALUES (?, ?, ?, ?, ?)", name, host, port, token, description)
tx.Commit()
}
func regisDevice(c *gin.Context){
db := c.MustGet("database").(*sqlx.DB)
name := c.PostForm("name")
host := c.PostForm("host")
port := c.PostForm("port")
token := c.PostForm("token")
description := c.PostForm("description")
fmt.Println("DB: ", db.Ping())
fmt.Println("Name: ", name)
fmt.Println("Host: ", host)
fmt.Println("Port: ", port)
fmt.Println("Token: ", token)
fmt.Println("Description: ", description)
//fmt.Print(name, host, port, token, description)
//NewDevice(db, name, host, port, token, description)
c.String(http.StatusOK, "Berhasil gan %s %s %s %s %s ", name, host, port, token, description)
NewDevice(db, name, host, port, token, description)
//c.JSON(http.StatusOK, NewDevice)
}
func outDevice(c *gin.Context) {
fmt.Println("Try to print available device")
ab := c.MustGet("database").(*sqlx.DB)
dev := []device{}
err := ab.Select(&dev, "SELECT id, device_name, host, port, token, description FROM device_list")
if err != nil {
fmt.Println("error: ", err)
}
//encode json
jsn, err := json.Marshal(dev)
fmt.Println("get data device: ", dev)
fmt.Println("data to json :", string(jsn))
//json to ajax
c.JSON(http.StatusOK, dev)
/*
for i := range dev {
fmt.Println("Device Name: ", dev[i].port)
}*/
}
func main() {
DB, Err := sqlx.Open(db_driver, db_source)
CheckErr(Err)
if DB.Ping() != nil {
fmt.Println("Cannot connect to Database")
} else {
fmt.Println("Connected to database")
}
//menyalakan web server
r := gin.Default()
r.Use(AddDB(DB))
//load template
r.LoadHTMLGlob("./template/*")
r.GET("/testinput", func(c *gin.Context) {
c.HTML(http.StatusOK, "testinput.tmpl", gin.H{
})
})
r.POST("/coba", regisDevice)
r.GET("/out", outDevice)
//tx.MustExec("INSERT INTO device_list (device_name, host, port, token, description) VALUES ($1, $2, $3, $4, $5)", "arduino", "29", "33", "3", "tes masuk")
r.Run(":8080") // listen and serve on 0.0.0.0:8080
}