Skip to content

Commit ed49c7c

Browse files
committed
use CourseLookup
1 parent 3f1b872 commit ed49c7c

File tree

1 file changed

+26
-34
lines changed

1 file changed

+26
-34
lines changed

packages/express/src/app.ts

Lines changed: 26 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,34 @@
1-
import Nano from 'nano';
2-
import express from 'express';
3-
import type { Request, Response } from 'express';
41
import {
5-
ServerRequest,
62
ServerRequestType as RequestEnum,
3+
ServerRequest,
74
prepareNote55,
85
} from '@vue-skuilder/common';
6+
import { CourseLookup } from '@vue-skuilder/db';
7+
import cookieParser from 'cookie-parser';
8+
import cors from 'cors';
9+
import type { Request, Response } from 'express';
10+
import express from 'express';
11+
import * as fileSystem from 'fs';
12+
import morgan from 'morgan';
13+
import Nano from 'nano';
914
import PostProcess from './attachment-preprocessing/index.js';
1015
import {
1116
ClassroomCreationQueue,
1217
ClassroomJoinQueue,
1318
ClassroomLeaveQueue,
1419
} from './client-requests/classroom-requests.js';
1520
import {
16-
COURSE_DB_LOOKUP,
1721
CourseCreationQueue,
1822
initCourseDBDesignDocInsert,
1923
} from './client-requests/course-requests.js';
20-
import CouchDB, { useOrCreateCourseDB, useOrCreateDB } from './couchdb/index.js';
2124
import { requestIsAuthenticated } from './couchdb/authentication.js';
22-
import cors from 'cors';
23-
import cookieParser from 'cookie-parser';
24-
import * as fileSystem from 'fs';
25-
import ENV from './utils/env.js';
26-
import morgan from 'morgan';
25+
import CouchDB, {
26+
useOrCreateCourseDB,
27+
useOrCreateDB,
28+
} from './couchdb/index.js';
2729
import logger from './logger.js';
2830
import logsRouter from './routes/logs.js';
29-
import { CourseConfig } from '@vue-skuilder/common';
31+
import ENV from './utils/env.js';
3032

3133
process.on('unhandledRejection', (reason, promise) => {
3234
logger.error('Unhandled Rejection at:', promise, 'reason:', reason);
@@ -65,19 +67,13 @@ export interface VueClientRequest extends express.Request {
6567
}
6668

6769
app.get('/courses', async (req: Request, res: Response) => {
68-
const coursesDB = await useOrCreateDB<CourseConfig>(COURSE_DB_LOOKUP);
69-
70-
const courseStubs = await coursesDB.list({
71-
include_docs: true,
72-
});
73-
const courses = courseStubs.rows.map((stub) => {
74-
if (stub.doc) {
75-
return `${stub.id} - ${stub.doc['name']}`;
76-
} else {
77-
return `${stub.id} - [no name]`;
78-
}
79-
});
80-
res.send(courses);
70+
try {
71+
const courses = await CourseLookup.allCourses();
72+
res.send(courses.map((c) => `${c._id} - ${c.name}`));
73+
} catch (error) {
74+
logger.error('Error fetching courses:', error);
75+
res.status(500).send('Failed to fetch courses');
76+
}
8177
});
8278

8379
app.get('/course/:courseID/config', async (req: Request, res: Response) => {
@@ -97,16 +93,12 @@ app.delete('/course/:courseID', async (req: Request, res: Response) => {
9793
res.json({ success: false, error: dbResp });
9894
return;
9995
}
100-
const lookupDB = await useOrCreateDB(COURSE_DB_LOOKUP);
101-
const lookupDoc = await lookupDB.get(req.params.courseID);
102-
const lookupResp = await lookupDB.destroy(
103-
req.params.courseID,
104-
lookupDoc._rev
105-
);
106-
if (lookupResp.ok) {
96+
const delResp = await CourseLookup.delete(req.params.courseID);
97+
98+
if (delResp.ok) {
10799
res.json({ success: true });
108100
} else {
109-
res.json({ success: false, error: lookupResp });
101+
res.json({ success: false, error: delResp });
110102
}
111103
} else {
112104
res.json({ success: false, error: 'Not authenticated' });
@@ -208,7 +200,7 @@ app.listen(port, () => {
208200

209201
init();
210202

211-
async function init() {
203+
async function init(): void {
212204
while (!listening) {
213205
await new Promise((resolve) => setTimeout(resolve, 100));
214206
}

0 commit comments

Comments
 (0)