github.com/giovannyortegon/go@v0.0.0-20220115155912-8890063f5bdd/src/APIRest/models/users.go (about)

     1  package models
     2  
     3  import (
     4  	"apirest/db"
     5  )
     6  
     7  type User struct {
     8  	Id       int64  `json:"id"`       //`yaml:"id`        //`xml:"id"`
     9  	UserName string `json:"username"` //`yaml:"username"` //`xml:"username"`
    10  	Password string `json:"password"` //`yaml:"password"` //`xml:"password"`
    11  	Email    string `json:"email"`    //`yaml:"email"`    //`xml:"email"`
    12  }
    13  
    14  type Users []User
    15  
    16  const UserSchema string = `CREATE TABLE users (
    17  	id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    18  	username VARCHAR(30) NOT NULL,
    19  	password VARCHAR(100) NOT NULL,
    20  	email VARCHAR(50),
    21  	create_data TIMESTAMP DEFAULT CURRENT_TIMESTAMP)`
    22  
    23  //constructor usuario
    24  func NewUser(username string, password string, email string) *User {
    25  	user := &User{UserName: username, Password: password, Email: email}
    26  
    27  	return user
    28  }
    29  
    30  // crear usuario e insertar a db
    31  func CreateUser(username string, password string, email string) *User {
    32  	user := NewUser(username, password, email)
    33  	user.Save()
    34  
    35  	return user
    36  }
    37  
    38  // Crear usuario e insert
    39  func (user *User) insert() {
    40  	sql := "INSERT users SET username=?, password=?, email=?"
    41  	result, _ := db.Exec(sql, user.UserName, user.Password, user.Email)
    42  	user.Id, _ = result.LastInsertId()
    43  }
    44  
    45  func ListUsers() (Users, error) {
    46  	sql := "SELECT id, username, password, email FROM users"
    47  	users := Users{}
    48  	rows, err := db.Query(sql)
    49  
    50  	for rows.Next() {
    51  		user := User{}
    52  		rows.Scan(&user.Id, &user.UserName, &user.Password, &user.Email)
    53  		users = append(users, user)
    54  	}
    55  
    56  	return users, err
    57  }
    58  
    59  // Obtener un registro
    60  func GetUser(id int) (*User, error) {
    61  	user := NewUser("", "", "")
    62  	sql := "SELECT id, username, password, email FROM users WHERE id=?"
    63  	if rows, err := db.Query(sql, id); err != nil {
    64  		return nil, err
    65  	} else {
    66  		for rows.Next() {
    67  			rows.Scan(&user.Id, &user.UserName, &user.Password, &user.Email)
    68  		}
    69  		return user, nil
    70  	}
    71  }
    72  
    73  func (user *User) update() {
    74  	sql := "UPDATE users SET username=?, password=?, email=? WHERE id=?"
    75  	db.Exec(sql, user.UserName, user.Password, user.Email, user.Id)
    76  }
    77  
    78  func (user *User) Save() {
    79  	if user.Id == 0 {
    80  		user.insert()
    81  	} else {
    82  		user.update()
    83  	}
    84  }
    85  
    86  // Eliminar un registro
    87  func (user *User) Delete() {
    88  	sql := "DELETE FROM users WHERE id=?"
    89  	db.Exec(sql, user.Id)
    90  }