Files
H2Node/app/provider.go
2026-03-04 18:23:00 +03:00

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
}