diff --git a/migrations/0_29092022_setup_tables.sql b/migrations/0_29092022_setup_tables.sql index d25de65..c853295 100644 --- a/migrations/0_29092022_setup_tables.sql +++ b/migrations/0_29092022_setup_tables.sql @@ -13,6 +13,7 @@ CREATE TABLE address ( CREATE TABLE branch ( id INT AUTO_INCREMENT, + name VARCHAR(40) NOT NULL, type ENUM('NMLS', 'FSRA') NOT NULL, letterhead BLOB(102400) NOT NULL DEFAULT 0, num VARCHAR(40) NOT NULL, diff --git a/skouter.go b/skouter.go index 3bcc780..b85a7a8 100644 --- a/skouter.go +++ b/skouter.go @@ -40,6 +40,16 @@ type Address struct { Zip string `json:"zip"` } +type Branch struct { + Id int `json:"id"` + Name string `json:"name"` + Type string `json:"type"` + Letterhead []byte `json:"letterhead"` + Num string `json:"num"` + Phone string `json:"phone"` + Address Address `json:"address"` +} + type User struct { Id int `json:"id"` @@ -587,7 +597,6 @@ func getBorrower(db *sql.DB, id int) (Borrower, error) { // Query Lender APIs and parse responses into MI structs func fetchMi(db *sql.DB, estimate *Estimate, pos int) []MI { - var err error var loan Loan = estimate.Loans[pos] var ltv = func(l float32) string { @@ -648,11 +657,32 @@ func fetchMi(db *sql.DB, estimate *Estimate, pos int) []MI { "armType": "", "userId": 44504, }) - + /* if err != nil { log.Printf("Could not marshal NationalMI body: \n%v\n%v\n", bytes.NewBuffer(body), err) + func queryAddress(db *sql.DB, id int) ( Address, error ) { + var address Address = Address{Id: id} + var err error + + row := db.QueryRow( + `SELECT id, full_address, street, city, region, country, zip + FROM address WHERE id = ?`, id) + + err = row.Scan( + &address.Id, + &address.Full, + &address.Street, + &address.City, + &address.Region, + &address.Country, + &address.Zip, + ) + + return address, err + } } + */ req, err := http.NewRequest("POST", "https://rate-gps.nationalmi.com/rates/productRateQuote", @@ -675,6 +705,8 @@ func fetchMi(db *sql.DB, estimate *Estimate, pos int) []MI { // estimate.Loans[pos].Mi = res // Parse res into result here } + + log.Println(err) return result } @@ -792,7 +824,7 @@ func insertAddress(db *sql.DB, address Address) (int, error){ query = `INSERT INTO address ( - full, + full_address, street, city, region, @@ -817,6 +849,40 @@ func insertAddress(db *sql.DB, address Address) (int, error){ return id, err } +// Inserts an address and returns it's ID along with any errors. +func insertBranch(db *sql.DB, branch Branch) (int, error){ + var query string + var row *sql.Row + var err error + var id int // Inserted user's id + + query = `INSERT INTO branch + ( + name, + type, + letterhead, + num, + phone, + address + ) + VALUES (?, ?, ?, ?, ?, ?) + RETURNING id + ` + + row = db.QueryRow(query, + branch.Name, + branch.Type, + branch.Letterhead, + branch.Num, + branch.Phone, + branch.Address.Id, + ) + + err = row.Scan(&id) + + return id, err +} + func queryAddress(db *sql.DB, id int) ( Address, error ) { var address Address = Address{Id: id} var err error @@ -838,6 +904,27 @@ func queryAddress(db *sql.DB, id int) ( Address, error ) { return address, err } +func queryBranch(db *sql.DB, id int) ( Branch, error ) { + var branch Branch = Branch{Id: id} + var err error + + row := db.QueryRow( + `SELECT id, name, type, letterhead, num, phone, address + FROM branch WHERE id = ?`, id) + + err = row.Scan( + &branch.Id, + &branch.Name, + &branch.Type, + &branch.Letterhead, + &branch.Num, + &branch.Phone, + &branch.Address.Id, + ) + + return branch, err +} + func queryUsers(db *sql.DB, id int) ( []User, error ) { var users []User var query string @@ -2145,13 +2232,39 @@ func dbSeed() { panic(err) // maybe os.Exit(1) instead } + + addresses := make([]Address, 10) + for i, a := range addresses { + a.Street = gofakeit.Street() + a.City = gofakeit.City() + a.Region = gofakeit.State() + a.Country = "Canada" + a.Full = fmt.Sprintf("%s, %s %s", a.Street, a.City, a.Region) + id, err := insertAddress(db, a) + if err != nil {log.Println(err); break} + addresses[i].Id = id + } + + branches := make([]Branch, 3) + for i := range branches { + branches[i].Name = gofakeit.Street() + branches[i].Type = "NMLS" + branches[i].Letterhead = gofakeit.ImagePng(400, 200) + branches[i].Num = gofakeit.HexUint8() + branches[i].Phone = gofakeit.Phone() + branches[i].Address.Id = gofakeit.Number(1, 5) + id, err := insertBranch(db, branches[i]) + if err != nil {log.Println(err); break} + branches[i].Address.Id = id + } } func dev(args []string) { + os.Setenv("DBName", "skouter_dev") + os.Setenv("DBUser", "tester") + os.Setenv("DBPass", "test123") + if len(args) == 0 { - os.Setenv("DBName", "skouter_dev") - os.Setenv("DBUser", "tester") - os.Setenv("DBPass", "test123") serve() return }