Skip to content

Commit dea1c68

Browse files
committed
feat: added getCourseDetails handler
1 parent 44f3ed5 commit dea1c68

File tree

5 files changed

+47
-3
lines changed

5 files changed

+47
-3
lines changed

k8s/Chart.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ apiVersion: v1
22
description: A Helm chart for kube-ts-server
33
name: kube-ts-server
44
version: 1.0.0
5-
appVersion: 1.4.38
5+
appVersion: 1.5.0
66
home: https://cloud.docker.com/u/kubejs/repository/docker/kubejs/kube-ts-server
77
icon: https://avatars2.githubusercontent.com/u/47761918?s=200&v=4
88
sources:

k8s/values.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ replicaCount: 2
66

77
image:
88
repository: kubejs/kube-ts-server
9-
tag: 1.4.38
9+
tag: 1.5.0
1010
pullPolicy: Always
1111
containerPort: 3000
1212

src/presenter/express/api/v1/routes/getDiscoveryItems/index.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,17 @@ import catchErrors from '../../../../utils/errors/catchErrors';
66

77
const getDiscoveryItems = (config: Config) =>
88
catchErrors(config, async (req, res) => {
9+
// TODO: provide validation for query params
910
const type = req.query.type;
10-
11+
1112
let response;
1213

1314
switch (type) {
15+
case 'course':
16+
response = await config.service.getCourseDetails({
17+
filter: JSON.parse(req.query.filter),
18+
});
19+
break;
1420
case 'homepage':
1521
default:
1622
response = await config.service.getDiscoveryItemsForHomepage({});

src/service/factory.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import migrationsServiceFactory from '@js-migrations/core/dist/factory';
22
import FactoryConfig from './FactoryConfig';
33
import authFactory from './functions/auth/factory';
4+
import getCourseDetails from './functions/getCourseDetails';
45
import getDiscoveryItemsForHomepage from './functions/getDiscoveryItemsForHomepage';
56
import hasPermission from './functions/hasPermission';
67
import assignRolePermission from './functions/roles/assignRolePermission';
@@ -16,6 +17,7 @@ export default (config: FactoryConfig) => ({
1617
closeDbConnection: config.repo.closeDbConnection,
1718
courses: config.repo.courses,
1819
enrolments: config.repo.enrolments,
20+
getCourseDetails: getCourseDetails(config),
1921
getDiscoveryItemsForHomepage: getDiscoveryItemsForHomepage(config),
2022
hasPermission: hasPermission(config),
2123
migrations: migrationsServiceFactory({
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import { Filter, ItemNotFoundError } from '@js-items/foundation';
2+
import _pluck from 'ramda/src/pluck';
3+
import Course from '../../../types/items/Course';
4+
import Config from '../../FactoryConfig';
5+
6+
export interface Options {
7+
readonly filter: Filter<Course>;
8+
}
9+
10+
export default ({ repo }: Config) => async ({ filter }: Options) => {
11+
const { items: courses } = await repo.courses.getItems({
12+
filter,
13+
});
14+
15+
if (courses.length === 0) {
16+
throw new ItemNotFoundError('Course');
17+
}
18+
19+
const course = courses[0];
20+
21+
const { item: category } = await repo.categories.getItem({
22+
id: course.categoryId,
23+
});
24+
25+
const { item: user } = await repo.users.getItem({
26+
id: course.userId,
27+
});
28+
29+
return {
30+
course: {
31+
...course,
32+
category,
33+
user,
34+
},
35+
};
36+
};

0 commit comments

Comments
 (0)