-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathloan.go
90 lines (86 loc) · 1.83 KB
/
loan.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
package datastore
import (
"time"
"github.com/google/uuid"
)
type Loan struct {
ID int64
Name string
Description string
BorrowerID int64
GUID uuid.UUID
Amount float64
StartsAt time.Time
EndsAt time.Time
CreatedAt time.Time
UpdatedAt time.Time
}
func (d datastore) GetLoansByAmount(page, perPage int64, asc bool) (loans []Loan, err error) {
limit, offset := pagination(page, perPage)
rows, err := d.Query(`
SELECT
l.id, l.name, l.description, l.borrower_id, l.guid,
l.amount, l.starts_at, l.ends_at, l.created_at, l.updated_at
FROM
loans l
LEFT JOIN
lender_loans ll on l.id = ll.loan_id
WHERE
ll.loan_id IS NULL
ORDER BY
l.amount $1
LIMIT $2 OFFSET $3;`,
orderBy(asc), limit, offset,
)
defer rows.Close()
if err != nil {
return
}
return
}
func (d datastore) GetLoansByEndDate(page, perPage int64, asc bool) (loans []Loan, err error) {
limit, offset := pagination(page, perPage)
rows, err := d.Query(`
SELECT
l.id, l.name, l.description, l.borrower_id, l.guid,
l.amount, l.starts_at, l.ends_at, l.created_at, l.updated_at
FROM
loans l
LEFT JOIN
lender_loans ll on l.id = ll.loan_id
WHERE
ll.loan_id IS NULL
ORDER BY
l.ends_at $1
LIMIT $2 OFFSET $3;`,
orderBy(asc), limit, offset,
)
defer rows.Close()
if err != nil {
return
}
return
}
func (d datastore) GetLoansByScore(page, perPage int64, asc bool) (loans []Loan, err error) {
limit, offset := pagination(page, perPage)
rows, err := d.Query(`
SELECT
l.id, l.name, l.description, l.borrower_id, l.guid,
l.amount, l.starts_at, l.ends_at, l.created_at, l.updated_at
FROM
loans l
LEFT JOIN
lender_loans ll on l.id = ll.loan_id
WHERE
ll.loan_id IS NULL
ORDER BY
b.score $1
LIMIT $2 OFFSET $3;`,
orderBy(asc), limit, offset,
)
defer rows.Close()
if err != nil {
return
}
return
}