@kth/om-kursen-ladok-client 1.3.12 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/dist/attributVardenConstants.d.ts +1 -0
  2. package/dist/attributVardenConstants.js +12 -1
  3. package/dist/attributVardenConstants.js.map +1 -1
  4. package/dist/createApiClient.js +6 -4
  5. package/dist/createApiClient.js.map +1 -1
  6. package/dist/mapCourse.d.ts +2 -1
  7. package/dist/mapCourse.js +5 -3
  8. package/dist/mapCourse.js.map +1 -1
  9. package/dist/mapCourseSyllabus.d.ts +8 -6
  10. package/dist/mapCourseSyllabus.js +10 -4
  11. package/dist/mapCourseSyllabus.js.map +1 -1
  12. package/dist/mapPartOfProgramme.js +7 -4
  13. package/dist/mapPartOfProgramme.js.map +1 -1
  14. package/dist/mapProgramInstans.d.ts +2 -2
  15. package/dist/mapProgramInstans.js +3 -3
  16. package/dist/mapProgramInstans.js.map +1 -1
  17. package/dist/mapProgramTerm.js +1 -1
  18. package/dist/mapProgramTerm.js.map +1 -1
  19. package/dist/mapProgramTillfalle.d.ts +1 -1
  20. package/dist/mapProgramTillfalle.js +3 -3
  21. package/dist/mapProgramTillfalle.js.map +1 -1
  22. package/dist/mapSearchResult.d.ts +1 -0
  23. package/dist/mapSearchResult.js +11 -9
  24. package/dist/mapSearchResult.js.map +1 -1
  25. package/dist/search/createSearchApi.js +40 -22
  26. package/dist/search/createSearchApi.js.map +1 -1
  27. package/dist/search/types.d.ts +5 -0
  28. package/dist/search/utbildningsTypIdConstants.d.ts +20 -4
  29. package/dist/search/utbildningsTypIdConstants.js +17 -16
  30. package/dist/search/utbildningsTypIdConstants.js.map +1 -1
  31. package/dist/search/utils/educationalTypeUtils.d.ts +11 -0
  32. package/dist/search/utils/educationalTypeUtils.js +36 -0
  33. package/dist/search/utils/educationalTypeUtils.js.map +1 -0
  34. package/dist/search/utils/getAllEntitiesByUseOfContinuation.js +1 -1
  35. package/dist/search/utils/getLatestCompletedCourseVersions.d.ts +8 -0
  36. package/dist/search/utils/getLatestCompletedCourseVersions.js +20 -0
  37. package/dist/search/utils/getLatestCompletedCourseVersions.js.map +1 -0
  38. package/dist/search/utils/mapCourseVersionDTO.js +3 -3
  39. package/dist/search/utils/mapCourseVersionDTO.js.map +1 -1
  40. package/dist/search/utils/searchUtils.d.ts +12 -6
  41. package/dist/search/utils/searchUtils.js +84 -39
  42. package/dist/search/utils/searchUtils.js.map +1 -1
  43. package/dist/supportApis/createSupportApis.d.ts +16 -0
  44. package/dist/supportApis/createSupportApis.js +137 -0
  45. package/dist/supportApis/createSupportApis.js.map +1 -0
  46. package/dist/types/OmKursenLadokApiClient.d.ts +2 -0
  47. package/dist/utils/examinationModulesUtil.d.ts +2 -2
  48. package/dist/utils/examinationModulesUtil.js +9 -4
  49. package/dist/utils/examinationModulesUtil.js.map +1 -1
  50. package/dist/utils/partOfProgrammeUtil.js +6 -5
  51. package/dist/utils/partOfProgrammeUtil.js.map +1 -1
  52. package/dist/utils/programStrukturUtil.d.ts +3 -2
  53. package/dist/utils/programStrukturUtil.js +12 -10
  54. package/dist/utils/programStrukturUtil.js.map +1 -1
  55. package/dist/utils/programUtil.js +3 -3
  56. package/dist/utils/programUtil.js.map +1 -1
  57. package/dist/utils/studyYearUtil.d.ts +4 -3
  58. package/dist/utils/studyYearUtil.js +32 -15
  59. package/dist/utils/studyYearUtil.js.map +1 -1
  60. package/package.json +3 -3
@@ -11,7 +11,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.createSearchApi = void 0;
13
13
  const searchUtils_1 = require("./utils/searchUtils");
14
- const SearchError_1 = require("./SearchError");
15
14
  const getAllEntitiesByUseOfContinuation_1 = require("./utils/getAllEntitiesByUseOfContinuation");
16
15
  const mapSearchResult_1 = require("../mapSearchResult");
17
16
  const groupSearchResults_1 = require("../groupSearchResults");
@@ -22,17 +21,21 @@ const utils_1 = require("../utils");
22
21
  const mapCourseRoundSearchDTO_1 = require("./utils/mapCourseRoundSearchDTO");
23
22
  const mapCourseVersionDTO_1 = require("./utils/mapCourseVersionDTO");
24
23
  const typeChecking_1 = require("../utils/typeChecking");
24
+ const createSupportApis_1 = require("../supportApis/createSupportApis");
25
+ const getLatestCompletedCourseVersions_1 = require("./utils/getLatestCompletedCourseVersions");
25
26
  const createSearchApi = (ladokClient) => {
26
27
  return {
27
28
  searchCourses: (searchParams, language) => __awaiter(void 0, void 0, void 0, function* () {
28
29
  try {
29
- (0, searchUtils_1.validateSearchParams)(searchParams);
30
- const utbildningstyper = yield extractUtbildningstypItems(ladokClient.utbildningstyp()); // TODO: Use cached values
31
- const { requestQuery, filterPeriod } = (0, searchUtils_1.prepareSearchRequestQueryForKursTillfallen)(utbildningstyper, searchParams);
30
+ const cleanSearchParams = (0, searchUtils_1.validateAndCleanSearchParams)(searchParams);
31
+ const departmentList = yield getDepartmentList(ladokClient, language);
32
+ const { requestQuery, filterPeriod } = (0, searchUtils_1.prepareSearchRequestQueryForKursTillfallen)(cleanSearchParams, departmentList);
32
33
  const allCourses = yield (0, getAllEntitiesByUseOfContinuation_1.getAllEntitiesByUseOfContinuation)(ladokClient.sokKursTillfalleSlim, requestQuery);
33
34
  const mappedCourses = allCourses.map(course => (0, mapSearchResult_1.mapKursTillfalleResult)(course, language));
34
35
  const groupedCourses = (0, groupSearchResults_1.groupSearchResults)(mappedCourses, filterPeriod);
35
- const courseRoundSearchDTOs = groupedCourses.map(mapCourseRoundSearchDTO_1.mapCourseRoundSearchDTO);
36
+ // TODO Remove this once we have a query parameter to filter for miljö courses
37
+ const courseVersionsToShow = possiblyFilterByMiljo(groupedCourses, cleanSearchParams.onlyMHU);
38
+ const courseRoundSearchDTOs = courseVersionsToShow.map(mapCourseRoundSearchDTO_1.mapCourseRoundSearchDTO);
36
39
  return { searchHits: courseRoundSearchDTOs };
37
40
  }
38
41
  catch (error) {
@@ -45,16 +48,18 @@ const createSearchApi = (ladokClient) => {
45
48
  }),
46
49
  searchCourseVersions: (searchParams, language) => __awaiter(void 0, void 0, void 0, function* () {
47
50
  try {
48
- (0, searchUtils_1.validateSearchParams)(searchParams);
49
- const requestQueryForKursInstans = (0, searchUtils_1.prepareSearchRequestQueryForKursInstans)(searchParams);
51
+ const cleanSearchParams = (0, searchUtils_1.validateAndCleanSearchParams)(searchParams);
52
+ const departmentList = yield getDepartmentList(ladokClient, language);
53
+ cleanSearchParams.kodEllerBenamning = '*';
54
+ const requestQueryForKursInstans = (0, searchUtils_1.prepareSearchRequestQueryForKursInstans)(cleanSearchParams, departmentList);
50
55
  const allCourseVersions = yield (0, getAllEntitiesByUseOfContinuation_1.getAllEntitiesByUseOfContinuation)(ladokClient.sokUtbildningsInstansSlim, requestQueryForKursInstans);
51
56
  const gradingScalesCodes = yield (0, gradingScalesUtils_1.getGradingScalesCodes)(ladokClient); // TODO: Use cached values
52
57
  const allMappedCourseVersions = allCourseVersions.map(courseVersion => (0, mapCourse_1.mapCourse)(courseVersion, language, gradingScalesCodes));
53
58
  const latestCourseVersions = findLatestCourseVersions(allMappedCourseVersions);
54
- // TODO Benni filter out latestCourses if they only have one version
55
- // TODO Benni add status to CourseVersion
56
- const latestApprovedCourses = latestCourseVersions;
57
- const courseVersionDTOs = latestApprovedCourses.map(mapCourseVersionDTO_1.mapCourseVersionDTO);
59
+ const latestApprovedCourses = (0, getLatestCompletedCourseVersions_1.getLatestCompletedCourseVersions)(latestCourseVersions);
60
+ // TODO Remove this once we have a query parameter to filter for miljö courses
61
+ const courseVersionsToShow = possiblyFilterByMiljo(latestApprovedCourses, cleanSearchParams.onlyMHU);
62
+ const courseVersionDTOs = courseVersionsToShow.map(mapCourseVersionDTO_1.mapCourseVersionDTO);
58
63
  return { searchHits: courseVersionDTOs };
59
64
  }
60
65
  catch (error) {
@@ -68,20 +73,18 @@ const createSearchApi = (ladokClient) => {
68
73
  };
69
74
  };
70
75
  exports.createSearchApi = createSearchApi;
76
+ // TODO Remove this once we have a query parameter to filter for miljö courses
71
77
  /**
72
- * This function extracts the utbildningstyp items from the API response.
73
- * It throws an error if the response is invalid or if the data is not present.
74
- * @param utbildningstypApiCall
78
+ * If onlyMHU is true, this function filters the courses to only include those that have the flag isMiljo set to true.
79
+ * @param courses
80
+ * @param onlyMHU
75
81
  * @returns
76
82
  */
77
- const extractUtbildningstypItems = (utbildningstypApiCall) => __awaiter(void 0, void 0, void 0, function* () {
78
- const utbildningstypResponse = yield utbildningstypApiCall;
79
- // TODO Benni: this can be refactored more, e.g. enum for type
80
- if (utbildningstypResponse.type === 'error' || !(utbildningstypResponse === null || utbildningstypResponse === void 0 ? void 0 : utbildningstypResponse.data)) {
81
- throw SearchError_1.SearchError.unknown(`Failed to fetch valid utbildningstyp data: ${utbildningstypResponse.responseInfo.message}`);
82
- }
83
- return utbildningstypResponse.data.Utbildningstyp;
84
- });
83
+ const possiblyFilterByMiljo = (courses, onlyMHU = false) => {
84
+ if (!onlyMHU)
85
+ return courses;
86
+ return courses.filter(course => course.isMiljo);
87
+ };
85
88
  // TODO Benni: refactor or remove this function if it is not needed anymore (basically a failsafe)
86
89
  /**
87
90
  * This function takes an array of courseVersions, groups them by their kod, and finds the latest version of each course.
@@ -104,4 +107,19 @@ const findLatestCourseVersions = (courseVersions) => {
104
107
  .filter(typeChecking_1.isDefined);
105
108
  return latestDefinedCourses;
106
109
  };
110
+ /**
111
+ * This function retrieves a list of SchoolWithDepartments from ladok
112
+ * @param ladokClient
113
+ * @param language
114
+ * @returns
115
+ */
116
+ const getDepartmentList = (ladokClient, language) => __awaiter(void 0, void 0, void 0, function* () {
117
+ const supportAPI = (0, createSupportApis_1.createSupportApi)(ladokClient);
118
+ const [currentDepartmentList, deprecatedDepartmentList] = yield Promise.all([
119
+ supportAPI.createDepartmentList(language),
120
+ supportAPI.createDepartmentList(language, true),
121
+ ]);
122
+ const departmentList = [...currentDepartmentList, ...deprecatedDepartmentList];
123
+ return departmentList;
124
+ });
107
125
  //# sourceMappingURL=createSearchApi.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"createSearchApi.js","sourceRoot":"","sources":["../../src/search/createSearchApi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"createSearchApi.js","sourceRoot":"","sources":["../../src/search/createSearchApi.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { EducationalLevelCode } from '@kth/ladok-attributvarde-utils';
1
2
  import { Language } from '../utils';
2
3
  export type SearchApi = {
3
4
  searchCourses: (searchParams: SearchParams, language: Language) => Promise<SearchCourseResponse<CourseRoundSearchDTO>>;
@@ -14,6 +15,10 @@ export type SearchParams = {
14
15
  avvecklad?: string;
15
16
  startPeriod?: string[];
16
17
  utbildningsniva?: string[];
18
+ onlyMHU?: boolean;
19
+ };
20
+ export type CleanSearchParams = Omit<SearchParams, 'utbildningsniva'> & {
21
+ utbildningsniva?: EducationalLevelCode[];
17
22
  };
18
23
  export type CourseVersionDTO = {
19
24
  kod: string;
@@ -1,7 +1,23 @@
1
- /**
2
- * The utbildningstyp Ids that we are interested in when searching for courseVersions.
3
- */
4
- export declare const VERSION_UTBILDNINGSTYP_IDS: string;
1
+ export declare const VERSION_UTBILDNINGSTYP_IDS_BASIC: {
2
+ ID: number;
3
+ Kod: string;
4
+ }[];
5
+ export declare const VERSION_UTBILDNINGSTYP_IDS_ADVANCED: {
6
+ ID: number;
7
+ Kod: string;
8
+ }[];
9
+ export declare const VERSION_UTBILDNINGSTYP_IDS_PREPARATORY: {
10
+ ID: number;
11
+ Kod: string;
12
+ }[];
13
+ export declare const VERSION_UTUBILDNINGSTYP_IDS_RESEARCH: {
14
+ ID: number;
15
+ Kod: string;
16
+ }[];
17
+ export declare const VERSION_UTBILDNINGSTYP_IDS_UPPDRAG: {
18
+ ID: number;
19
+ Kod: string;
20
+ }[];
5
21
  /**
6
22
  * The utbildningstyp Ids that we are interested in when searching for courseInstances.
7
23
  */
@@ -1,21 +1,22 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.INSTANCE_UTBILDNINGSTYP_IDS = exports.VERSION_UTBILDNINGSTYP_IDS = void 0;
4
- /**
5
- * The utbildningstyp Ids that we are interested in when searching for courseVersions.
6
- */
7
- exports.VERSION_UTBILDNINGSTYP_IDS = [
8
- 22, // 2007GKURS
9
- 24, // 2007AKURS
10
- 101378, // FUPKURS
11
- 101954, // 2007FKURS (forskar)
12
- 101992, // UPHPGKURS
13
- 101993, // UPHPAKURS
14
- 102006, // UPVKURS (veckor)
15
- 105630, // 0793GKURS
16
- 105631, // 0793AKURS
17
- 121910, // 20073KURS (forskar)
18
- ].join(',');
3
+ exports.INSTANCE_UTBILDNINGSTYP_IDS = exports.VERSION_UTBILDNINGSTYP_IDS_UPPDRAG = exports.VERSION_UTUBILDNINGSTYP_IDS_RESEARCH = exports.VERSION_UTBILDNINGSTYP_IDS_PREPARATORY = exports.VERSION_UTBILDNINGSTYP_IDS_ADVANCED = exports.VERSION_UTBILDNINGSTYP_IDS_BASIC = void 0;
4
+ exports.VERSION_UTBILDNINGSTYP_IDS_BASIC = [
5
+ { ID: 22, Kod: '2007GKURS' },
6
+ { ID: 101992, Kod: 'UPHPGKURS' },
7
+ { ID: 105630, Kod: '0793GKURS' },
8
+ ];
9
+ exports.VERSION_UTBILDNINGSTYP_IDS_ADVANCED = [
10
+ { ID: 24, Kod: '2007AKURS' },
11
+ { ID: 101993, Kod: 'UPHPAKURS' },
12
+ { ID: 105631, Kod: '0793AKURS' },
13
+ ];
14
+ exports.VERSION_UTBILDNINGSTYP_IDS_PREPARATORY = [{ ID: 101378, Kod: 'FUPKURS' }];
15
+ exports.VERSION_UTUBILDNINGSTYP_IDS_RESEARCH = [
16
+ { ID: 101954, Kod: '2007FKURS' },
17
+ { ID: 121910, Kod: '20073KURS' },
18
+ ];
19
+ exports.VERSION_UTBILDNINGSTYP_IDS_UPPDRAG = [{ ID: 102006, Kod: 'UPVKURS' }];
19
20
  /**
20
21
  * The utbildningstyp Ids that we are interested in when searching for courseInstances.
21
22
  */
@@ -1 +1 @@
1
- {"version":3,"file":"utbildningsTypIdConstants.js","sourceRoot":"","sources":["../../src/search/utbildningsTypIdConstants.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACU,QAAA,0BAA0B,GAAG;IACxC,EAAE,EAAE,YAAY;IAChB,EAAE,EAAE,YAAY;IAChB,MAAM,EAAE,UAAU;IAClB,MAAM,EAAE,sBAAsB;IAC9B,MAAM,EAAE,YAAY;IACpB,MAAM,EAAE,YAAY;IACpB,MAAM,EAAE,oBAAoB;IAC5B,MAAM,EAAE,YAAY;IACpB,MAAM,EAAE,YAAY;IACpB,MAAM,EAAE,sBAAsB;CAC/B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAEX;;GAEG;AACU,QAAA,2BAA2B,GAAG;IACzC,MAAM,EAAE,SAAS;IACjB,EAAE,EAAE,UAAU;IACd,MAAM,EAAE,qBAAqB;IAC7B,MAAM,EAAE,UAAU;IAClB,MAAM,EAAE,kBAAkB;IAC1B,MAAM,EAAE,UAAU;IAClB,MAAM,EAAE,qBAAqB;CAC9B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAEX,MAAM,kCAAkC,GAAG;IACzC,MAAM,EAAE,sBAAsB;IAC9B,MAAM,EAAE,sBAAsB;CAC/B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAEX,MAAM,mCAAmC,GAAG;IAC1C,MAAM,EAAE,sBAAsB;IAC9B,MAAM,EAAE,qBAAqB;CAC9B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA"}
1
+ {"version":3,"file":"utbildningsTypIdConstants.js","sourceRoot":"","sources":["../../src/search/utbildningsTypIdConstants.ts"],"names":[],"mappings":";;;AAAa,QAAA,gCAAgC,GAAG;IAC9C,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE;IAC5B,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE;IAChC,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE;CACjC,CAAA;AAEY,QAAA,mCAAmC,GAAG;IACjD,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE;IAC5B,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE;IAChC,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE;CACjC,CAAA;AAEY,QAAA,sCAAsC,GAAG,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAA;AAEzE,QAAA,oCAAoC,GAAG;IAClD,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE;IAChC,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE;CACjC,CAAA;AAEY,QAAA,kCAAkC,GAAG,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAA;AAElF;;GAEG;AACU,QAAA,2BAA2B,GAAG;IACzC,MAAM,EAAE,SAAS;IACjB,EAAE,EAAE,UAAU;IACd,MAAM,EAAE,qBAAqB;IAC7B,MAAM,EAAE,UAAU;IAClB,MAAM,EAAE,kBAAkB;IAC1B,MAAM,EAAE,UAAU;IAClB,MAAM,EAAE,qBAAqB;CAC9B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAEX,MAAM,kCAAkC,GAAG;IACzC,MAAM,EAAE,sBAAsB;IAC9B,MAAM,EAAE,sBAAsB;CAC/B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAEX,MAAM,mCAAmC,GAAG;IAC1C,MAAM,EAAE,sBAAsB;IAC9B,MAAM,EAAE,qBAAqB;CAC9B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA"}
@@ -0,0 +1,11 @@
1
+ import { EducationalLevelCode } from '@kth/ladok-attributvarde-utils';
2
+ export declare const getAllVersionUtbildningstyperIDs: () => number[];
3
+ /**
4
+ * Returns the version utbildningstyper for the given educational levels.
5
+ * @param educationalLevels
6
+ * @returns
7
+ */
8
+ export declare const getVersionUtbildningstyperForEducationalLevels: (educationalLevels: EducationalLevelCode[]) => {
9
+ ID: number;
10
+ Kod: string;
11
+ }[];
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getVersionUtbildningstyperForEducationalLevels = exports.getAllVersionUtbildningstyperIDs = void 0;
4
+ const ladok_attributvarde_utils_1 = require("@kth/ladok-attributvarde-utils");
5
+ const utbildningsTypIdConstants_1 = require("../utbildningsTypIdConstants");
6
+ const getAllVersionUtbildningstyperIDs = () => {
7
+ return [
8
+ ...utbildningsTypIdConstants_1.VERSION_UTBILDNINGSTYP_IDS_PREPARATORY,
9
+ ...utbildningsTypIdConstants_1.VERSION_UTBILDNINGSTYP_IDS_BASIC,
10
+ ...utbildningsTypIdConstants_1.VERSION_UTBILDNINGSTYP_IDS_ADVANCED,
11
+ ...utbildningsTypIdConstants_1.VERSION_UTUBILDNINGSTYP_IDS_RESEARCH,
12
+ ...utbildningsTypIdConstants_1.VERSION_UTBILDNINGSTYP_IDS_UPPDRAG,
13
+ ].map(utbildningstyp => utbildningstyp.ID);
14
+ };
15
+ exports.getAllVersionUtbildningstyperIDs = getAllVersionUtbildningstyperIDs;
16
+ /**
17
+ * Returns the version utbildningstyper for the given educational levels.
18
+ * @param educationalLevels
19
+ * @returns
20
+ */
21
+ const getVersionUtbildningstyperForEducationalLevels = (educationalLevels) => {
22
+ return educationalLevels.flatMap(level => {
23
+ switch (level) {
24
+ case ladok_attributvarde_utils_1.EducationalLevelCode.Preparatory:
25
+ return utbildningsTypIdConstants_1.VERSION_UTBILDNINGSTYP_IDS_PREPARATORY;
26
+ case ladok_attributvarde_utils_1.EducationalLevelCode.Basic:
27
+ return utbildningsTypIdConstants_1.VERSION_UTBILDNINGSTYP_IDS_BASIC;
28
+ case ladok_attributvarde_utils_1.EducationalLevelCode.Advanced:
29
+ return utbildningsTypIdConstants_1.VERSION_UTBILDNINGSTYP_IDS_ADVANCED;
30
+ case ladok_attributvarde_utils_1.EducationalLevelCode.Research:
31
+ return utbildningsTypIdConstants_1.VERSION_UTUBILDNINGSTYP_IDS_RESEARCH;
32
+ }
33
+ });
34
+ };
35
+ exports.getVersionUtbildningstyperForEducationalLevels = getVersionUtbildningstyperForEducationalLevels;
36
+ //# sourceMappingURL=educationalTypeUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"educationalTypeUtils.js","sourceRoot":"","sources":["../../../src/search/utils/educationalTypeUtils.ts"],"names":[],"mappings":";;;AAAA,8EAAqE;AACrE,4EAMqC;AAE9B,MAAM,gCAAgC,GAAG,GAAa,EAAE;IAC7D,OAAO;QACL,GAAG,kEAAsC;QACzC,GAAG,4DAAgC;QACnC,GAAG,+DAAmC;QACtC,GAAG,gEAAoC;QACvC,GAAG,8DAAkC;KACtC,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,CAAA;AAC5C,CAAC,CAAA;AARY,QAAA,gCAAgC,oCAQ5C;AAED;;;;GAIG;AACI,MAAM,8CAA8C,GAAG,CAAC,iBAAyC,EAAE,EAAE;IAC1G,OAAO,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACvC,QAAQ,KAAK,EAAE,CAAC;YACd,KAAK,gDAAoB,CAAC,WAAW;gBACnC,OAAO,kEAAsC,CAAA;YAC/C,KAAK,gDAAoB,CAAC,KAAK;gBAC7B,OAAO,4DAAgC,CAAA;YACzC,KAAK,gDAAoB,CAAC,QAAQ;gBAChC,OAAO,+DAAmC,CAAA;YAC5C,KAAK,gDAAoB,CAAC,QAAQ;gBAChC,OAAO,gEAAoC,CAAA;QAC/C,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAbY,QAAA,8CAA8C,kDAa1D"}
@@ -11,7 +11,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.getAllEntitiesByUseOfContinuation = void 0;
13
13
  const SearchError_1 = require("../SearchError");
14
- const MAX_SEARCH_RESULTS_TO_RETURN = 250; // TODO Benni, make sure to adjust this. We do not want to have more than 250 results in the UI, but here it could be more
14
+ const MAX_SEARCH_RESULTS_TO_RETURN = 300; // TODO Benni, make sure to adjust this. We do not want to have more than 250 results in the UI, but here it could be more
15
15
  const MAX_CONTINUATION_ITERATIONS = 4;
16
16
  const getAllEntitiesByUseOfContinuation = (apiCall, requestQuery) => __awaiter(void 0, void 0, void 0, function* () {
17
17
  var _a;
@@ -0,0 +1,8 @@
1
+ import { Course } from '../../mapCourse';
2
+ /**
3
+ * Returns only course versions that have been completed at least once.
4
+ * This means that the versionsnummer is greater than 1 or if it is 1, the ladokStatusCode is Complete.
5
+ * @param courseVersions
6
+ * @returns
7
+ */
8
+ export declare const getLatestCompletedCourseVersions: <T extends Pick<Course, "versionsnummer" | "ladokStatusCode">>(courseVersions: T[]) => T[];
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getLatestCompletedCourseVersions = void 0;
4
+ const ladok_attributvarde_utils_1 = require("@kth/ladok-attributvarde-utils");
5
+ /**
6
+ * Returns only course versions that have been completed at least once.
7
+ * This means that the versionsnummer is greater than 1 or if it is 1, the ladokStatusCode is Complete.
8
+ * @param courseVersions
9
+ * @returns
10
+ */
11
+ const getLatestCompletedCourseVersions = (courseVersions) => {
12
+ return courseVersions.filter(course => {
13
+ const versionsnummer = parseInt(course.versionsnummer, 10);
14
+ if (course.ladokStatusCode === ladok_attributvarde_utils_1.LadokStatusCode.Complete)
15
+ return true;
16
+ return versionsnummer > 1; // If a versionnummer is greater than 1, there once has been at least one completed version
17
+ });
18
+ };
19
+ exports.getLatestCompletedCourseVersions = getLatestCompletedCourseVersions;
20
+ //# sourceMappingURL=getLatestCompletedCourseVersions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getLatestCompletedCourseVersions.js","sourceRoot":"","sources":["../../../src/search/utils/getLatestCompletedCourseVersions.ts"],"names":[],"mappings":";;;AAAA,8EAAgE;AAGhE;;;;;GAKG;AACI,MAAM,gCAAgC,GAAG,CAC9C,cAAmB,EACd,EAAE;IACP,OAAO,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;QACpC,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE,CAAC,CAAA;QAE1D,IAAI,MAAM,CAAC,eAAe,KAAK,2CAAe,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAA;QAEpE,OAAO,cAAc,GAAG,CAAC,CAAA,CAAC,2FAA2F;IACvH,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAVY,QAAA,gCAAgC,oCAU5C"}
@@ -2,12 +2,12 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.mapCourseVersionDTO = void 0;
4
4
  const mapCourseVersionDTO = (courseVersion) => {
5
- var _a, _b;
5
+ var _a, _b, _c;
6
6
  return {
7
7
  kod: courseVersion.kod,
8
- benamning: courseVersion.benamning,
8
+ benamning: (_a = courseVersion === null || courseVersion === void 0 ? void 0 : courseVersion.benamning) !== null && _a !== void 0 ? _a : '',
9
9
  omfattning: courseVersion.omfattning.formattedWithUnit,
10
- utbildningstyp: (_b = (_a = courseVersion.utbildningstyp) === null || _a === void 0 ? void 0 : _a.level.name) !== null && _b !== void 0 ? _b : '',
10
+ utbildningstyp: (_c = (_b = courseVersion.utbildningstyp) === null || _b === void 0 ? void 0 : _b.level.name) !== null && _c !== void 0 ? _c : '',
11
11
  };
12
12
  };
13
13
  exports.mapCourseVersionDTO = mapCourseVersionDTO;
@@ -1 +1 @@
1
- {"version":3,"file":"mapCourseVersionDTO.js","sourceRoot":"","sources":["../../../src/search/utils/mapCourseVersionDTO.ts"],"names":[],"mappings":";;;AAGO,MAAM,mBAAmB,GAAG,CAAC,aAAqB,EAAoB,EAAE;;IAC7E,OAAO;QACL,GAAG,EAAE,aAAa,CAAC,GAAG;QACtB,SAAS,EAAE,aAAa,CAAC,SAAS;QAClC,UAAU,EAAE,aAAa,CAAC,UAAU,CAAC,iBAAiB;QACtD,cAAc,EAAE,MAAA,MAAA,aAAa,CAAC,cAAc,0CAAE,KAAK,CAAC,IAAI,mCAAI,EAAE;KAC/D,CAAA;AACH,CAAC,CAAA;AAPY,QAAA,mBAAmB,uBAO/B"}
1
+ {"version":3,"file":"mapCourseVersionDTO.js","sourceRoot":"","sources":["../../../src/search/utils/mapCourseVersionDTO.ts"],"names":[],"mappings":";;;AAGO,MAAM,mBAAmB,GAAG,CAAC,aAAqB,EAAoB,EAAE;;IAC7E,OAAO;QACL,GAAG,EAAE,aAAa,CAAC,GAAG;QACtB,SAAS,EAAE,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,SAAS,mCAAI,EAAE;QACzC,UAAU,EAAE,aAAa,CAAC,UAAU,CAAC,iBAAiB;QACtD,cAAc,EAAE,MAAA,MAAA,aAAa,CAAC,cAAc,0CAAE,KAAK,CAAC,IAAI,mCAAI,EAAE;KAC/D,CAAA;AACH,CAAC,CAAA;AAPY,QAAA,mBAAmB,uBAO/B"}
@@ -1,12 +1,18 @@
1
- import { SokUtbildningsInstansSlimQuery, UtbildningstypItem } from '@kth/ladok-mellanlager-client';
2
- import { RequestQuery, SearchParams } from '../types';
1
+ import { SokUtbildningsInstansSlimQuery, SokUtbildningsTillfalleSlimQuery } from '@kth/ladok-mellanlager-client';
2
+ import { CleanSearchParams, SearchParams } from '../types';
3
+ import { SchoolWithDepartments } from '../../supportApis/createSupportApis';
3
4
  /**
5
+ * Validates and cleans the search parameters for the search API.
4
6
  * Throws an error if the searchParams are invalid.
5
7
  * @param searchParams
8
+ * @returns
9
+ * @throws SearchError
10
+ * - noRestrictions: if no search parameters are provided
11
+ * - kodEllerBenamning: if kodEllerBenamning is provided but less than 3 characters
6
12
  */
7
- export declare const validateSearchParams: (searchParams: SearchParams) => void;
8
- export declare const prepareSearchRequestQueryForKursTillfallen: (utbildningstyper: UtbildningstypItem[], searchParams: SearchParams) => {
9
- requestQuery: RequestQuery;
13
+ export declare const validateAndCleanSearchParams: (searchParams: SearchParams) => CleanSearchParams;
14
+ export declare const prepareSearchRequestQueryForKursTillfallen: (searchParams: CleanSearchParams, schoolsWithDepartments: SchoolWithDepartments[]) => {
15
+ requestQuery: NonNullable<SokUtbildningsTillfalleSlimQuery>;
10
16
  filterPeriod: boolean;
11
17
  };
12
- export declare const prepareSearchRequestQueryForKursInstans: (searchParams: SearchParams) => NonNullable<SokUtbildningsInstansSlimQuery>;
18
+ export declare const prepareSearchRequestQueryForKursInstans: (searchParams: CleanSearchParams, schoolsWithDepartments: SchoolWithDepartments[]) => NonNullable<SokUtbildningsInstansSlimQuery>;
@@ -1,72 +1,117 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.prepareSearchRequestQueryForKursInstans = exports.prepareSearchRequestQueryForKursTillfallen = exports.validateSearchParams = void 0;
3
+ exports.prepareSearchRequestQueryForKursInstans = exports.prepareSearchRequestQueryForKursTillfallen = exports.validateAndCleanSearchParams = void 0;
4
4
  const SearchError_1 = require("../SearchError");
5
5
  const utils_1 = require("../../utils");
6
6
  const ladok_attributvarde_utils_1 = require("@kth/ladok-attributvarde-utils");
7
7
  const utbildningsTypIdConstants_1 = require("../utbildningsTypIdConstants");
8
8
  const attributVardenConstants_1 = require("../../attributVardenConstants");
9
+ const educationalTypeUtils_1 = require("./educationalTypeUtils");
10
+ const typeChecking_1 = require("../../utils/typeChecking");
9
11
  /**
12
+ * Validates and cleans the search parameters for the search API.
10
13
  * Throws an error if the searchParams are invalid.
11
14
  * @param searchParams
15
+ * @returns
16
+ * @throws SearchError
17
+ * - noRestrictions: if no search parameters are provided
18
+ * - kodEllerBenamning: if kodEllerBenamning is provided but less than 3 characters
12
19
  */
13
- const validateSearchParams = (searchParams) => {
14
- const { kodEllerBenamning, organisation, sprak, startPeriod, utbildningsniva, avvecklad } = searchParams;
15
- if (!avvecklad && !kodEllerBenamning && !organisation && !sprak && !startPeriod && !utbildningsniva) {
20
+ const validateAndCleanSearchParams = (searchParams) => {
21
+ const { kodEllerBenamning, organisation, sprak, startPeriod, utbildningsniva: rawUtbildningsniva, avvecklad, onlyMHU, } = searchParams;
22
+ // TODO add onlyMHU here as well once we have a query parameter to filter for miljö courses
23
+ if (!avvecklad && !kodEllerBenamning && !organisation && !sprak && !startPeriod && !rawUtbildningsniva) {
16
24
  throw SearchError_1.SearchError.noRestrictions();
17
25
  }
18
26
  if (kodEllerBenamning && kodEllerBenamning.length < 3) {
19
27
  throw SearchError_1.SearchError.kodEllerBenamning();
20
28
  }
29
+ const utbildningsniva = rawUtbildningsniva ? cleanUtbildningsnivaParam(rawUtbildningsniva) : undefined;
30
+ return {
31
+ kodEllerBenamning,
32
+ organisation,
33
+ sprak,
34
+ startPeriod,
35
+ utbildningsniva,
36
+ avvecklad,
37
+ onlyMHU,
38
+ };
39
+ };
40
+ exports.validateAndCleanSearchParams = validateAndCleanSearchParams;
41
+ const cleanUtbildningsnivaParam = (utbildningsniva) => {
42
+ const mappedUtbildningsniva = utbildningsniva.map(mapUtbildningsniva);
43
+ return mappedUtbildningsniva.filter(typeChecking_1.isDefined);
44
+ };
45
+ const mapUtbildningsniva = (utbildningsniva) => {
46
+ switch (utbildningsniva) {
47
+ case ladok_attributvarde_utils_1.EducationalLevelCode.Preparatory:
48
+ return ladok_attributvarde_utils_1.EducationalLevelCode.Preparatory;
49
+ case ladok_attributvarde_utils_1.EducationalLevelCode.Advanced:
50
+ return ladok_attributvarde_utils_1.EducationalLevelCode.Advanced;
51
+ case ladok_attributvarde_utils_1.EducationalLevelCode.Basic:
52
+ return ladok_attributvarde_utils_1.EducationalLevelCode.Basic;
53
+ case ladok_attributvarde_utils_1.EducationalLevelCode.Research:
54
+ return ladok_attributvarde_utils_1.EducationalLevelCode.Research;
55
+ default:
56
+ return undefined;
57
+ }
21
58
  };
22
- exports.validateSearchParams = validateSearchParams;
23
59
  const MAX_ANTAL_TRAFFAR = '100';
24
60
  // TODO Benni, maybe this does not make things cleaner, observe
25
61
  // TODO Benni don't forget this when cleaning up types on query object
26
62
  const DEFAULT_INSTANCE_QUERY_PARAMS = {
27
63
  attributVarden: attributVardenConstants_1.ATTRIBUT_VARDEN_FOR_COURSE_ROUNDS_SEARCH,
28
- instansAttributVarden: 'utbildningstyp',
64
+ instansAttributVarden: attributVardenConstants_1.INSTANS_ATTRIBUT_VARDEN_FOR_COURSE_ROUNDS_SEARCH,
29
65
  antalTraffar: MAX_ANTAL_TRAFFAR,
30
66
  };
31
- const prepareSearchRequestQueryForKursTillfallen = (utbildningstyper, searchParams) => {
67
+ const prepareSearchRequestQueryForKursTillfallen = (searchParams, schoolsWithDepartments) => {
32
68
  const { kodEllerBenamning, organisation, sprak, startPeriod, utbildningsniva, avvecklad } = searchParams;
33
- const educationalTypes = filterAndMapEducationalTypes({ utbildningsniva, utbildningstyper });
69
+ const educationalTypes = getUtbildningsnivaParameterForKursTillfalle(utbildningsniva);
70
+ const organisationsFilter = getOrganisationsFilter(schoolsWithDepartments, organisation);
34
71
  const filterPeriod = !Boolean(startPeriod);
35
- const requestQuery = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ kodEllerBenamning: kodEllerBenamning !== null && kodEllerBenamning !== void 0 ? kodEllerBenamning : '*' }, getStartPeriodOrTerminkodStart(startPeriod)), (educationalTypes && { utbildningsniva: educationalTypes.join(',') })), (organisation && { organisation })), (sprak && { sprak })), (avvecklad && { avvecklad })), DEFAULT_INSTANCE_QUERY_PARAMS), { utbildningstypid: utbildningsTypIdConstants_1.INSTANCE_UTBILDNINGSTYP_IDS });
72
+ const requestQuery = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ kodEllerBenamning: kodEllerBenamning !== null && kodEllerBenamning !== void 0 ? kodEllerBenamning : '*' }, getStartPeriodOrTerminkodStart(startPeriod)), (educationalTypes && { utbildningsniva: educationalTypes })), (organisationsFilter && { organisation: organisationsFilter })), (sprak && { sprak })), (avvecklad && { avvecklad })), DEFAULT_INSTANCE_QUERY_PARAMS), { utbildningstypid: utbildningsTypIdConstants_1.INSTANCE_UTBILDNINGSTYP_IDS });
36
73
  return { requestQuery, filterPeriod }; // TODO Benni this does two things, filterPeriod should probably be split out
37
74
  };
38
75
  exports.prepareSearchRequestQueryForKursTillfallen = prepareSearchRequestQueryForKursTillfallen;
39
- const prepareSearchRequestQueryForKursInstans = (searchParams) => ({
40
- kodEllerBenamning: searchParams.kodEllerBenamning,
41
- antalTraffar: MAX_ANTAL_TRAFFAR,
42
- avvecklad: 'false',
43
- utbildningstypgrundtyp: 'KURS',
44
- utbildningstypid: utbildningsTypIdConstants_1.VERSION_UTBILDNINGSTYP_IDS,
45
- instansAttributVarden: attributVardenConstants_1.ATTRIBUT_VARDEN_FOR_COURSE_VERSIONS,
46
- senasteversion: 'true',
47
- });
48
- exports.prepareSearchRequestQueryForKursInstans = prepareSearchRequestQueryForKursInstans;
49
- const filterAndMapEducationalTypes = ({ utbildningsniva, utbildningstyper: ladokTypes, }) => {
50
- if (!utbildningsniva)
51
- return [];
52
- const preparatoryTypes = [ladok_attributvarde_utils_1.EDUCATIONAL_TYPE_CODE_FOR_PREPARATORY_LEVEL]; // Hard coded
53
- const basicTypes = ladokTypes
54
- .filter(typ => String(typ.NivaInomStudieordningID) === ladok_attributvarde_utils_1.EducationalLevelCode.Basic)
55
- .map(x => x.Kod);
56
- const advancedTypes = ladokTypes
57
- .filter(typ => String(typ.NivaInomStudieordningID) === ladok_attributvarde_utils_1.EducationalLevelCode.Advanced)
58
- .map(x => x.Kod);
59
- const researchTypes = ladokTypes
60
- .filter(typ => String(typ.NivaInomStudieordningID) === ladok_attributvarde_utils_1.EducationalLevelCode.Research)
61
- .map(x => x.Kod);
62
- const levelMap = new Map([
63
- [ladok_attributvarde_utils_1.EducationalLevelCode.Preparatory, preparatoryTypes],
64
- [ladok_attributvarde_utils_1.EducationalLevelCode.Basic, basicTypes],
65
- [ladok_attributvarde_utils_1.EducationalLevelCode.Advanced, advancedTypes],
66
- [ladok_attributvarde_utils_1.EducationalLevelCode.Research, researchTypes],
67
- ]);
68
- return utbildningsniva === null || utbildningsniva === void 0 ? void 0 : utbildningsniva.flatMap(level => levelMap.get(level) || []);
76
+ /**
77
+ * Takes an array of educational levels and returns a comma-separated string of the corresponding utbildningstypKoder.
78
+ * @param educationalLevels
79
+ * @returns
80
+ */
81
+ const getUtbildningsnivaParameterForKursTillfalle = (educationalLevels) => {
82
+ if (!educationalLevels)
83
+ return undefined;
84
+ return getCommaSeparatedEducationalTypesInFormat('Kod', educationalLevels);
69
85
  };
86
+ /**
87
+ * Takes an array of educational levels and returns a comma-separated string of the corresponding utbildningstypIDn.
88
+ * @param educationalLevels
89
+ * @returns
90
+ */
91
+ const getUtbildningsnivaParameterForKursInstans = (educationalLevels) => {
92
+ if (!educationalLevels)
93
+ return (0, educationalTypeUtils_1.getAllVersionUtbildningstyperIDs)().join(',');
94
+ return getCommaSeparatedEducationalTypesInFormat('ID', educationalLevels);
95
+ };
96
+ const getCommaSeparatedEducationalTypesInFormat = (format, educationalLevels) => {
97
+ const selectedEducationalTypes = (0, educationalTypeUtils_1.getVersionUtbildningstyperForEducationalLevels)(educationalLevels);
98
+ const selectedEducationalTypeIdentifiers = selectedEducationalTypes.map(item => item[format]);
99
+ return selectedEducationalTypeIdentifiers.join(',');
100
+ };
101
+ const getOrganisationsFilter = (organisationer, organisation) => {
102
+ var _a, _b;
103
+ if (organisation && (organisation === null || organisation === void 0 ? void 0 : organisation.length) === 1) {
104
+ return ((_b = (_a = organisationer
105
+ .find(org => org.departmentPrefix === organisation)) === null || _a === void 0 ? void 0 : _a.departments.map(department => department.code).join(',')) !== null && _b !== void 0 ? _b : organisation);
106
+ }
107
+ return organisation;
108
+ };
109
+ const prepareSearchRequestQueryForKursInstans = (searchParams, schoolsWithDepartments) => {
110
+ const { kodEllerBenamning, avvecklad, organisation, utbildningsniva } = searchParams;
111
+ const organisationsFilter = getOrganisationsFilter(schoolsWithDepartments, organisation);
112
+ return Object.assign(Object.assign(Object.assign({ kodEllerBenamning: kodEllerBenamning !== null && kodEllerBenamning !== void 0 ? kodEllerBenamning : '*', antalTraffar: MAX_ANTAL_TRAFFAR }, (avvecklad && { avvecklad })), (organisationsFilter && { organisation: organisationsFilter })), { utbildningstypgrundtyp: 'KURS', utbildningstypid: getUtbildningsnivaParameterForKursInstans(utbildningsniva), instansAttributVarden: attributVardenConstants_1.ATTRIBUT_VARDEN_FOR_COURSE_VERSIONS, senasteversion: 'true' });
113
+ };
114
+ exports.prepareSearchRequestQueryForKursInstans = prepareSearchRequestQueryForKursInstans;
70
115
  /**
71
116
  * If startPeriod is defined, returns it as an object with startPeriod property and comma-separated values.
72
117
  * If not, returns an object with terminkodStart property and the default period.
@@ -1 +1 @@
1
- {"version":3,"file":"searchUtils.js","sourceRoot":"","sources":["../../../src/search/utils/searchUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"searchUtils.js","sourceRoot":"","sources":["../../../src/search/utils/searchUtils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { LadokMellanlagerApiClient } from '@kth/ladok-mellanlager-client';
2
+ import { Language } from '../utils';
3
+ export declare const createSupportApi: (ladokClient: LadokMellanlagerApiClient) => SupportApi;
4
+ export type SupportApi = {
5
+ createDepartmentList: (language: Language, deprecated?: boolean) => Promise<SchoolWithDepartments[]>;
6
+ };
7
+ type DepartmentFlat = {
8
+ name: string;
9
+ code: string;
10
+ };
11
+ export type SchoolWithDepartments = {
12
+ departmentPrefix: string;
13
+ name: string;
14
+ departments: DepartmentFlat[];
15
+ };
16
+ export {};