powr-sdk-api
Version:
Shared API core library for PowrStack projects. Zero dependencies - works with Express, Next.js API routes, and other frameworks. All features are optional and install only what you need.
83 lines (76 loc) • 2.79 kB
JavaScript
"use strict";
const express = require('express');
const {
injectProjectId
} = require('../middleware/projectId');
const {
verifyToken
} = require('../middleware/jwtToken');
// Import all route modules
const commentsRoutes = require('./comments');
const filesRoutes = require('./files');
const formsRoutes = require('./forms');
const invoicesRoutes = require('./invoices');
const likesRoutes = require('./likes');
const functionsRoutes = require('./functions');
const ratingsRoutes = require('./ratings');
const usersRoutes = require('./users');
const waitlistsRoutes = require('./waitlists');
const activitiesRoutes = require('./activities');
const authRoutes = require('./auth');
const slidesRoutes = require('./slides');
const notificationsRoutes = require('./notifications');
const profilesRoutes = require('./profiles');
const chatRoutes = require('./chat');
const feedsRoutes = require('./feeds');
const toolsRoutes = require('./tools');
const tasksRoutes = require('./tasks');
// Synchronous router creation
const createPowrRoutes = (options = {}) => {
const router = express.Router();
// Use the dedicated projectId injection middleware
router.use(injectProjectId(options));
router.use('/auth', authRoutes);
router.use('/comments', verifyToken, commentsRoutes);
router.use('/files', verifyToken, filesRoutes);
router.use('/forms', formsRoutes);
router.use('/invoices', verifyToken, invoicesRoutes);
router.use('/likes', verifyToken, likesRoutes);
router.use('/functions', verifyToken, functionsRoutes);
router.use('/ratings', verifyToken, ratingsRoutes);
router.use('/users', verifyToken, usersRoutes);
router.use('/waitlists', verifyToken, waitlistsRoutes);
router.use('/activities', verifyToken, activitiesRoutes);
router.use('/slides', verifyToken, slidesRoutes);
router.use('/notifications', verifyToken, notificationsRoutes);
router.use('/profiles', verifyToken, profilesRoutes);
router.use('/chat', verifyToken, chatRoutes);
router.use('/feeds', verifyToken, feedsRoutes);
router.use('/tools', verifyToken, toolsRoutes);
router.use('/tasks', verifyToken, tasksRoutes);
return router;
};
// Create common routes (welcome, health) for any service
const createCommonRoutes = (options = {}) => {
const router = express.Router();
// Welcome route (public)
router.get("/", (req, res) => {
res.json({
message: options.welcomeMessage || "Welcome to Cloud API",
version: options.version || "1.0.0"
});
});
// Health check route (public)
router.get("/health", (req, res) => {
res.json({
status: "healthy",
timestamp: new Date().toISOString(),
service: options.serviceName || "api"
});
});
return router;
};
module.exports = {
createPowrRoutes,
createCommonRoutes
};