Using document version to get latest quotes
This commit is contained in:
parent
b62d7fdb17
commit
d8526f12b6
|
|
@ -63,7 +63,7 @@ type Querier interface {
|
|||
GetEnquiriesByUser(ctx context.Context, arg GetEnquiriesByUserParams) ([]GetEnquiriesByUserRow, error)
|
||||
GetEnquiry(ctx context.Context, id int32) (GetEnquiryRow, error)
|
||||
GetExpiringSoonQuotes(ctx context.Context, dateADD interface{}) ([]GetExpiringSoonQuotesRow, error)
|
||||
GetExpiringSoonQuotesOnDay(ctx context.Context, dateADD interface{}) ([]GetExpiringSoonQuotesOnDayRow, error)
|
||||
GetExpiringSoonQuotesOnDay(ctx context.Context, arg GetExpiringSoonQuotesOnDayParams) ([]GetExpiringSoonQuotesOnDayRow, error)
|
||||
GetLineItem(ctx context.Context, id int32) (LineItem, error)
|
||||
GetLineItemsByProduct(ctx context.Context, productID sql.NullInt32) ([]LineItem, error)
|
||||
GetLineItemsTable(ctx context.Context, documentID int32) ([]GetLineItemsTableRow, error)
|
||||
|
|
|
|||
|
|
@ -41,7 +41,15 @@ func (q *Queries) EnableQuoteReminders(ctx context.Context, id int32) (sql.Resul
|
|||
}
|
||||
|
||||
const getExpiringSoonQuotes = `-- name: GetExpiringSoonQuotes :many
|
||||
WITH ranked_reminders AS (
|
||||
WITH latest_revision AS (
|
||||
SELECT
|
||||
q.enquiry_id,
|
||||
MAX(d.revision) AS max_revision
|
||||
FROM quotes q
|
||||
JOIN documents d ON d.id = q.document_id
|
||||
GROUP BY q.enquiry_id
|
||||
),
|
||||
ranked_reminders AS (
|
||||
SELECT
|
||||
id,
|
||||
quote_id,
|
||||
|
|
@ -64,7 +72,6 @@ latest_quote_reminder AS (
|
|||
FROM ranked_reminders
|
||||
WHERE rn = 1
|
||||
)
|
||||
|
||||
SELECT
|
||||
d.id AS document_id,
|
||||
u.username,
|
||||
|
|
@ -84,6 +91,7 @@ JOIN documents d ON d.id = q.document_id
|
|||
JOIN users u ON u.id = d.user_id
|
||||
JOIN enquiries e ON e.id = q.enquiry_id
|
||||
JOIN users uu ON uu.id = e.contact_user_id
|
||||
JOIN latest_revision lr ON q.enquiry_id = lr.enquiry_id AND d.revision = lr.max_revision
|
||||
|
||||
LEFT JOIN latest_quote_reminder lqr on d.id = lqr.quote_id
|
||||
|
||||
|
|
@ -148,7 +156,15 @@ func (q *Queries) GetExpiringSoonQuotes(ctx context.Context, dateADD interface{}
|
|||
}
|
||||
|
||||
const getExpiringSoonQuotesOnDay = `-- name: GetExpiringSoonQuotesOnDay :many
|
||||
WITH ranked_reminders AS (
|
||||
WITH latest_revision AS (
|
||||
SELECT
|
||||
q.enquiry_id,
|
||||
MAX(d.revision) AS max_revision
|
||||
FROM quotes q
|
||||
JOIN documents d ON d.id = q.document_id
|
||||
GROUP BY q.enquiry_id
|
||||
),
|
||||
ranked_reminders AS (
|
||||
SELECT
|
||||
id,
|
||||
quote_id,
|
||||
|
|
@ -190,18 +206,25 @@ JOIN documents d ON d.id = q.document_id
|
|||
JOIN users u ON u.id = d.user_id
|
||||
JOIN enquiries e ON e.id = q.enquiry_id
|
||||
JOIN users uu ON uu.id = e.contact_user_id
|
||||
JOIN latest_revision lr ON q.enquiry_id = lr.enquiry_id AND d.revision = lr.max_revision
|
||||
|
||||
LEFT JOIN latest_quote_reminder lqr on d.id = lqr.quote_id
|
||||
|
||||
WHERE
|
||||
q.valid_until >= CURRENT_DATE
|
||||
AND q.valid_until = DATE_ADD(CURRENT_DATE, INTERVAL ? DAY)
|
||||
AND q.valid_until <= DATE_ADD(CURRENT_DATE, INTERVAL ? DAY)
|
||||
AND e.status_id = 5
|
||||
AND (q.reminders_disabled IS NULL OR q.reminders_disabled = FALSE)
|
||||
|
||||
ORDER BY q.valid_until
|
||||
`
|
||||
|
||||
type GetExpiringSoonQuotesOnDayParams struct {
|
||||
DATEADD interface{} `json:"DATE_ADD"`
|
||||
DATEADD_2 interface{} `json:"DATE_ADD_2"`
|
||||
}
|
||||
|
||||
type GetExpiringSoonQuotesOnDayRow struct {
|
||||
DocumentID int32 `json:"document_id"`
|
||||
Username string `json:"username"`
|
||||
|
|
@ -216,8 +239,8 @@ type GetExpiringSoonQuotesOnDayRow struct {
|
|||
LatestReminderSentTime time.Time `json:"latest_reminder_sent_time"`
|
||||
}
|
||||
|
||||
func (q *Queries) GetExpiringSoonQuotesOnDay(ctx context.Context, dateADD interface{}) ([]GetExpiringSoonQuotesOnDayRow, error) {
|
||||
rows, err := q.db.QueryContext(ctx, getExpiringSoonQuotesOnDay, dateADD)
|
||||
func (q *Queries) GetExpiringSoonQuotesOnDay(ctx context.Context, arg GetExpiringSoonQuotesOnDayParams) ([]GetExpiringSoonQuotesOnDayRow, error) {
|
||||
rows, err := q.db.QueryContext(ctx, getExpiringSoonQuotesOnDay, arg.DATEADD, arg.DATEADD_2)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
@ -312,7 +335,15 @@ func (q *Queries) GetQuoteRemindersDisabled(ctx context.Context, id int32) (GetQ
|
|||
}
|
||||
|
||||
const getRecentlyExpiredQuotes = `-- name: GetRecentlyExpiredQuotes :many
|
||||
WITH ranked_reminders AS (
|
||||
WITH latest_revision AS (
|
||||
SELECT
|
||||
q.enquiry_id,
|
||||
MAX(d.revision) AS max_revision
|
||||
FROM quotes q
|
||||
JOIN documents d ON d.id = q.document_id
|
||||
GROUP BY q.enquiry_id
|
||||
),
|
||||
ranked_reminders AS (
|
||||
SELECT
|
||||
id,
|
||||
quote_id,
|
||||
|
|
@ -354,6 +385,7 @@ JOIN documents d ON d.id = q.document_id
|
|||
JOIN users u ON u.id = d.user_id
|
||||
JOIN enquiries e ON e.id = q.enquiry_id
|
||||
JOIN users uu ON uu.id = e.contact_user_id
|
||||
JOIN latest_revision lr ON q.enquiry_id = lr.enquiry_id AND d.revision = lr.max_revision
|
||||
|
||||
LEFT JOIN latest_quote_reminder lqr on d.id = lqr.quote_id
|
||||
|
||||
|
|
@ -416,7 +448,15 @@ func (q *Queries) GetRecentlyExpiredQuotes(ctx context.Context, dateSUB interfac
|
|||
}
|
||||
|
||||
const getRecentlyExpiredQuotesOnDay = `-- name: GetRecentlyExpiredQuotesOnDay :many
|
||||
WITH ranked_reminders AS (
|
||||
WITH latest_revision AS (
|
||||
SELECT
|
||||
q.enquiry_id,
|
||||
MAX(d.revision) AS max_revision
|
||||
FROM quotes q
|
||||
JOIN documents d ON d.id = q.document_id
|
||||
GROUP BY q.enquiry_id
|
||||
),
|
||||
ranked_reminders AS (
|
||||
SELECT
|
||||
id,
|
||||
quote_id,
|
||||
|
|
@ -457,7 +497,8 @@ FROM quotes q
|
|||
JOIN documents d ON d.id = q.document_id
|
||||
JOIN users u ON u.id = d.user_id
|
||||
JOIN enquiries e ON e.id = q.enquiry_id
|
||||
JOIN users uu ON uu.id = e.contact_user_id
|
||||
JOIN users uu ON uu.id = e.contact_user_id
|
||||
JOIN latest_revision lr ON q.enquiry_id = lr.enquiry_id AND d.revision = lr.max_revision
|
||||
|
||||
LEFT JOIN latest_quote_reminder lqr on d.id = lqr.quote_id
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,13 @@
|
|||
-- name: GetExpiringSoonQuotes :many
|
||||
WITH ranked_reminders AS (
|
||||
WITH latest_revision AS (
|
||||
SELECT
|
||||
q.enquiry_id,
|
||||
MAX(d.revision) AS max_revision
|
||||
FROM quotes q
|
||||
JOIN documents d ON d.id = q.document_id
|
||||
GROUP BY q.enquiry_id
|
||||
),
|
||||
ranked_reminders AS (
|
||||
SELECT
|
||||
id,
|
||||
quote_id,
|
||||
|
|
@ -22,7 +30,6 @@ latest_quote_reminder AS (
|
|||
FROM ranked_reminders
|
||||
WHERE rn = 1
|
||||
)
|
||||
|
||||
SELECT
|
||||
d.id AS document_id,
|
||||
u.username,
|
||||
|
|
@ -42,6 +49,7 @@ JOIN documents d ON d.id = q.document_id
|
|||
JOIN users u ON u.id = d.user_id
|
||||
JOIN enquiries e ON e.id = q.enquiry_id
|
||||
JOIN users uu ON uu.id = e.contact_user_id
|
||||
JOIN latest_revision lr ON q.enquiry_id = lr.enquiry_id AND d.revision = lr.max_revision
|
||||
|
||||
LEFT JOIN latest_quote_reminder lqr on d.id = lqr.quote_id
|
||||
|
||||
|
|
@ -54,7 +62,15 @@ WHERE
|
|||
ORDER BY q.valid_until;
|
||||
|
||||
-- name: GetExpiringSoonQuotesOnDay :many
|
||||
WITH ranked_reminders AS (
|
||||
WITH latest_revision AS (
|
||||
SELECT
|
||||
q.enquiry_id,
|
||||
MAX(d.revision) AS max_revision
|
||||
FROM quotes q
|
||||
JOIN documents d ON d.id = q.document_id
|
||||
GROUP BY q.enquiry_id
|
||||
),
|
||||
ranked_reminders AS (
|
||||
SELECT
|
||||
id,
|
||||
quote_id,
|
||||
|
|
@ -96,19 +112,29 @@ JOIN documents d ON d.id = q.document_id
|
|||
JOIN users u ON u.id = d.user_id
|
||||
JOIN enquiries e ON e.id = q.enquiry_id
|
||||
JOIN users uu ON uu.id = e.contact_user_id
|
||||
JOIN latest_revision lr ON q.enquiry_id = lr.enquiry_id AND d.revision = lr.max_revision
|
||||
|
||||
LEFT JOIN latest_quote_reminder lqr on d.id = lqr.quote_id
|
||||
|
||||
WHERE
|
||||
q.valid_until >= CURRENT_DATE
|
||||
AND q.valid_until = DATE_ADD(CURRENT_DATE, INTERVAL ? DAY)
|
||||
AND q.valid_until <= DATE_ADD(CURRENT_DATE, INTERVAL ? DAY)
|
||||
AND e.status_id = 5
|
||||
AND (q.reminders_disabled IS NULL OR q.reminders_disabled = FALSE)
|
||||
|
||||
ORDER BY q.valid_until;
|
||||
|
||||
-- name: GetRecentlyExpiredQuotes :many
|
||||
WITH ranked_reminders AS (
|
||||
WITH latest_revision AS (
|
||||
SELECT
|
||||
q.enquiry_id,
|
||||
MAX(d.revision) AS max_revision
|
||||
FROM quotes q
|
||||
JOIN documents d ON d.id = q.document_id
|
||||
GROUP BY q.enquiry_id
|
||||
),
|
||||
ranked_reminders AS (
|
||||
SELECT
|
||||
id,
|
||||
quote_id,
|
||||
|
|
@ -150,6 +176,7 @@ JOIN documents d ON d.id = q.document_id
|
|||
JOIN users u ON u.id = d.user_id
|
||||
JOIN enquiries e ON e.id = q.enquiry_id
|
||||
JOIN users uu ON uu.id = e.contact_user_id
|
||||
JOIN latest_revision lr ON q.enquiry_id = lr.enquiry_id AND d.revision = lr.max_revision
|
||||
|
||||
LEFT JOIN latest_quote_reminder lqr on d.id = lqr.quote_id
|
||||
|
||||
|
|
@ -162,7 +189,15 @@ WHERE
|
|||
ORDER BY q.valid_until DESC;
|
||||
|
||||
-- name: GetRecentlyExpiredQuotesOnDay :many
|
||||
WITH ranked_reminders AS (
|
||||
WITH latest_revision AS (
|
||||
SELECT
|
||||
q.enquiry_id,
|
||||
MAX(d.revision) AS max_revision
|
||||
FROM quotes q
|
||||
JOIN documents d ON d.id = q.document_id
|
||||
GROUP BY q.enquiry_id
|
||||
),
|
||||
ranked_reminders AS (
|
||||
SELECT
|
||||
id,
|
||||
quote_id,
|
||||
|
|
@ -203,7 +238,8 @@ FROM quotes q
|
|||
JOIN documents d ON d.id = q.document_id
|
||||
JOIN users u ON u.id = d.user_id
|
||||
JOIN enquiries e ON e.id = q.enquiry_id
|
||||
JOIN users uu ON uu.id = e.contact_user_id
|
||||
JOIN users uu ON uu.id = e.contact_user_id
|
||||
JOIN latest_revision lr ON q.enquiry_id = lr.enquiry_id AND d.revision = lr.max_revision
|
||||
|
||||
LEFT JOIN latest_quote_reminder lqr on d.id = lqr.quote_id
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue