feat: persist learner progress and comments
All checks were successful
CI / Validate frontend and API (push) Successful in 47s
CI / Build and publish Docker images (push) Successful in 39s

This commit is contained in:
Cauê Faleiros
2026-08-31 16:33:08 -03:00
parent 7842a757cd
commit 2dfca33758
10 changed files with 225 additions and 491 deletions

View File

@@ -7,6 +7,7 @@ import { pool } from './db/pool.js';
import { authRoutes } from './routes/auth.js';
import { courseRoutes } from './routes/courses.js';
import { manageCourseRoutes } from './routes/manage-courses.js';
import { learningRoutes } from './routes/learning.js';
export function buildApp() {
const app = Fastify({ logger: true });
@@ -25,19 +26,21 @@ export function buildApp() {
return reply.code(500).send({ error: 'Internal server error' });
});
app.get('/api/v1/health', async () => ({ status: 'ok' }));
app.get('/api/v1/ready', async (_request, reply) => {
const checkDatabase = async (_request: unknown, reply: { code: (statusCode: number) => { send: (payload: object) => unknown } }) => {
try {
await pool.query('select 1');
return { status: 'ready' };
return { status: 'ok', database: 'connected' };
} catch {
return reply.code(503).send({ status: 'unavailable' });
return reply.code(503).send({ status: 'unavailable', database: 'unavailable' });
}
});
};
app.get('/api/v1/health', checkDatabase);
app.get('/api/v1/ready', checkDatabase);
app.register(authPlugin);
app.register(authRoutes, { prefix: '/api/v1/auth' });
app.register(courseRoutes, { prefix: '/api/v1/courses' });
app.register(manageCourseRoutes, { prefix: '/api/v1/manage/courses' });
app.register(learningRoutes, { prefix: '/api/v1' });
return app;
}