Added more queries

This commit is contained in:
Benoy Bose 2025-01-10 05:21:07 +05:30
parent c413f7aa73
commit 4fff09443d
2 changed files with 185 additions and 1 deletions

View File

@ -182,4 +182,110 @@ export const productByCodeUsageYearMonthQuery = `SELECT DISTINCT
FROM ${process.env.ATHENA_CU_TABLE}
WHERE LOWER(line_item_product_code) = LOWER('%productCode%')
AND year = '%year%'
AND month = '%month%';`;
AND month = '%month%';`;
export const invoices = `select DISTINCT
bill_invoice_id as invoiceId,
year, month
FROM ${process.env.ATHENA_CU_TABLE}`;
export const invoiceById = `select DISTINCT
bill_invoice_id as invoiceId,
year, month,
line_item_product_code as productCode,
line_item_usage_account_id as accountId,
line_item_resource_id as resourceId
FROM ${process.env.ATHENA_CU_TABLE}
WHERE bill_invoice_id = '%invoiceId%';`;
export const invoiceByIdProducts = `select DISTINCT
bill_invoice_id as invoiceId,
year, month,
line_item_product_code as productCode,
line_item_usage_account_id as accountId,
line_item_resource_id as resourceId
FROM ${process.env.ATHENA_CU_TABLE}
WHERE bill_invoice_id = '%invoiceId%';`;
export const invoiceByProductCode = `select DISTINCT
bill_invoice_id as invoiceId,
year, month,
line_item_product_code as productCode,
line_item_usage_account_id as accountId,
line_item_resource_id as resourceId
FROM ${process.env.ATHENA_CU_TABLE}
WHERE bill_invoice_id = '%invoiceId%'
AND LOWER(line_item_product_code) = LOWER('%productCode%');`;
export const invoiceByProductCodeUsage = `select DISTINCT
bill_invoice_id as invoiceId,
year, month,
line_item_product_code as productCode,
line_item_usage_account_id as accountId,
line_item_resource_id as resourceId,
line_item_usage_type AS usageType,
line_item_usage_amount AS usageAmount,
line_item_unblended_rate AS unblendedRate,
line_item_unblended_cost AS unblendedCost,
line_item_blended_rate AS blendedRate,
line_item_blended_cost AS blendedCost,
pricing_term AS pricingTerm,
pricing_unit AS pricingUnit,
pricing_rate_code AS pricingRateCode,
pricing_currency AS pricingCurrency,
line_item_usage_start_date AS startDate,
line_item_usage_end_date AS endDate
FROM ${process.env.ATHENA_CU_TABLE}
WHERE bill_invoice_id = '%invoiceId%'
AND LOWER(line_item_product_code) = LOWER('%productCode%');`;
export const invoiceByIdAccounts = `select DISTINCT
bill_invoice_id as invoiceId,
year, month,
line_item_usage_account_id as accountId
FROM ${process.env.ATHENA_CU_TABLE}
WHERE bill_invoice_id = '%invoiceId%';`;
export const invoiceByIdAccount = `select DISTINCT
bill_invoice_id as invoiceId,
year, month,
line_item_product_code as productCode,
line_item_usage_account_id as accountId,
line_item_resource_id as resourceId
FROM ${process.env.ATHENA_CU_TABLE}
WHERE bill_invoice_id = '%invoiceId%'
AND line_item_usage_account_id = '%accountId%';`;
export const invoiceByIdAccountProducts = `select DISTINCT
bill_invoice_id as invoiceId,
year, month,
line_item_product_code as productCode,
line_item_usage_account_id as accountId,
line_item_resource_id as resourceId
FROM ${process.env.ATHENA_CU_TABLE}
WHERE bill_invoice_id = '%invoiceId%'
AND line_item_usage_account_id = '%accountId%'
AND LOWER(line_item_product_code) = LOWER('%productCode%');`;
export const invoiceByIdAccountProductsUsage = `select DISTINCT
bill_invoice_id as invoiceId,
year, month,
line_item_product_code as productCode,
line_item_usage_account_id as accountId,
line_item_resource_id as resourceId,
line_item_usage_type AS usageType,
line_item_usage_amount AS usageAmount,
line_item_unblended_rate AS unblendedRate,
line_item_unblended_cost AS unblendedCost,
line_item_blended_rate AS blendedRate,
line_item_blended_cost AS blendedCost,
pricing_term AS pricingTerm,
pricing_unit AS pricingUnit,
pricing_rate_code AS pricingRateCode,
pricing_currency AS pricingCurrency,
line_item_usage_start_date AS startDate,
line_item_usage_end_date AS endDate
FROM ${process.env.ATHENA_CU_TABLE}
WHERE bill_invoice_id = '%invoiceId%'
AND line_item_usage_account_id = '%accountId%'
AND LOWER(line_item_product_code) = LOWER('%productCode%');`;

View File

@ -142,6 +142,84 @@ server.get("/products/:productCode/usage/:year/:month", async (request, reply) =
return results;
});
server.get("/invoices", async (request, reply) => {
const query = queries.invoices;
const queryExecutionId = await executeQueryAsync(query);
const results = await retrieveResultsAsync(queryExecutionId);
return results;
});
server.get("/invoices/:invoiceId", async (request, reply) => {
const query = queries.invoiceById
.replace('%invoiceId%', request.params.invoiceId);
const queryExecutionId = await executeQueryAsync(query);
const results = await retrieveResultsAsync(queryExecutionId);
return results;
});
server.get("/invoices/:invoiceId/products", async (request, reply) => {
const query = queries.invoiceByIdProducts
.replace('%invoiceId%', request.params.invoiceId);
const queryExecutionId = await executeQueryAsync(query);
const results = await retrieveResultsAsync(queryExecutionId);
return results;
});
server.get("/invoices/:invoiceId/products/:productCode", async (request, reply) => {
const query = queries.invoiceByProductCode
.replace('%invoiceId%', request.params.invoiceId)
.replace('%productCode%', request.params.productCode);
const queryExecutionId = await executeQueryAsync(query);
const results = await retrieveResultsAsync(queryExecutionId);
return results;
});
server.get("/invoices/:invoiceId/products/:productCode/usage", async (request, reply) => {
const query = queries.invoiceByProductCodeUsage
.replace('%invoiceId%', request.params.invoiceId)
.replace('%productCode%', request.params.productCode);
const queryExecutionId = await executeQueryAsync(query);
const results = await retrieveResultsAsync(queryExecutionId);
return results;
});
server.get("/invoices/:invoiceId/accounts", async (request, reply) => {
const query = queries.invoiceByIdAccounts
.replace('%invoiceId%', request.params.invoiceId);
const queryExecutionId = await executeQueryAsync(query);
const results = await retrieveResultsAsync(queryExecutionId);
return results;
});
server.get("/invoices/:invoiceId/accounts/:accountId", async (request, reply) => {
const query = queries.invoiceByIdAccount
.replace('%invoiceId%', request.params.invoiceId)
.replace('%accountId%', request.params.accountId);
const queryExecutionId = await executeQueryAsync(query);
const results = await retrieveResultsAsync(queryExecutionId);
return results;
});
server.get("/invoices/:invoiceId/accounts/:accountId/products/:productCode", async (request, reply) => {
const query = queries.invoiceByIdAccountProducts
.replace('%invoiceId%', request.params.invoiceId)
.replace('%accountId%', request.params.accountId)
.replace('%productCode%', request.params.productCode);
const queryExecutionId = await executeQueryAsync(query);
const results = await retrieveResultsAsync(queryExecutionId);
return results;
});
server.get("/invoices/:invoiceId/accounts/:accountId/products/:productCode/usage", async (request, reply) => {
const query = queries.invoiceByIdAccountProductsUsage
.replace('%invoiceId%', request.params.invoiceId)
.replace('%accountId%', request.params.accountId)
.replace('%productCode%', request.params.productCode);
const queryExecutionId = await executeQueryAsync(query);
const results = await retrieveResultsAsync(queryExecutionId);
return results;
});
try {
await server.listen({ port: 3000 })
} catch (err) {