Переглянути джерело

Fix row decleration bug

master
Immanuel Onyeka 1 рік тому
джерело
коміт
6dad31be22
3 змінених файлів з 60 додано та 44 видалено
  1. +2
    -3
      components/app.vue
  2. +1
    -1
      migrations/0_29092022_setup_tables.sql
  3. +57
    -40
      skouter.go

+ 2
- 3
components/app.vue Переглянути файл

@@ -104,8 +104,8 @@ function getUser() {
window.location.hash = '#login' window.location.hash = '#login'
} }
}).then (result => { }).then (result => {
if (!result || !result.length) return // Exit if token is invalid
this.user = result[0]
if (!result) return // Exit if token is invalid
this.user = result
if (this.user.avatar) return if (this.user.avatar) return
return getAvatar(token) return getAvatar(token)
@@ -235,7 +235,6 @@ export default {
Spinner, Spinner,
Home, Home,
NewEstimate, NewEstimate,
EstimateTest,
Estimates, Estimates,
Settings, Settings,
SignOut, SignOut,


+ 1
- 1
migrations/0_29092022_setup_tables.sql Переглянути файл

@@ -178,7 +178,7 @@ CREATE TABLE fee_template (


CREATE TABLE estimate_result ( CREATE TABLE estimate_result (
id INT AUTO_INCREMENT, id INT AUTO_INCREMENT,
loan_id INT UNIQUE NOT NULL,
loan_id INT NOT NULL,
loan_payment INT NOT NULL, loan_payment INT NOT NULL,
total_monthly INT NOT NULL, total_monthly INT NOT NULL,
total_fees INT NOT NULL, total_fees INT NOT NULL,


+ 57
- 40
skouter.go Переглянути файл

@@ -321,14 +321,15 @@ func match(path, pattern string, args *[]string) bool {
return true return true
} }


func makeResults(estimate Estimate) ([]Result) {
func (estimate *Estimate) makeResults() []Result {
var results []Result var results []Result
amortize := func(principle float64, rate float64, periods float64) int { amortize := func(principle float64, rate float64, periods float64) int {
exp := math.Pow(1+rate, periods) exp := math.Pow(1+rate, periods)
return int(principle * rate * exp / (exp - 1)) return int(principle * rate * exp / (exp - 1))
} }
for _, loan := range estimate.Loans {
for i := range estimate.Loans {
var loan = &estimate.Loans[i]
var result Result var result Result
// Monthly payments use amortized loan payment formula plus monthly MI, // Monthly payments use amortized loan payment formula plus monthly MI,
// plus all other recurring fees // plus all other recurring fees
@@ -353,6 +354,7 @@ func makeResults(estimate Estimate) ([]Result) {
result.TotalFees + result.TotalCredits + (estimate.Price - loan.Amount) result.TotalFees + result.TotalCredits + (estimate.Price - loan.Amount)
result.LoanId = loan.Id result.LoanId = loan.Id
loan.Result = result
results = append(results, result) results = append(results, result)
} }
@@ -363,7 +365,7 @@ func summarize(w http.ResponseWriter, db *sql.DB, r *http.Request) {
var estimate Estimate var estimate Estimate
err := json.NewDecoder(r.Body).Decode(&estimate) err := json.NewDecoder(r.Body).Decode(&estimate)
if err != nil { http.Error(w, "Invalid estimate.", 422); return } if err != nil { http.Error(w, "Invalid estimate.", 422); return }
results := makeResults(estimate)
results := estimate.makeResults()
json.NewEncoder(w).Encode(results) json.NewEncoder(w).Encode(results)
} }
@@ -1129,15 +1131,11 @@ func queryUsers(db *sql.DB, id int) ( []User, error ) {
return users, nil return users, nil
} }


func insertResults(db *sql.DB, estimate Estimate) (error){
func (estimate *Estimate) insertResults(db *sql.DB) (error){
var query string var query string
var row *sql.Row var row *sql.Row
var err error var err error
var results []Result
for i := range estimate.Loans {
results = append(results, estimate.Loans[i].Result)
}
var id int


query = `INSERT INTO estimate_result query = `INSERT INTO estimate_result
( (
@@ -1148,20 +1146,24 @@ func insertResults(db *sql.DB, estimate Estimate) (error){
total_credits, total_credits,
cash_to_close cash_to_close
) )
VALUES (?, ?, ?, ?, ?, ?, ?)
VALUES (?, ?, ?, ?, ?, ?)
RETURNING id RETURNING id
` `
for i := range results {
db.QueryRow(query,
results[i].LoanId,
results[i].LoanPayment,
results[i].TotalMonthly,
results[i].TotalFees,
results[i].TotalCredits,
results[i].CashToClose,
for i := range estimate.Loans {
r := estimate.Loans[i].Result
r.LoanId = estimate.Loans[i].Id

row = db.QueryRow(query,
r.LoanId,
r.LoanPayment,
r.TotalMonthly,
r.TotalFees,
r.TotalCredits,
r.CashToClose,
) )
err = row.Scan(&results[i].Id)
err = row.Scan(&id)
if err != nil { return err } if err != nil { return err }
r.Id = id
} }
return nil return nil
@@ -1866,7 +1868,7 @@ func insertLoanType(db *sql.DB, lt LoanType) (int, error) {
return id, nil return id, nil
} }


func insertLoan(db *sql.DB, loan Loan) (Loan, error){
func (loan *Loan) insertLoan(db *sql.DB) error {
var query string var query string
var row *sql.Row var row *sql.Row
var err error var err error
@@ -1901,27 +1903,27 @@ func insertLoan(db *sql.DB, loan Loan) (Loan, error){
) )


err = row.Scan(&loan.Id) err = row.Scan(&loan.Id)
if err != nil { return loan, err }
if err != nil { return err }
_, err = insertMi(db, loan.Mi) _, err = insertMi(db, loan.Mi)
if err != nil { return loan, err }
if err != nil { return err }
for i := range loan.Fees { for i := range loan.Fees {
loan.Fees[i].LoanId = loan.Id loan.Fees[i].LoanId = loan.Id
_, err := insertFee(db, loan.Fees[i]) _, err := insertFee(db, loan.Fees[i])
if err != nil { return loan, err }
if err != nil { return err }
} }


return loan, nil
return nil
} }




func insertEstimate(db *sql.DB, estimate Estimate) (Estimate, error){
func (estimate *Estimate) insertEstimate(db *sql.DB) (error){
var query string var query string
var row *sql.Row var row *sql.Row
var err error var err error
// var id int // Inserted estimate's id // var id int // Inserted estimate's id
estimate.Borrower.Id, err = insertBorrower(db, estimate.Borrower) estimate.Borrower.Id, err = insertBorrower(db, estimate.Borrower)
if err != nil { return Estimate{}, err }
if err != nil { return err }


query = `INSERT INTO estimate query = `INSERT INTO estimate
( (
@@ -1949,15 +1951,15 @@ func insertEstimate(db *sql.DB, estimate Estimate) (Estimate, error){
) )


err = row.Scan(&estimate.Id) err = row.Scan(&estimate.Id)
if err != nil { return Estimate{}, err }
if err != nil { return err }


for _, l := range estimate.Loans {
l.EstimateId = estimate.Id
_, err = insertLoan(db, l)
if err != nil { return estimate, err }
for i := range estimate.Loans {
estimate.Loans[i].EstimateId = estimate.Id
err = estimate.Loans[i].insertLoan(db)
if err != nil { return err }
} }


return estimate, nil
return nil
} }


func createEstimate(w http.ResponseWriter, db *sql.DB, r *http.Request) { func createEstimate(w http.ResponseWriter, db *sql.DB, r *http.Request) {
@@ -1967,10 +1969,10 @@ func createEstimate(w http.ResponseWriter, db *sql.DB, r *http.Request) {
claims, err := getClaims(r) claims, err := getClaims(r)
estimate.User = claims.Id estimate.User = claims.Id


estimate, err = insertEstimate(db, estimate)
err = estimate.insertEstimate(db)
if err != nil { http.Error(w, err.Error(), 422); return } if err != nil { http.Error(w, err.Error(), 422); return }
makeResults(estimate)
err = insertResults(db, estimate)
estimate.makeResults()
err = estimate.insertResults(db)
if err != nil { http.Error(w, err.Error(), 500); return } if err != nil { http.Error(w, err.Error(), 500); return }
e, err := getEstimates(db, estimate.Id, 0) e, err := getEstimates(db, estimate.Id, 0)
if err != nil { http.Error(w, err.Error(), 500); return } if err != nil { http.Error(w, err.Error(), 500); return }
@@ -2568,7 +2570,7 @@ func seedEstimates(db *sql.DB, users []User, ltypes []LoanType) []Estimate {
var l Loan var l Loan
var err error var err error


for i := 0; i < 20; i++ {
for i := 0; i < 15; i++ {
estimate.User = users[gofakeit.Number(0, len(users) - 1)].Id estimate.User = users[gofakeit.Number(0, len(users) - 1)].Id
estimate.Borrower = Borrower{ estimate.Borrower = Borrower{
Credit: gofakeit.Number(600, 800), Credit: gofakeit.Number(600, 800),
@@ -2599,23 +2601,36 @@ func seedEstimates(db *sql.DB, users []User, ltypes []LoanType) []Estimate {
l.Name = gofakeit.AdjectiveDescriptive() l.Name = gofakeit.AdjectiveDescriptive()
estimate.Loans = append(estimate.Loans, l) estimate.Loans = append(estimate.Loans, l)
} }
estimate, err = insertEstimate(db, estimate)

err = estimate.insertEstimate(db)
if err != nil {log.Println(err); return estimates} if err != nil {log.Println(err); return estimates}
estimates = append(estimates, estimate) estimates = append(estimates, estimate)
} }
return estimates return estimates
} }


func seedResults(db *sql.DB, estimates []Estimate) error {
var err error

for i := range estimates {
estimates[i].makeResults()
err = estimates[i].insertResults(db)
if err != nil {log.Println(err); return err}
}

return nil
}

func dbSeed(db *sql.DB) { func dbSeed(db *sql.DB) {
addresses := seedAddresses(db) addresses := seedAddresses(db)
branches := seedBranches(db, addresses) branches := seedBranches(db, addresses)
users := seedUsers(db, addresses, branches) users := seedUsers(db, addresses, branches)
_ = seedLicenses(db, users) _ = seedLicenses(db, users)
loantypes := seedLoanTypes(db) loantypes := seedLoanTypes(db)
log.Println(loantypes)
estimates := seedEstimates(db, users, loantypes) estimates := seedEstimates(db, users, loantypes)
log.Println(estimates)
_ = seedResults(db, estimates)
} }


func dev(args []string) { func dev(args []string) {
@@ -2650,6 +2665,8 @@ func dev(args []string) {
default: default:
return return
} }

db.Close()
} }


func check(args []string) { func check(args []string) {


Завантаження…
Відмінити
Зберегти