donobu
Version:
Create browser automations with an LLM agent and replay them as Playwright scripts.
68 lines • 2.39 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.SuitesApi = void 0;
const CreateSuite_1 = require("../models/CreateSuite");
const SuiteMetadata_1 = require("../models/SuiteMetadata");
/**
* API controller for managing suites.
*/
class SuitesApi {
constructor(suitesManager, testsManager) {
this.suitesManager = suitesManager;
this.testsManager = testsManager;
}
/**
* GET /api/suites — list suites with optional filtering and pagination.
*/
async getSuites(req, res) {
const query = SuiteMetadata_1.SuitesQuerySchema.parse(req.query);
const result = await this.suitesManager.getSuites(query);
res.json({ suites: result.items, nextPageToken: result.nextPageToken });
}
/**
* POST /api/suites — create a new suite.
*/
async createSuite(req, res) {
const params = CreateSuite_1.CreateSuiteSchema.parse(req.body);
const suite = await this.suitesManager.createSuite(params);
res.json(suite);
}
/**
* GET /api/suites/:suiteId — get a suite by ID.
*/
async getSuite(req, res) {
const suiteId = String(req.params.suiteId);
const suite = await this.suitesManager.getSuiteById(suiteId);
res.json(suite);
}
/**
* PUT /api/suites/:suiteId — update an existing suite.
*/
async updateSuite(req, res) {
const suiteId = String(req.params.suiteId);
const suiteMetadata = SuiteMetadata_1.SuiteMetadataSchema.parse({
...req.body,
id: suiteId,
});
await this.suitesManager.updateSuite(suiteMetadata);
res.json(suiteMetadata);
}
/**
* DELETE /api/suites/:suiteId — delete a suite (tests are orphaned).
*/
async deleteSuite(req, res) {
const suiteId = String(req.params.suiteId);
await this.suitesManager.deleteSuite(suiteId);
res.status(200).json({ deleted: true });
}
/**
* GET /api/suites/:suiteId/tests — list tests in a suite.
*/
async getSuiteTests(req, res) {
const suiteId = String(req.params.suiteId);
const result = await this.testsManager.getTests({ suiteId });
res.json({ tests: result.items, nextPageToken: result.nextPageToken });
}
}
exports.SuitesApi = SuitesApi;
//# sourceMappingURL=SuitesApi.js.map