Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package libbank
- import (
- "database/sql"
- "fmt"
- _ "github.com/lib/pq"
- "golang.org/x/crypto/ssh/terminal"
- "strings"
- "syscall"
- )
- const (
- host = "localhost"
- port = 5432
- user = "bankmngr"
- dbname = "bankmngr"
- )
- type Name struct {
- Firstname string
- Lastname string
- }
- /*Plan:
- We need a few functions:
- one:
- CreateUser(emailaddress, firstname, lastname, dob, hash(password))
- insert into useraccounts values ('bigdaddytony@hotmail.com', 'Tony', 'FrostedFlakes(tm)', '2001-09-28', 'iambetter');
- two:
- CreateBin(userid, Comment, balance) binid ommitted
- three:
- AddSecurityQuestionToUser(userid, questionid, answer)
- */
- func Connect() *sql.DB {
- fmt.Print("Enter Password: ")
- bytePassword, err := terminal.ReadPassword(int(syscall.Stdin))
- password := string(bytePassword)
- password = strings.TrimSpace(password)
- psqlInfo := fmt.Sprintf("host=%s port=%d user=%s password='%s' dbname=%s sslmode=disable", host, port, user, password, dbname)
- db, err := sql.Open("postgres", psqlInfo)
- if err != nil {
- panic(err)
- }
- err = db.Ping()
- fmt.Println("\nSuccessfully connected!")
- return db
- }
- func GetGenericColumn(db *sql.DB, columnName string, tableName string) ([]string, error) {
- rows, err := db.Query("select " + columnName + " from " + tableName)
- if err != nil {
- return nil, err
- }
- var final []string
- var temp string
- for rows.Next() {
- err = rows.Scan(&temp)
- final = append(final, temp)
- }
- return final, nil
- }
- func AddSecurityQuestionToUser(db *sql.DB, userid int, questionid int, answer int) error {
- stmt, err := db.Prepare("insert into securityquestionstousers(questionid, answer, userid) values($1,$2,$3)")
- if err != nil {
- return err
- }
- res, err := stmt.Exec(questionid, answer, userid)
- if err != nil {
- return err
- }
- affect, err := res.RowsAffected()
- if err != nil {
- return err
- }
- fmt.Printf("Rows changed \n%d\n", affect)
- return nil
- }
- func CreateBin(db *sql.DB, userid int, comment string, balance int) error {
- stmt, err := db.Prepare("insert into bins(userid,balance,comment) values($1,$2,$3)")
- if err != nil {
- return err
- }
- defer stmt.Close()
- res, err := stmt.Exec(userid, balance, comment)
- if err != nil {
- return err
- }
- affect, err := res.RowsAffected()
- if err != nil {
- return err
- }
- fmt.Printf("Rows changed \n%d\n", affect)
- return nil
- }
- func CreateUser(db *sql.DB, emailaddress string, firstname string, lastname string, dob string, password string) error {
- stmt, err := db.Prepare("insert into useraccounts(emailaddress,firstname,lastname,dob,password) values($1,$2,$3,$4,$5)")
- if err != nil {
- return err
- }
- defer stmt.Close()
- res, err := stmt.Exec(emailaddress, firstname, lastname, dob, password)
- if err != nil {
- return err
- }
- affect, err := res.RowsAffected()
- if err != nil {
- return err
- }
- fmt.Printf("Rows changed \n%d\n", affect)
- return nil
- }
- func checkerr(err error) {
- if err != nil {
- panic(err)
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement