-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtemperatureSQL.go
More file actions
110 lines (95 loc) · 2.55 KB
/
temperatureSQL.go
File metadata and controls
110 lines (95 loc) · 2.55 KB
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
package main
import (
"database/sql"
"fmt"
"strings"
_ "github.com/lib/pq"
)
func checkTemp(temp int) error {
if temp < -273 || temp > 100 {
return fmt.Errorf("Temperature %d is out of range.", temp)
}
return nil
}
func printAll(db *sql.DB) ([]Temp, error) {
var data []Temp
rows, err := db.Query("SELECT * FROM temperatures")
if err != nil {
return data, err
}
defer rows.Close()
for rows.Next() {
var temp Temp
err = rows.Scan(&temp.ID, &temp.Temperature, &temp.Location)
if err != nil {
return data, err
}
data = append(data, temp)
fmt.Println(temp)
}
// get any error encountered during iteration
err = rows.Err()
if err != nil {
return data, err
}
return data, nil
}
func insertTemp(newTemp int, newLoc string, db *sql.DB) error {
err := checkTemp(newTemp)
if err != nil {
return err
}
sqlStatement := "INSERT INTO temperatures (temperature, location) VALUES (" + fmt.Sprintf("%v", newTemp) + ", '"+ escapeInject(newLoc) + "');"
fmt.Println(sqlStatement)
_, err = db.Exec(sqlStatement)
if err != nil {
fmt.Println(err.Error())
return err
}
fmt.Println("Insertion was successful!")
return nil
}
func updateTemp(ID int, newTemp int, db *sql.DB) error {
err := checkTemp(newTemp)
if err != nil {
return err
}
sqlStatement := `UPDATE temperatures SET temperature = $2 WHERE id = $1 RETURNING id, temperature`
_, err = db.Exec(sqlStatement, ID, newTemp)
if err != nil {
return err
}
fmt.Println(fmt.Sprintf("Id %d was successfully updated to %d", ID, newTemp) )
return nil
}
func deleteID(ID int, db *sql.DB) error {
sqlStatement := "DELETE FROM temperatures WHERE id = $1;"
_, err := db.Exec(sqlStatement, ID)
if err != nil {
return err
}
fmt.Println(fmt.Sprintf("Id %d was deleted", ID))
return nil
}
func deleteTemp(temp int, db *sql.DB) error {
sqlStatement := `DELETE FROM temperatures WHERE temperature = $1;`
_, err := db.Exec(sqlStatement, temp)
if err != nil {
return err
}
fmt.Println(fmt.Sprintf("Id's with temperature %d were deleted", temp))
return nil
}
func deleteLoc(loc string, db *sql.DB) error {
sqlStatement := `DELETE FROM temperatures WHERE location = $1;`
_, err := db.Exec(sqlStatement, loc)
if err != nil {
return err
}
fmt.Println(fmt.Sprintf("Id's with location %d were deleted", loc))
return nil
}
func escapeInject(unsafe string) string {
halfSafe := strings.Replace(unsafe, "'", "''", -1)
return strings.Replace(halfSafe, "\"", "\"\"", -1)
}