schemaghost
Version:
Instant mock API server from database schema
38 lines (37 loc) • 1.41 kB
JavaScript
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.serve = serve;
// server/index.ts
const express_1 = __importDefault(require("express"));
const routes_1 = require("./routes");
const loader_1 = require("../schema/loader");
async function serve(options) {
const app = (0, express_1.default)();
app.use(express_1.default.json()); // parse JSON bodies
// Load schema or use pre-generated mock data
let schemaData;
if (options.data) {
schemaData = options.data; // MockData from CLI
}
else {
schemaData = await (0, loader_1.loadSchema)(options.schemaPath); // SchemaData
}
// Example: safely access raw Prisma schema string only if it exists
if (isSchemaData(schemaData)) {
console.log("✅ Loaded schema string length:", schemaData.raw.length);
}
// Create Express router dynamically based on schema or mock data
const router = (0, routes_1.createRouter)(schemaData);
app.use("/api", router);
// Start server
app.listen(options.port, () => {
console.log(`🚀 SchemaGhost server running at http://localhost:${options.port}/api`);
});
}
/** Type guard to detect SchemaData */
function isSchemaData(data) {
return data.raw !== undefined;
}
;