[mod] api:register:abstraction

This commit is contained in:
roydfalk 2024-05-15 08:38:58 +02:00
parent 9910299675
commit b4db263685
9 changed files with 58 additions and 16 deletions

View file

@ -7,10 +7,10 @@ namespace _espe.api
rest_subject : lib_plankton.rest.type_rest rest_subject : lib_plankton.rest.type_rest
) : void ) : void
{ {
lib_plankton.rest.register<_espe.service.member.type_value, null>( register<_espe.service.member.type_value, null>(
rest_subject, rest_subject,
lib_plankton.http.enum_method.delete, lib_plankton.http.enum_method.delete,
_espe.conf.get().server.path_base + "/member/:id", "/member/:id",
{ {
"description": "löscht ein vorhandenes Mitglied", "description": "löscht ein vorhandenes Mitglied",
"restriction": restriction_logged_in, "restriction": restriction_logged_in,

View file

@ -8,7 +8,7 @@ namespace _espe.api
rest_subject : lib_plankton.rest.type_rest rest_subject : lib_plankton.rest.type_rest
) : void ) : void
{ {
lib_plankton.rest.register< register<
int, int,
( (
null null
@ -24,7 +24,7 @@ namespace _espe.api
>( >(
rest_subject, rest_subject,
lib_plankton.http.enum_method.get, lib_plankton.http.enum_method.get,
_espe.conf.get().server.path_base + "/member/info/:id", "/member/info/:id",
{ {
"description": "gibt Angaben über ein Mitglied aus, die für die Registrierung verwendet werden dürfen", "description": "gibt Angaben über ein Mitglied aus, die für die Registrierung verwendet werden dürfen",
"input_schema": () => ({ "input_schema": () => ({

View file

@ -7,7 +7,7 @@ namespace _espe.api
rest_subject : lib_plankton.rest.type_rest rest_subject : lib_plankton.rest.type_rest
) : void ) : void
{ {
lib_plankton.rest.register< register<
null, null,
Array< Array<
{ {
@ -22,7 +22,7 @@ namespace _espe.api
>( >(
rest_subject, rest_subject,
lib_plankton.http.enum_method.get, lib_plankton.http.enum_method.get,
_espe.conf.get().server.path_base + "/member/list", "/member/list",
{ {
"description": "listet alle Mitglieder auf", "description": "listet alle Mitglieder auf",
"query_parameters": [ "query_parameters": [

View file

@ -7,7 +7,7 @@ namespace _espe.api
rest_subject : lib_plankton.rest.type_rest rest_subject : lib_plankton.rest.type_rest
) : void ) : void
{ {
lib_plankton.rest.register< register<
{ {
email_address_private : (null | string); email_address_private : (null | string);
registered : boolean; registered : boolean;
@ -17,7 +17,7 @@ namespace _espe.api
>( >(
rest_subject, rest_subject,
lib_plankton.http.enum_method.patch, lib_plankton.http.enum_method.patch,
_espe.conf.get().server.path_base + "/member/modify/:id", "/member/modify/:id",
{ {
"description": "ändert die Angaben eines vorhandenen Mitglieds", "description": "ändert die Angaben eines vorhandenen Mitglieds",
"input_schema": () => ({ "input_schema": () => ({

View file

@ -7,7 +7,7 @@ namespace _espe.api
rest_subject : lib_plankton.rest.type_rest rest_subject : lib_plankton.rest.type_rest
) : void ) : void
{ {
lib_plankton.rest.register< register<
{ {
membership_number : string; membership_number : string;
name_real_value : string; name_real_value : string;
@ -17,7 +17,7 @@ namespace _espe.api
>( >(
rest_subject, rest_subject,
lib_plankton.http.enum_method.post, lib_plankton.http.enum_method.post,
_espe.conf.get().server.path_base + "/member/project", "/member/project",
{ {
"description": "erstellt ein neues Mitglied und gibt die erzeugte ID aus", "description": "erstellt ein neues Mitglied und gibt die erzeugte ID aus",
"input_schema": () => ({ "input_schema": () => ({

View file

@ -7,7 +7,7 @@ namespace _espe.api
rest_subject : lib_plankton.rest.type_rest rest_subject : lib_plankton.rest.type_rest
) : void ) : void
{ {
lib_plankton.rest.register< register<
null, null,
{ {
membership_number : string; membership_number : string;
@ -28,7 +28,7 @@ namespace _espe.api
>( >(
rest_subject, rest_subject,
lib_plankton.http.enum_method.get, lib_plankton.http.enum_method.get,
_espe.conf.get().server.path_base + "/member/read/:id", "/member/read/:id",
{ {
"description": "gibt ein Mitglied anhand seiner ID aus", "description": "gibt ein Mitglied anhand seiner ID aus",
"output_schema": () => ({ "output_schema": () => ({

View file

@ -8,7 +8,7 @@ namespace _espe.api
rest_subject : lib_plankton.rest.type_rest rest_subject : lib_plankton.rest.type_rest
) : void ) : void
{ {
lib_plankton.rest.register< register<
{ {
email_use_veiled_address : boolean; email_use_veiled_address : boolean;
email_use_nominal_address : boolean; email_use_nominal_address : boolean;
@ -24,7 +24,7 @@ namespace _espe.api
>( >(
rest_subject, rest_subject,
lib_plankton.http.enum_method.post, lib_plankton.http.enum_method.post,
_espe.conf.get().server.path_base + "/member/register/:id", "/member/register/:id",
{ {
"description": "nimmt zusätzliche Angaben eines Mitglieds entgegen", "description": "nimmt zusätzliche Angaben eines Mitglieds entgegen",
"input_schema": () => ({ "input_schema": () => ({

View file

@ -7,10 +7,10 @@ namespace _espe.api
rest_subject : lib_plankton.rest.type_rest rest_subject : lib_plankton.rest.type_rest
) : void ) : void
{ {
lib_plankton.rest.register<null, null>( register<null, null>(
rest_subject, rest_subject,
lib_plankton.http.enum_method.delete, lib_plankton.http.enum_method.delete,
_espe.conf.get().server.path_base + "/session/end", "/session/end",
{ {
"description": "beendet eine Sitzung", "description": "beendet eine Sitzung",
"input_schema": () => ({ "input_schema": () => ({

View file

@ -66,4 +66,46 @@ namespace _espe.api
); );
} }
/**
*/
export function register<type_input, type_output>(
rest_subject : lib_plankton.rest.type_rest,
http_method : lib_plankton.http.enum_method,
path : string,
options : {
active ?: ((version : string) => boolean);
restriction ?: (null | lib_plankton.rest.type_restriction<type_input>);
execution ?: lib_plankton.rest.type_execution<type_input, type_output>;
title ?: (null | string);
description ?: (null | string);
query_parameters ?: Array<
{
name : string;
description : (null | string);
required : boolean;
}
>;
input_schema ?: ((version: (null | string)) => lib_plankton.rest.type_oas_schema);
output_schema ?: ((version: (null | string)) => lib_plankton.rest.type_oas_schema);
request_body_mimetype ?: string;
request_body_decode ?: ((http_request_body : Buffer, http_request_header_content_type : (null | string)) => any);
response_body_mimetype ?: string;
response_body_encode ?: ((output : any) => Buffer);
} = {}
) : void
{
options = Object.assign(
{
},
options
);
lib_plankton.rest.register<type_input, type_output>(
rest_subject,
http_method,
(_espe.conf.get().server.path_base + path),
options
);
}
} }