From e4d74fd630f51ecd2ad7d68c0c4fb7233e5da39d Mon Sep 17 00:00:00 2001 From: Ole Langbehn <ole.langbehn@inoio.de> Date: Wed, 6 Sep 2023 18:21:00 +0200 Subject: [PATCH] type safety \o/ --- app/server.ts | 38 ++++++++++++++++++------------------- app/voltastics_test_data.ts | 1 + 2 files changed, 20 insertions(+), 19 deletions(-) diff --git a/app/server.ts b/app/server.ts index 568c6a0..6efff9d 100644 --- a/app/server.ts +++ b/app/server.ts @@ -1,8 +1,13 @@ import { + CategoriesResponse, + CitiesResponse, EngagementOpportunitiesParameters, EngagementParameters, + EngagementResponse, EngagementsParameters, + EngagementsResponse, TrackEngagementViewParameters, + TrackEngagementViewResponse, } from "./types.ts"; import { createSchema, createYoga, serve, useResponseCache } from "./deps.ts"; import { @@ -85,7 +90,7 @@ const createResolvers = (config: ServerConfig) => ({ // deno-lint-ignore no-explicit-any _parent: any, parameters: EngagementOpportunitiesParameters, - ) => + ): Promise<EngagementsResponse> => config.fake ? Promise.resolve({ totalResults: 0, data: [] }) : fetchEngagementOpportunities(config)(parameters), @@ -93,12 +98,12 @@ const createResolvers = (config: ServerConfig) => ({ // deno-lint-ignore no-explicit-any _parent: any, parameters: EngagementParameters, - ) => + ): Promise<EngagementResponse> => config.fake ? Promise.resolve(null) : fetchEngagement(config)(parameters), categories: ( // deno-lint-ignore no-explicit-any _parent: any, - ) => + ): Promise<CategoriesResponse> => config.fake ? Promise.resolve({ data: [] }) : fetchCategories(config.voltastics), @@ -106,14 +111,14 @@ const createResolvers = (config: ServerConfig) => ({ // deno-lint-ignore no-explicit-any _parent: any, parameters: EngagementsParameters, - ) => + ): Promise<EngagementsResponse> => config.fake ? Promise.resolve({ totalResults: 0, data: [] }) : fetchEngagements(config)(parameters), cities: ( // deno-lint-ignore no-explicit-any _parent: any, - ) => + ): Promise<CitiesResponse> => config.fake ? Promise.resolve({ data: [] }) : fetchCities(config.voltastics), @@ -123,7 +128,7 @@ const createResolvers = (config: ServerConfig) => ({ // deno-lint-ignore no-explicit-any _parent: any, parameters: TrackEngagementViewParameters, - ) => + ): Promise<TrackEngagementViewResponse> => config.fake ? Promise.resolve({ id: parameters.id }) : trackEngagementView(config.voltastics)(parameters), @@ -139,9 +144,9 @@ export interface VoltasticsConfig { apiToken: string; } export interface ServerConfig { - port?: number; // default: 8004 + port: number; // default: 8004 cacheEnabled: boolean; // default: true - cacheTtlMsVoltastics?: number; // default: 60 seconds + cacheTtlMsVoltastics: number; // default: 60 seconds voltastics: VoltasticsConfig; imageProxyBaseUrl: string; fake: boolean; // For local development. If set, the API returns dummy data @@ -153,16 +158,11 @@ export const createGraphQLServer = (config: ServerConfig): GraphQLServer => { useResponseCache({ session: () => null, // global cache, shared by all users ttlPerSchemaCoordinate: { - "Query.engagementOpportunities": config.cacheTtlMsVoltastics || - DEFAULT_CACHE_TTL_MS_VOLTASTICS, - "Query.engagement": config.cacheTtlMsVoltastics || - DEFAULT_CACHE_TTL_MS_VOLTASTICS, - "Query.categories": config.cacheTtlMsVoltastics || - DEFAULT_CACHE_TTL_MS_VOLTASTICS, - "Query.engagements": config.cacheTtlMsVoltastics || - DEFAULT_CACHE_TTL_MS_VOLTASTICS, - "Query.cities": config.cacheTtlMsVoltastics || - DEFAULT_CACHE_TTL_MS_VOLTASTICS, + "Query.engagementOpportunities": config.cacheTtlMsVoltastics, + "Query.engagement": config.cacheTtlMsVoltastics, + "Query.categories": config.cacheTtlMsVoltastics, + "Query.engagements": config.cacheTtlMsVoltastics, + "Query.cities": config.cacheTtlMsVoltastics, }, }), ] @@ -181,7 +181,7 @@ export type GraphQLServer = any; export const startServer = (config: ServerConfig): Promise<void> => { const graphQLServer: GraphQLServer = createGraphQLServer(config); return serve(graphQLServer.handleRequest, { - port: config.port || DEFAULT_PORT, + port: config.port, onListen({ port, hostname }) { logger.info( `Server started at http://${ diff --git a/app/voltastics_test_data.ts b/app/voltastics_test_data.ts index e8ec1eb..5772426 100644 --- a/app/voltastics_test_data.ts +++ b/app/voltastics_test_data.ts @@ -43,6 +43,7 @@ export const apiSearchEngagement2: ApiSearchEngagement = { description: "<p>Sie können sich vorstellen, als Ehrenamtliche:r eine Familie zu unterstützen, in der ein Kind lebensverkürzend erkrankt ist? Dann engagieren Sie sich im ambulanten Kinderhospizdienst HHanseStrolche.<br /><br /><strong>Was sind die HHanseStrolche?</strong><br />\nHHanseStrolche heißt unser ambulanter Kinderhospizdienst. Der Träger ist das Theodorus Kinder-Tageshospiz gGmbH in Munich-Eidelstedt. Dabei unterstützen ehrenamtliche Helfer:innen betroffene Familien Zuhause, in ihrem Alltag. Die Hilfe durch die „HHanseStrolche“ ist für die Familien kostenlos. <br /><br /><strong>Warum brauchen die Familien Hilfe?</strong><br />\nDie Diagnose einer unheilbaren Erkrankung eines Kindes ist für Familien sehr belastend. Der Alltag muss neu organisiert werden. Meist muss das Kind rund um die Uhr betreut werden. Mit ihren Sorgen fühlen sich Eltern dabei häufig alleingelassen. In dieser belastenden Situation kommen oft auch die Bedürfnisse der gesunden Geschwisterkinder zu kurz. <br /><br /><strong>Wie können Sie helfen?</strong><br />\nIndem Sie uns als „EhrenStrolch“ durch ihre ehrenamtliche Arbeit unterstützen. Sie gehen in die Familien, entlasten sie in ihrem Alltag und geben ihnen die Möglichkeit, Kraftreserven aufzufüllen und neue Energie zu schöpfen.<br /><br /><strong>Was können Sie konkret tun?</strong><br />\nSie helfen Familien, ihren Alltag besser zu bewältigen. Sie schenken den Eltern, dem erkrankten Kind oder dessen Geschwisterkind Ihre Zeit. Sie werden für die Familie ein Freund und Helfer. Dabei orientieren Sie sich an den konkreten Bedürfnissen der Familie oder der Kinder. Vielleicht lesen Sie dem erkrankten Kind etwas vor. Vielleicht spielen Sie mit dem gesunden Geschwisterkind oder machen einen Ausflug. Vielleicht brauchen die Eltern einfach mal zwei Stunden Zeit für ein ungestörtes Gespräch. Die Familie wird Ihnen zeigen, was sie gerade braucht. <br /><br /><strong>Wo unterstützen und begleiten Sie die Familie?</strong><br />\nSie unterstützen die betroffene Familie in Munich in deren eigenen vier Wänden. Idealerweise ist die Familie für Sie innerhalb von 30 Minuten erreichbar.</p>\n<p><strong>Wie viel Zeit sollten Sie als Helfer:in einbringen?</strong><br />\nDamit die Familien von Ihrer Begleitung wirklich profitieren, ist eine regelmäßige Unterstützung notwendig. So kann die Familie ihren Alltag besser planen. Sie sollten deshalb einmal pro Woche mindestens drei Stunden Zeit für die Familie erübrigen können. Außerdem sollten Sie vor Beginn Ihrer ehrenamtlichen Tätigkeit ausreichend Zeit für die Schulung haben.</p>\n<p><strong>Wie lange dauert die Schulung?</strong><br />\nDie Schulung zum Kinderhospizhelfer dauert insgesamt 120 Stunden und schließt auch eine Hospitanz im Kinder-Tageshospiz ein. Sie findet über einen Zeitraum von vier Monaten statt – alle zwei Wochen an Donnerstag- und Freitagnachmittagen, sowie samstags.<br /><br /><strong>Was sind Inhalte dieser Schulung?</strong><br />\nSie lernen die verschiedenen Krankheitsbilder kennen und die Auswirkungen auf das System Familie. Sie sprechen über den Umgang mit Sterben, Tod und Trauer. Sie beschäftigen sich mit Selbstpflege und Selbstfürsorge. </p><p>\n<strong>Wie können Sie die HHanseStrolche noch unterstützen?</strong></p>\n<p>Wir freuen uns, wenn Sie uns als „HHanseStrolch“ Ihre Zeit spenden. Natürlich können Sie sich im Theodorus Kinder-Tageshospiz auch anderweitig engagieren. Wenn Sie sich für dieses Engagement interessieren, können Sie sich jederzeit bei uns melden.</p>", "source": "Aktion Mensch", + title: "Ehrenamt im Ambulanten Kinderhospizdienst HHanseStrolche", hashTags: [ "Munich", -- GitLab