ll-callmobile-backend
Version:
VoIP Mobile Communications Backend with Supabase, Drizzle ORM, and Dynamic Querying - Deployable as Cloudflare Worker
81 lines • 3.36 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const hono_1 = require("hono");
const testCaseService_1 = require("../services/testCaseService");
const connection_1 = require("../db/connection");
const app = new hono_1.Hono();
// POST /testcases - Create a new test case
app.post('/testcases', async (c) => {
try {
const body = await c.req.json();
const db = (0, connection_1.createDb)(c.env.DATABASE_URL);
// Validate required fields
if (!body.description) {
return c.json({ error: 'Description is required' }, 400);
}
if (!body.code || !['CVT', 'CVT2', 'GPP'].includes(body.code)) {
return c.json({ error: 'Code is required and must be one of: CVT, CVT2, GPP' }, 400);
}
if (!body.client || !body.client.acsIdentityId || !body.client.name || !body.client.acsToken) {
return c.json({ error: 'Client information is required (acsIdentityId, name, acsToken)' }, 400);
}
if (!body.vendor || !body.vendor.acsIdentityId || !body.vendor.name || !body.vendor.acsToken) {
return c.json({ error: 'Vendor information is required (acsIdentityId, name, acsToken)' }, 400);
}
const result = await testCaseService_1.TestCaseService.createTestCase(db, body);
return c.json(result, 201);
}
catch (error) {
console.error('API Error:', error);
if (error instanceof Error) {
return c.json({ error: error.message }, 500);
}
return c.json({ error: 'Internal server error' }, 500);
}
});
// GET /testcases/:id - Get a test case by ID
app.get('/testcases/:id', async (c) => {
try {
const id = parseInt(c.req.param('id'));
const db = (0, connection_1.createDb)(c.env.DATABASE_URL);
if (isNaN(id)) {
return c.json({ error: 'Invalid test case ID' }, 400);
}
const testCase = await testCaseService_1.TestCaseService.getTestCaseById(db, id);
return c.json(testCase);
}
catch (error) {
console.error('API Error:', error);
if (error instanceof Error) {
if (error.message.includes('not found')) {
return c.json({ error: error.message }, 404);
}
return c.json({ error: error.message }, 500);
}
return c.json({ error: 'Internal server error' }, 500);
}
});
// GET /testcases/:id/client-token - Get client ACS token by test case ID
app.get('/testcases/:id/client-token', async (c) => {
try {
const id = parseInt(c.req.param('id'));
const db = (0, connection_1.createDb)(c.env.DATABASE_URL);
if (isNaN(id)) {
return c.json({ error: 'Invalid test case ID' }, 400);
}
const acsToken = await testCaseService_1.TestCaseService.getClientACSTokenByTestCaseId(db, id);
return c.json({ acsToken });
}
catch (error) {
console.error('API Error:', error);
if (error instanceof Error) {
if (error.message.includes('not found')) {
return c.json({ error: error.message }, 404);
}
return c.json({ error: error.message }, 500);
}
return c.json({ error: 'Internal server error' }, 500);
}
});
exports.default = app;
//# sourceMappingURL=testCases.js.map