package database import ( "database/sql" ) type User struct { Uid int Email string Username *string Password_hash string Password_salt string } // Gets a user struct from an email, returns nil-nil if the user did not exist. func MaybeGetUser(email string) (*User, error) { var db = GetDb() row := db.QueryRow( "SELECT Users.uid, Users.email, Users.username, Users.password_hash, Users.password_salt "+ "FROM Users "+ "WHERE Users.email = ?;", email) var user User if err := row.Scan( &user.Uid, &user.Email, &user.Username, &user.Password_hash, &user.Password_salt); err != nil { if err != sql.ErrNoRows { return nil, err } return nil, nil } return &user, nil } // Writes a new user into the database, returns the user's new uid if no error occurred. func WriteNewUser(email string, password_hash string, password_salt string) (int, error) { var db = GetDb() var uid int row := db.QueryRow("INSERT INTO Users "+ "(email, password_hash, password_salt) "+ "VALUES(?, ?, ?) RETURNING Users.uid;", email, password_hash, password_salt) if err := row.Scan(&uid); err != nil { return 0, err } return uid, nil }