From a33ec6c452c4253fcfe09350109d000a89c8b0c3 Mon Sep 17 00:00:00 2001 From: Gerald Schmittinger Date: Tue, 1 Apr 2025 00:51:14 +0200 Subject: [PATCH] refactor(backend): RemoteResource-systeem dat vervangen werd door TanStack verwijderd. --- .../src/components/UsingRemoteResource.vue | 41 ------------------- .../api-client/endpoints/delete-endpoint.ts | 9 ---- .../api-client/endpoints/get-endpoint.ts | 9 ---- .../api-client/endpoints/get-html-endpoint.ts | 9 ---- .../api-client/endpoints/post-endpoint.ts | 9 ---- .../api-client/endpoints/rest-endpoint.ts | 28 ------------- .../services/api-client/remote-resource.ts | 37 ----------------- .../learning-object-service.ts | 28 ------------- .../learning-content/learning-path-service.ts | 23 ----------- 9 files changed, 193 deletions(-) delete mode 100644 frontend/src/components/UsingRemoteResource.vue delete mode 100644 frontend/src/services/api-client/endpoints/delete-endpoint.ts delete mode 100644 frontend/src/services/api-client/endpoints/get-endpoint.ts delete mode 100644 frontend/src/services/api-client/endpoints/get-html-endpoint.ts delete mode 100644 frontend/src/services/api-client/endpoints/post-endpoint.ts delete mode 100644 frontend/src/services/api-client/endpoints/rest-endpoint.ts delete mode 100644 frontend/src/services/api-client/remote-resource.ts delete mode 100644 frontend/src/services/learning-content/learning-object-service.ts delete mode 100644 frontend/src/services/learning-content/learning-path-service.ts diff --git a/frontend/src/components/UsingRemoteResource.vue b/frontend/src/components/UsingRemoteResource.vue deleted file mode 100644 index a33e327b..00000000 --- a/frontend/src/components/UsingRemoteResource.vue +++ /dev/null @@ -1,41 +0,0 @@ - - - - - diff --git a/frontend/src/services/api-client/endpoints/delete-endpoint.ts b/frontend/src/services/api-client/endpoints/delete-endpoint.ts deleted file mode 100644 index 0c01e55a..00000000 --- a/frontend/src/services/api-client/endpoints/delete-endpoint.ts +++ /dev/null @@ -1,9 +0,0 @@ -import {type Params, RestEndpoint} from "@/services/api-client/endpoints/rest-endpoint.ts"; - -export class DeleteEndpoint extends RestEndpoint { - readonly method = "GET"; - - public delete(pathParams: PP, queryParams: QP): Promise { - return super.request(pathParams, queryParams, undefined); - } -} diff --git a/frontend/src/services/api-client/endpoints/get-endpoint.ts b/frontend/src/services/api-client/endpoints/get-endpoint.ts deleted file mode 100644 index 4393e288..00000000 --- a/frontend/src/services/api-client/endpoints/get-endpoint.ts +++ /dev/null @@ -1,9 +0,0 @@ -import {type Params, RestEndpoint} from "@/services/api-client/endpoints/rest-endpoint.ts"; - -export class GetEndpoint extends RestEndpoint { - readonly method = "GET"; - - public get(pathParams: PP, queryParams: QP): Promise { - return super.request(pathParams, queryParams, undefined); - } -} diff --git a/frontend/src/services/api-client/endpoints/get-html-endpoint.ts b/frontend/src/services/api-client/endpoints/get-html-endpoint.ts deleted file mode 100644 index 9bb2e523..00000000 --- a/frontend/src/services/api-client/endpoints/get-html-endpoint.ts +++ /dev/null @@ -1,9 +0,0 @@ -import {type Params, RestEndpoint} from "@/services/api-client/endpoints/rest-endpoint.ts"; - -export class GetHtmlEndpoint extends RestEndpoint { - readonly method: "GET" | "POST" | "PUT" | "DELETE" = "GET"; - - public get(pathParams: PP, queryParams: QP): Promise { - return super.request(pathParams, queryParams, undefined, "document"); - } -} diff --git a/frontend/src/services/api-client/endpoints/post-endpoint.ts b/frontend/src/services/api-client/endpoints/post-endpoint.ts deleted file mode 100644 index 9b5fd96f..00000000 --- a/frontend/src/services/api-client/endpoints/post-endpoint.ts +++ /dev/null @@ -1,9 +0,0 @@ -import {type Params, RestEndpoint} from "@/services/api-client/endpoints/rest-endpoint.ts"; - -export class PostEndpoint extends RestEndpoint { - readonly method = "POST"; - - public post(pathParams: PP, queryParams: QP, body: B): Promise { - return super.request(pathParams, queryParams, body); - } -} diff --git a/frontend/src/services/api-client/endpoints/rest-endpoint.ts b/frontend/src/services/api-client/endpoints/rest-endpoint.ts deleted file mode 100644 index 4438214f..00000000 --- a/frontend/src/services/api-client/endpoints/rest-endpoint.ts +++ /dev/null @@ -1,28 +0,0 @@ -import apiClient from "@/services/api-client/api-client.ts"; -import {HttpErrorStatusException} from "@/services/api-client/api-exceptions.ts"; -import type {ResponseType} from "axios"; - -export abstract class RestEndpoint { - public abstract readonly method: "GET" | "POST" | "PUT" | "DELETE"; - constructor(public readonly url: string) { - } - - protected async request(pathParams: PP, queryParams: QP, body: B, responseType?: ResponseType): Promise { - let urlFilledIn = this.url.replace(/:(\w+)(\/|$)/g, (_, key, after) => - (pathParams[key] ? encodeURIComponent(pathParams[key]) : `:${key}`) + after - ); - const response = await apiClient.request({ - url: urlFilledIn, - method: this.method, - params: queryParams, - data: body, - responseType: responseType || 'json' - }); - if (response.status / 100 !== 2) { - throw new HttpErrorStatusException(response); - } - return response.data; - } -} - -export type Params = {[key: string]: string | number | boolean | undefined}; diff --git a/frontend/src/services/api-client/remote-resource.ts b/frontend/src/services/api-client/remote-resource.ts deleted file mode 100644 index 24982135..00000000 --- a/frontend/src/services/api-client/remote-resource.ts +++ /dev/null @@ -1,37 +0,0 @@ -import {type ShallowReactive, shallowReactive} from "vue"; - -export type NotLoadedState = { - type: "notLoaded" -}; -export type LoadingState = { - type: "loading" -}; -export type ErrorState = { - type: "error", - error: any -}; -export type SuccessState = { - type: "success", - data: T -}; -export type RemoteResourceState = NotLoadedState | LoadingState | ErrorState | SuccessState; - -export type RemoteResource = ShallowReactive<{ - state: RemoteResourceState -}>; - -export function remoteResource(): RemoteResource { - return shallowReactive({ - state: { - type: "notLoaded" - } - }); -} - -export function loadResource(resource: RemoteResource, promise: Promise): void { - resource.state = { type: "loading" } - promise.then( - data => resource.state = { type: "success", data }, - error => resource.state = { type: "error", error } - ); -} diff --git a/frontend/src/services/learning-content/learning-object-service.ts b/frontend/src/services/learning-content/learning-object-service.ts deleted file mode 100644 index d485375e..00000000 --- a/frontend/src/services/learning-content/learning-object-service.ts +++ /dev/null @@ -1,28 +0,0 @@ -import {GetEndpoint} from "@/services/api-client/endpoints/get-endpoint.ts"; -import type {LearningObject} from "@/data-objects/learning-object.ts"; -import type {Language} from "@/data-objects/language.ts"; -import {GetHtmlEndpoint} from "@/services/api-client/endpoints/get-html-endpoint.ts"; - -const getLearningObjectMetadataEndpoint = new GetEndpoint<{hruid: string}, {language: Language, version: number}, LearningObject>( - "/learningObject/:hruid" -); - -const getLearningObjectHtmlEndpoint = new GetHtmlEndpoint<{hruid: string}, {language: Language, version: number}>( - "/learningObject/:hruid/html" -); - -export function getLearningObjectMetadata( - hruid: string, - language: Language, - version: number -): Promise { - return getLearningObjectMetadataEndpoint.get({hruid}, {language, version}); -} - -export function getLearningObjectHTML( - hruid: string, - language: Language, - version: number -): Promise { - return getLearningObjectHtmlEndpoint.get({hruid}, {language, version}); -} diff --git a/frontend/src/services/learning-content/learning-path-service.ts b/frontend/src/services/learning-content/learning-path-service.ts deleted file mode 100644 index 1c5acffd..00000000 --- a/frontend/src/services/learning-content/learning-path-service.ts +++ /dev/null @@ -1,23 +0,0 @@ -import {GetEndpoint} from "@/services/api-client/endpoints/get-endpoint.ts"; -import {LearningPath, type LearningPathDTO} from "@/data-objects/learning-path.ts"; -import type {Language} from "@/data-objects/language.ts"; -import {single} from "@/utils/response-assertions.ts"; - -const learningPathEndpoint = new GetEndpoint< - {}, - {search?: string, hruid?: string, language?: Language, forGroup?: string, forStudent?: string}, - LearningPathDTO[] ->("/learningPath"); - -export async function searchLearningPaths(query: string): Promise { - let dtos = await learningPathEndpoint.get({}, {search: query}) - return dtos.map(dto => LearningPath.fromDTO(dto)); -} - -export async function getLearningPath(hruid: string, language: Language, options?: {forGroup?: string, forStudent?: string}): Promise { - let dtos = await learningPathEndpoint.get( - {}, - {hruid, language, forGroup: options?.forGroup, forStudent: options?.forStudent} - ); - return LearningPath.fromDTO(single(dtos)); -}