1- import Nano from 'nano' ;
2- import express from 'express' ;
3- import type { Request , Response } from 'express' ;
41import {
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' ;
914import PostProcess from './attachment-preprocessing/index.js' ;
1015import {
1116 ClassroomCreationQueue ,
1217 ClassroomJoinQueue ,
1318 ClassroomLeaveQueue ,
1419} from './client-requests/classroom-requests.js' ;
1520import {
16- COURSE_DB_LOOKUP ,
1721 CourseCreationQueue ,
1822 initCourseDBDesignDocInsert ,
1923} from './client-requests/course-requests.js' ;
20- import CouchDB , { useOrCreateCourseDB , useOrCreateDB } from './couchdb/index.js' ;
2124import { 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' ;
2729import logger from './logger.js' ;
2830import logsRouter from './routes/logs.js' ;
29- import { CourseConfig } from '@vue-skuilder/common ' ;
31+ import ENV from './utils/env.js ' ;
3032
3133process . 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
6769app . 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
8379app . 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
209201init ( ) ;
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