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)
|
GetEnquiriesByUser(ctx context.Context, arg GetEnquiriesByUserParams) ([]GetEnquiriesByUserRow, error)
|
||||||
GetEnquiry(ctx context.Context, id int32) (GetEnquiryRow, error)
|
GetEnquiry(ctx context.Context, id int32) (GetEnquiryRow, error)
|
||||||
GetExpiringSoonQuotes(ctx context.Context, dateADD interface{}) ([]GetExpiringSoonQuotesRow, 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)
|
GetLineItem(ctx context.Context, id int32) (LineItem, error)
|
||||||
GetLineItemsByProduct(ctx context.Context, productID sql.NullInt32) ([]LineItem, error)
|
GetLineItemsByProduct(ctx context.Context, productID sql.NullInt32) ([]LineItem, error)
|
||||||
GetLineItemsTable(ctx context.Context, documentID int32) ([]GetLineItemsTableRow, 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
|
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
|
SELECT
|
||||||
id,
|
id,
|
||||||
quote_id,
|
quote_id,
|
||||||
|
|
@ -64,7 +72,6 @@ latest_quote_reminder AS (
|
||||||
FROM ranked_reminders
|
FROM ranked_reminders
|
||||||
WHERE rn = 1
|
WHERE rn = 1
|
||||||
)
|
)
|
||||||
|
|
||||||
SELECT
|
SELECT
|
||||||
d.id AS document_id,
|
d.id AS document_id,
|
||||||
u.username,
|
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 users u ON u.id = d.user_id
|
||||||
JOIN enquiries e ON e.id = q.enquiry_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
|
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
|
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
|
SELECT
|
||||||
id,
|
id,
|
||||||
quote_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 users u ON u.id = d.user_id
|
||||||
JOIN enquiries e ON e.id = q.enquiry_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
|
LEFT JOIN latest_quote_reminder lqr on d.id = lqr.quote_id
|
||||||
|
|
||||||
WHERE
|
WHERE
|
||||||
q.valid_until >= CURRENT_DATE
|
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 q.valid_until <= DATE_ADD(CURRENT_DATE, INTERVAL ? DAY)
|
||||||
AND e.status_id = 5
|
AND e.status_id = 5
|
||||||
AND (q.reminders_disabled IS NULL OR q.reminders_disabled = FALSE)
|
AND (q.reminders_disabled IS NULL OR q.reminders_disabled = FALSE)
|
||||||
|
|
||||||
ORDER BY q.valid_until
|
ORDER BY q.valid_until
|
||||||
`
|
`
|
||||||
|
|
||||||
|
type GetExpiringSoonQuotesOnDayParams struct {
|
||||||
|
DATEADD interface{} `json:"DATE_ADD"`
|
||||||
|
DATEADD_2 interface{} `json:"DATE_ADD_2"`
|
||||||
|
}
|
||||||
|
|
||||||
type GetExpiringSoonQuotesOnDayRow struct {
|
type GetExpiringSoonQuotesOnDayRow struct {
|
||||||
DocumentID int32 `json:"document_id"`
|
DocumentID int32 `json:"document_id"`
|
||||||
Username string `json:"username"`
|
Username string `json:"username"`
|
||||||
|
|
@ -216,8 +239,8 @@ type GetExpiringSoonQuotesOnDayRow struct {
|
||||||
LatestReminderSentTime time.Time `json:"latest_reminder_sent_time"`
|
LatestReminderSentTime time.Time `json:"latest_reminder_sent_time"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (q *Queries) GetExpiringSoonQuotesOnDay(ctx context.Context, dateADD interface{}) ([]GetExpiringSoonQuotesOnDayRow, error) {
|
func (q *Queries) GetExpiringSoonQuotesOnDay(ctx context.Context, arg GetExpiringSoonQuotesOnDayParams) ([]GetExpiringSoonQuotesOnDayRow, error) {
|
||||||
rows, err := q.db.QueryContext(ctx, getExpiringSoonQuotesOnDay, dateADD)
|
rows, err := q.db.QueryContext(ctx, getExpiringSoonQuotesOnDay, arg.DATEADD, arg.DATEADD_2)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
@ -312,7 +335,15 @@ func (q *Queries) GetQuoteRemindersDisabled(ctx context.Context, id int32) (GetQ
|
||||||
}
|
}
|
||||||
|
|
||||||
const getRecentlyExpiredQuotes = `-- name: GetRecentlyExpiredQuotes :many
|
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
|
SELECT
|
||||||
id,
|
id,
|
||||||
quote_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 users u ON u.id = d.user_id
|
||||||
JOIN enquiries e ON e.id = q.enquiry_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
|
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
|
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
|
SELECT
|
||||||
id,
|
id,
|
||||||
quote_id,
|
quote_id,
|
||||||
|
|
@ -458,6 +498,7 @@ JOIN documents d ON d.id = q.document_id
|
||||||
JOIN users u ON u.id = d.user_id
|
JOIN users u ON u.id = d.user_id
|
||||||
JOIN enquiries e ON e.id = q.enquiry_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
|
LEFT JOIN latest_quote_reminder lqr on d.id = lqr.quote_id
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,13 @@
|
||||||
-- name: GetExpiringSoonQuotes :many
|
-- 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
|
SELECT
|
||||||
id,
|
id,
|
||||||
quote_id,
|
quote_id,
|
||||||
|
|
@ -22,7 +30,6 @@ latest_quote_reminder AS (
|
||||||
FROM ranked_reminders
|
FROM ranked_reminders
|
||||||
WHERE rn = 1
|
WHERE rn = 1
|
||||||
)
|
)
|
||||||
|
|
||||||
SELECT
|
SELECT
|
||||||
d.id AS document_id,
|
d.id AS document_id,
|
||||||
u.username,
|
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 users u ON u.id = d.user_id
|
||||||
JOIN enquiries e ON e.id = q.enquiry_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
|
LEFT JOIN latest_quote_reminder lqr on d.id = lqr.quote_id
|
||||||
|
|
||||||
|
|
@ -54,7 +62,15 @@ WHERE
|
||||||
ORDER BY q.valid_until;
|
ORDER BY q.valid_until;
|
||||||
|
|
||||||
-- name: GetExpiringSoonQuotesOnDay :many
|
-- 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
|
SELECT
|
||||||
id,
|
id,
|
||||||
quote_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 users u ON u.id = d.user_id
|
||||||
JOIN enquiries e ON e.id = q.enquiry_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
|
LEFT JOIN latest_quote_reminder lqr on d.id = lqr.quote_id
|
||||||
|
|
||||||
WHERE
|
WHERE
|
||||||
q.valid_until >= CURRENT_DATE
|
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 q.valid_until <= DATE_ADD(CURRENT_DATE, INTERVAL ? DAY)
|
||||||
AND e.status_id = 5
|
AND e.status_id = 5
|
||||||
AND (q.reminders_disabled IS NULL OR q.reminders_disabled = FALSE)
|
AND (q.reminders_disabled IS NULL OR q.reminders_disabled = FALSE)
|
||||||
|
|
||||||
ORDER BY q.valid_until;
|
ORDER BY q.valid_until;
|
||||||
|
|
||||||
-- name: GetRecentlyExpiredQuotes :many
|
-- 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
|
SELECT
|
||||||
id,
|
id,
|
||||||
quote_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 users u ON u.id = d.user_id
|
||||||
JOIN enquiries e ON e.id = q.enquiry_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
|
LEFT JOIN latest_quote_reminder lqr on d.id = lqr.quote_id
|
||||||
|
|
||||||
|
|
@ -162,7 +189,15 @@ WHERE
|
||||||
ORDER BY q.valid_until DESC;
|
ORDER BY q.valid_until DESC;
|
||||||
|
|
||||||
-- name: GetRecentlyExpiredQuotesOnDay :many
|
-- 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
|
SELECT
|
||||||
id,
|
id,
|
||||||
quote_id,
|
quote_id,
|
||||||
|
|
@ -204,6 +239,7 @@ JOIN documents d ON d.id = q.document_id
|
||||||
JOIN users u ON u.id = d.user_id
|
JOIN users u ON u.id = d.user_id
|
||||||
JOIN enquiries e ON e.id = q.enquiry_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
|
LEFT JOIN latest_quote_reminder lqr on d.id = lqr.quote_id
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue