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 }