33 lines
768 B
Go
33 lines
768 B
Go
package app
|
|
|
|
import (
|
|
"github.com/vinovest/sqlx"
|
|
)
|
|
|
|
type NodeRepository struct {
|
|
db *sqlx.DB
|
|
}
|
|
|
|
func NewNodeRepository(db *sqlx.DB) *NodeRepository { return &NodeRepository{db} }
|
|
|
|
func (r *NodeRepository) All() ([]Node, error) {
|
|
nodes := make([]Node, 0)
|
|
sql := "SELECT * FROM nodes;"
|
|
err := r.db.Select(&nodes, sql)
|
|
return nodes, err
|
|
}
|
|
func (r *NodeRepository) Find(id int) (Node, error) {
|
|
var node Node
|
|
sql := "SELECT * FROM nodes WHERE id=?;"
|
|
sql = r.db.Rebind(sql)
|
|
err := r.db.Select(&node, sql, id)
|
|
return node, err
|
|
}
|
|
func (r *NodeRepository) Create(token, url string) (Node, error) {
|
|
sql := "INSERT INTO nodes (token, url) VALUES (?, ?) RETURNING *;"
|
|
sql = r.db.Rebind(sql)
|
|
var node Node
|
|
err := r.db.Get(&node, sql, token, url)
|
|
return node, err
|
|
}
|