Skip to content

Instantly share code, notes, and snippets.

@TarikTz
Created October 21, 2018 09:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save TarikTz/b1ca9906d2931f660ad4ec64adccc27f to your computer and use it in GitHub Desktop.
Save TarikTz/b1ca9906d2931f660ad4ec64adccc27f to your computer and use it in GitHub Desktop.
// model.go
package main
import (
"database/sql"
"fmt"
)
type user struct {
ID int `json:"id"`
UserName string `json:"username"`
Email string `json:"email"`
Password string `json:"password"`
Points string `json:"points"`
}
func (u *user) getUser(db *sql.DB) error {
statement := fmt.Sprintf("SELECT username, email, points FROM users WHERE id=%d", u.ID)
return db.QueryRow(statement).Scan(&u.UserName, &u.Email, &u.Points)
}
func (u *user) updateUser(db *sql.DB) error {
statement := fmt.Sprintf("UPDATE users SET username='%s', email='%s', password='%s', points='%s'WHERE id=%d", u.UserName, u.Email, u.Password, u.Points, u.ID)
_, err := db.Exec(statement)
return err
}
func (u *user) deleteUser(db *sql.DB) error {
statement := fmt.Sprintf("DELETE FROM users WHERE id=%d", u.ID)
_, err := db.Exec(statement)
return err
}
func (u *user) checkEmail(db *sql.DB) error {
statement := fmt.Sprintf("SELECT id FROM users WHERE email='%s'", u.Email)
return db.QueryRow(statement).Scan(&u.ID)
}
func (u *user) createUser(db *sql.DB) error {
statement := fmt.Sprintf("INSERT INTO users(username, email, password, points) VALUES('%s', '%s', '%s', '%s')", u.UserName, u.Email, u.Password, u.Points)
_, err := db.Exec(statement)
if err != nil {
return err
}
err = db.QueryRow("SELECT LAST_INSERT_ID()").Scan(&u.ID)
if err != nil {
return err
}
return nil
}
func getUsers(db *sql.DB, start, count int) ([]user, error) {
statement := fmt.Sprintf("SELECT id, username, email, points FROM users LIMIT %d OFFSET %d", count, start)
rows, err := db.Query(statement)
if err != nil {
return nil, err
}
defer rows.Close()
users := []user{}
for rows.Next() {
var u user
if err := rows.Scan(&u.ID, &u.UserName, &u.Email, &u.Points); err != nil {
return nil, err
}
users = append(users, u)
}
return users, nil
}
// user auth
func (u *user) authUser(db *sql.DB) error {
statement := fmt.Sprintf("SELECT id, username, email FROM users WHERE email='%s' AND password='%s'", u.Email, u.Password)
return db.QueryRow(statement).Scan(&u.ID, &u.UserName, &u.Email)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment