-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathcityCRUD.go
47 lines (40 loc) · 919 Bytes
/
cityCRUD.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
package main
type zipCode struct {
Id int `json: "id"`
Code string
}
type city struct {
Id int `json: "id"`
Country country
ZipCode zipCode
Name string `json:"name"`
}
func (c *city) create() error {
_, err := db.Exec("INSERT INTO cities (country_id, name) VALUES ($1, $2)", c.Country.Id, c.Name)
return err
}
func (c *city) read() error {
return db.QueryRow(`
SELECT c.name
, co.id
, co.name
, z.id
, z.code
FROM cities c
LEFT
JOIN countries co
ON co.id = c.country_id
LEFT
JOIN zip_codes z
ON z.city_id = c.id
WHERE c.id = $1
`, &c.Id).Scan(&c.Name, &c.Country.Id, &c.Country.Name, &c.ZipCode.Id, &c.ZipCode.Code)
}
func (c *city) update() error {
_, err := db.Exec("UPDATE cities SET name = $2 WHERE id = $1", c.Id, c.Name)
return err
}
func (c *city) delete() error {
_, err := db.Exec("DELETE FROM cities WHERE id = $1", c.Id)
return err
}