Browse Source

Fix duplicate loan_id error

At most one result should exist for each loan stored but not redeclaring
the 'estimate' variable within the seed loop caused the loan entries of
the first estimate to be copied onto the second, which caused an error
while seeding result entries.
master
Immanuel Onyeka 1 year ago
parent
commit
274ea0581d
3 changed files with 46 additions and 1 deletions
  1. +1
    -0
      components/estimates.vue
  2. +1
    -1
      migrations/0_29092022_setup_tables.sql
  3. +44
    -0
      skouter.go

+ 1
- 0
components/estimates.vue View File

@@ -149,6 +149,7 @@ function summarize() {
response.text().then(t => console.log(t)) response.text().then(t => console.log(t))
} }
}).then(result => { }).then(result => {
console.log(result)
if (!result || !result.length) return // Exit if token is invalid or no fees are saved if (!result || !result.length) return // Exit if token is invalid or no fees are saved
console.log('done', result) console.log('done', result)
}) })


+ 1
- 1
migrations/0_29092022_setup_tables.sql View File

@@ -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 NOT NULL,
loan_id INT UNIQUE 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,


+ 44
- 0
skouter.go View File

@@ -1619,6 +1619,44 @@ func getResults(db *sql.DB, e int, id int) ( []Result, error ) {
return results, nil return results, nil
} }


// Retrieve an estimate result with a specified loan id
func getResult(db *sql.DB, loan int) ( Result, error ) {
var result Result
var query string
var err error

query = `SELECT
r.id,
loan_id,
loan_payment,
total_monthly,
total_fees,
total_credits,
cash_to_close
FROM estimate_result r
INNER JOIN loan
ON r.loan_id = loan.id
WHERE loan.Id = ?
`
row := db.QueryRow(query, loan)

err = row.Scan(
&result.Id,
&result.LoanId,
&result.LoanPayment,
&result.TotalMonthly,
&result.TotalFees,
&result.TotalCredits,
&result.CashToClose,
)

if err != nil {
return result, err
}

return result, nil
}

// Must have an estimate ID 'e', but not necessarily a loan id 'id' // Must have an estimate ID 'e', but not necessarily a loan id 'id'
func getLoans(db *sql.DB, e int, id int) ( []Loan, error ) { func getLoans(db *sql.DB, e int, id int) ( []Loan, error ) {
var loans []Loan var loans []Loan
@@ -1680,6 +1718,11 @@ func getLoans(db *sql.DB, e int, id int) ( []Loan, error ) {
} }
loan.Fees = fees loan.Fees = fees
loan.Result, err = getResult(db, loan.Id)
if err != nil {
return loans, err
}

loan.Type, err = getLoanType(db, loan.Type.Id) loan.Type, err = getLoanType(db, loan.Type.Id)
if err != nil { if err != nil {
return loans, err return loans, err
@@ -2571,6 +2614,7 @@ func seedEstimates(db *sql.DB, users []User, ltypes []LoanType) []Estimate {
var err error var err error


for i := 0; i < 15; i++ { for i := 0; i < 15; i++ {
estimate = Estimate{}
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),


Loading…
Cancel
Save