/
model-mysql-repo.go
71 lines (58 loc) · 1.2 KB
/
model-mysql-repo.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
package main
import (
"fmt"
"github.com/kisielk/sqlstruct"
"log"
)
// ModelMysqlRepo mysql repository
// Implements IModelRepository interface
type ModelMysqlRepo struct {
*MysqlDb
}
func (r ModelMysqlRepo) Get(id int, joins []string) (model Model, err error) {
query := fmt.Sprintf("select * from model where id=%d", id)
rows, err := r.Db.Query(query)
if err != nil {
return
}
if !rows.Next() {
err = ErrNoResults
return
}
sqlstruct.Scan(&model, rows)
err = rows.Err()
rows.Close()
return
}
func (r ModelMysqlRepo) GetAll(limit int, joins []string) (result []Model, err error) {
if limit == 0 {
limit = MAX_MYSQL_RESULTS
}
query := fmt.Sprintf("select * from model limit %d", limit)
rows, err := r.Db.Query(query)
if err != nil {
log.Println(err)
return
}
model := Model{}
for rows.Next() {
err = sqlstruct.Scan(&model, rows)
result = append(result, model)
}
rows.Close()
return
}
func (r ModelMysqlRepo) Query(query string) (models []Model, err error) {
rows, err := r.Db.Query(query)
if err != nil {
log.Println(err)
return
}
model := Model{}
for rows.Next() {
err = sqlstruct.Scan(&model, rows)
models = append(models, model)
}
rows.Close()
return
}