Files
miracles_in_motion/api/deploy-package/donations/getDonations.js

83 lines
2.8 KiB
JavaScript

"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getDonations = getDonations;
const functions_1 = require("@azure/functions");
const DIContainer_1 = __importDefault(require("../DIContainer"));
async function getDonations(request, context) {
try {
await DIContainer_1.default.getInstance().initializeServices();
const { donationsContainer } = DIContainer_1.default.getInstance().getServices();
const page = parseInt(request.query.get('page') || '1');
const limit = parseInt(request.query.get('limit') || '10');
const status = request.query.get('status');
const program = request.query.get('program');
let query = 'SELECT * FROM c WHERE 1=1';
const parameters = [];
if (status) {
query += ' AND c.status = @status';
parameters.push({ name: '@status', value: status });
}
if (program) {
query += ' AND c.program = @program';
parameters.push({ name: '@program', value: program });
}
query += ' ORDER BY c.createdAt DESC';
const { resources: donations } = await donationsContainer.items
.query({
query,
parameters
})
.fetchAll();
// Simple pagination
const total = donations.length;
const pages = Math.ceil(total / limit);
const startIndex = (page - 1) * limit;
const endIndex = startIndex + limit;
const paginatedDonations = donations.slice(startIndex, endIndex);
const response = {
success: true,
data: paginatedDonations,
pagination: {
page,
limit,
total,
pages
},
timestamp: new Date().toISOString()
};
return {
status: 200,
jsonBody: response,
headers: {
'Content-Type': 'application/json',
'Access-Control-Allow-Origin': '*'
}
};
}
catch (error) {
context.error('Error fetching donations:', error);
const response = {
success: false,
error: 'Failed to fetch donations',
timestamp: new Date().toISOString()
};
return {
status: 500,
jsonBody: response,
headers: {
'Content-Type': 'application/json',
'Access-Control-Allow-Origin': '*'
}
};
}
}
functions_1.app.http('getDonations', {
methods: ['GET'],
authLevel: 'anonymous',
route: 'donations',
handler: getDonations
});
//# sourceMappingURL=getDonations.js.map