55 lines
1.2 KiB
Go
55 lines
1.2 KiB
Go
package app
|
|
|
|
import (
|
|
"github.com/vinovest/sqlx"
|
|
)
|
|
|
|
type User struct {
|
|
ID int `json:"id"`
|
|
Username string `json:"username"`
|
|
Password string `json:"password"`
|
|
}
|
|
type UserUsage struct {
|
|
UserID int `json:"user_id" db:"user_id"`
|
|
Recv int64 `json:"recv" db:"recv"`
|
|
Sent int64 `json:"sent" db:"sent"`
|
|
}
|
|
|
|
type UserRepository struct {
|
|
db *sqlx.DB
|
|
}
|
|
|
|
func NewUserRepository(db *sqlx.DB) *UserRepository {
|
|
return &UserRepository{db}
|
|
}
|
|
|
|
func (rep UserRepository) AddUser(username, password string) (User, error) {
|
|
sql := "INSERT INTO users (username, password) VALUES (?, ?) RETURNING *;"
|
|
sql = rep.db.Rebind(sql)
|
|
var user User
|
|
err := db.Get(&user, sql, username, password)
|
|
return user, err
|
|
}
|
|
|
|
func (rep UserRepository) GetById(id int) (User, error) {
|
|
var user User
|
|
sql := "SELECT * FROM users WHERE id=?;"
|
|
sql = rep.db.Rebind(sql)
|
|
err := rep.db.Get(&user, sql, id)
|
|
return user, err
|
|
}
|
|
func (rep UserRepository) GetUsers() ([]User, error) {
|
|
users := make([]User, 0)
|
|
sql := "SELECT * FROM users;"
|
|
sql = rep.db.Rebind(sql)
|
|
err := rep.db.Select(&users, sql)
|
|
return users, err
|
|
}
|
|
|
|
func (rep UserRepository) DeleteUser(id int) error {
|
|
sql := "DELETE FROM users WHERE id=?;"
|
|
sql = rep.db.Rebind(sql)
|
|
_, err := rep.db.Exec(sql, id)
|
|
return err
|
|
}
|