[mod] api aufgeräumt
This commit is contained in:
parent
362eb0da3a
commit
a09e428c7a
8 changed files with 222 additions and 86 deletions
|
@ -8,13 +8,31 @@ namespace _espe.api
|
|||
) : void
|
||||
{
|
||||
// TODO: translate types
|
||||
lib_plankton.rest.register<null, Array<{id : _espe.service.member.type_id; preview : {};}>>(
|
||||
lib_plankton.rest.register<
|
||||
null,
|
||||
Array<
|
||||
{
|
||||
id : int;
|
||||
preview : {
|
||||
membership_number : string;
|
||||
name_real_value : string;
|
||||
name_real_index : int;
|
||||
};
|
||||
}
|
||||
>
|
||||
>(
|
||||
rest_subject,
|
||||
lib_plankton.http.enum_method.get,
|
||||
"/member",
|
||||
"/member/list",
|
||||
{
|
||||
"description": "listet alle Mitglieder auf",
|
||||
"restriction": restriction_logged_in,
|
||||
"query_parameters": [
|
||||
{
|
||||
"name": "search_term",
|
||||
"required": false,
|
||||
"description": "search term",
|
||||
}
|
||||
],
|
||||
"output_schema": () => ({
|
||||
"type": "array",
|
||||
"items": {
|
||||
|
@ -23,20 +41,30 @@ namespace _espe.api
|
|||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "integer",
|
||||
"type": "number",
|
||||
"nullable": false,
|
||||
},
|
||||
"preview": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"name": {
|
||||
"membership_number": {
|
||||
"type": "string",
|
||||
"nullable": false,
|
||||
},
|
||||
"name_real_value": {
|
||||
"type": "string",
|
||||
"nullable": false,
|
||||
},
|
||||
"name_real_index": {
|
||||
"type": "number",
|
||||
"nullable": false,
|
||||
},
|
||||
},
|
||||
"required": [
|
||||
"name",
|
||||
"membership_number",
|
||||
"name_real_value",
|
||||
"name_real_index",
|
||||
]
|
||||
}
|
||||
},
|
||||
|
@ -46,12 +74,16 @@ namespace _espe.api
|
|||
],
|
||||
}
|
||||
}),
|
||||
"execution": async ({}) => {
|
||||
return Promise.resolve({
|
||||
"status_code": 200,
|
||||
"data": (await _espe.service.member.list()),
|
||||
});
|
||||
}
|
||||
"restriction": restriction_logged_in,
|
||||
"execution": ({"query_parameters": query_parameters}) => (
|
||||
_espe.service.member.list(query_parameters["search_term"] ?? null)
|
||||
.then(
|
||||
data => Promise.resolve({
|
||||
"status_code": 200,
|
||||
"data": data,
|
||||
})
|
||||
)
|
||||
)
|
||||
}
|
||||
);
|
||||
}
|
||||
|
|
70
source/api/actions/member_modify.ts
Normal file
70
source/api/actions/member_modify.ts
Normal file
|
@ -0,0 +1,70 @@
|
|||
namespace _espe.api
|
||||
{
|
||||
|
||||
/**
|
||||
*/
|
||||
export function register_member_modify(
|
||||
rest_subject : lib_plankton.rest.type_rest
|
||||
) : void
|
||||
{
|
||||
lib_plankton.rest.register<
|
||||
{
|
||||
email_address_private : (null | string);
|
||||
registered : boolean;
|
||||
enabled : boolean;
|
||||
},
|
||||
null
|
||||
>(
|
||||
rest_subject,
|
||||
lib_plankton.http.enum_method.patch,
|
||||
"/member/modify/:id",
|
||||
{
|
||||
"description": "ändert die Angaben eines vorhandenen Mitglieds",
|
||||
"input_schema": () => ({
|
||||
"nullable": false,
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"email_address_private": {
|
||||
"nullable": true,
|
||||
"type": "string"
|
||||
},
|
||||
"registered": {
|
||||
"nullable": false,
|
||||
"type": "boolean"
|
||||
},
|
||||
"enabled": {
|
||||
"nullable": false,
|
||||
"type": "boolean"
|
||||
},
|
||||
},
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"email_address_private",
|
||||
"registered",
|
||||
"enabled",
|
||||
]
|
||||
}),
|
||||
"output_schema": () => ({
|
||||
"nullable": true,
|
||||
}),
|
||||
"restriction": restriction_logged_in,
|
||||
"execution": async ({"path_parameters": path_parameters, "input": input}) => {
|
||||
const member_id : _espe.type.member_id = parseInt(path_parameters["id"]);
|
||||
await _espe.service.member.modify(
|
||||
member_id,
|
||||
{
|
||||
"email_address_private": input.email_address_private,
|
||||
"registered": input.registered,
|
||||
"enabled": input.enabled,
|
||||
}
|
||||
);
|
||||
return Promise.resolve({
|
||||
"status_code": 200,
|
||||
"data": null
|
||||
});
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
}
|
|
@ -8,18 +8,26 @@ namespace _espe.api
|
|||
) : void
|
||||
{
|
||||
lib_plankton.rest.register<
|
||||
int,
|
||||
_espe.service.member.type_value
|
||||
null,
|
||||
{
|
||||
membership_number : string;
|
||||
name_real_value : string;
|
||||
name_real_index : int;
|
||||
email_address_private : (null | string);
|
||||
registered : boolean;
|
||||
enabled : boolean;
|
||||
email_use_veiled_address : boolean;
|
||||
email_use_nominal_address : boolean;
|
||||
email_redirect_to_private_address : boolean;
|
||||
email_allow_sending : boolean;
|
||||
password_set : boolean;
|
||||
}
|
||||
>(
|
||||
rest_subject,
|
||||
lib_plankton.http.enum_method.get,
|
||||
"/member/read",
|
||||
"/member/read/:id",
|
||||
{
|
||||
"description": "gibt ein Mitglied anhand seiner ID aus",
|
||||
"input_schema": () => ({
|
||||
"nullable": false,
|
||||
"type": "number"
|
||||
}),
|
||||
// TODO
|
||||
"output_schema": () => ({
|
||||
"nullable": false,
|
||||
|
@ -31,12 +39,24 @@ namespace _espe.api
|
|||
]
|
||||
}),
|
||||
"restriction": restriction_logged_in,
|
||||
"execution": async ({"input": input}) => {
|
||||
const member_id : _espe.service.member.type_id = input;
|
||||
const member_value : _espe.service.member.type_value = await _espe.service.member.get(member_id);
|
||||
"execution": async ({"path_parameters": path_parameters, "input": input}) => {
|
||||
const member_id : _espe.type.member_id = parseInt(path_parameters["id"]);
|
||||
const member_object : _espe.type.member_object = await _espe.service.member.get(member_id);
|
||||
return Promise.resolve({
|
||||
"status_code": 200,
|
||||
"data": member_value,
|
||||
"data": {
|
||||
"membership_number": member_object.membership_number,
|
||||
"name_real_value": member_object.name_real_value,
|
||||
"name_real_index": member_object.name_real_index,
|
||||
"email_address_private": member_object.email_address_private,
|
||||
"registered": member_object.registered,
|
||||
"enabled": member_object.enabled,
|
||||
"email_use_veiled_address": member_object.email_use_veiled_address,
|
||||
"email_use_nominal_address": member_object.email_use_nominal_address,
|
||||
"email_redirect_to_private_address": member_object.email_redirect_to_private_address,
|
||||
"email_allow_sending": member_object.email_allow_sending,
|
||||
"password_set": (member_object.password_image !== null),
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,45 +0,0 @@
|
|||
namespace _espe.api
|
||||
{
|
||||
|
||||
/**
|
||||
*/
|
||||
export function register_member_update(
|
||||
rest_subject : lib_plankton.rest.type_rest
|
||||
) : void
|
||||
{
|
||||
lib_plankton.rest.register<_espe.service.member.type_value, null>(
|
||||
rest_subject,
|
||||
lib_plankton.http.enum_method.patch,
|
||||
"/member/:id",
|
||||
{
|
||||
"description": "ändert ein vorhandenes Mitglied",
|
||||
"restriction": restriction_logged_in,
|
||||
"execution": async ({"path_parameters": path_parameters, "input": input}) => {
|
||||
const member_id : _espe.service.member.type_id = parseInt(path_parameters["id"]);
|
||||
const member_value_old : _espe.service.member.type_value = await _espe.service.member.get(member_id);
|
||||
const member_value_new : _espe.service.member.type_value = {
|
||||
"enabled": input["enabled"],
|
||||
"membership_number": input["membership_number"],
|
||||
"name_real_value": input["name_real_value"],
|
||||
"name_real_extension": input["name_real_extension"],
|
||||
"name_display": input["name_display"],
|
||||
"name_login": input["name_login"],
|
||||
"password_image": member_value_old.password_image,
|
||||
"email_address_private_value": input["email_address_private_value"],
|
||||
"email_address_numberbased_use": input["email_address_numberbased_use"],
|
||||
"email_address_namebased_use": input["email_address_namebased_use"],
|
||||
"email_redirect_to_private": input["email_redirect_to_private"],
|
||||
"salutation": input["salutation"],
|
||||
"registered": /*input["registered"]*/member_value_old.registered,
|
||||
};
|
||||
await _espe.service.member.modify(member_id, member_value_new);
|
||||
return Promise.resolve({
|
||||
"status_code": 200,
|
||||
"data": null
|
||||
});
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
}
|
|
@ -36,9 +36,9 @@ namespace _espe.api
|
|||
_espe.api.register_member_summon(rest_subject);
|
||||
_espe.api.register_member_info(rest_subject);
|
||||
_espe.api.register_member_register(rest_subject);
|
||||
// _espe.api.register_member_list(rest_subject);
|
||||
// _espe.api.register_member_read(rest_subject);
|
||||
// _espe.api.register_member_update(rest_subject);
|
||||
_espe.api.register_member_list(rest_subject);
|
||||
_espe.api.register_member_read(rest_subject);
|
||||
_espe.api.register_member_modify(rest_subject);
|
||||
// _espe.api.register_member_delete(rest_subject);
|
||||
}
|
||||
|
||||
|
|
|
@ -112,15 +112,18 @@ namespace _espe.repository.member
|
|||
|
||||
|
||||
/**
|
||||
* @todo optimize
|
||||
*/
|
||||
export async function list(
|
||||
search_term : (null | string)
|
||||
) : Promise<
|
||||
Array<
|
||||
{
|
||||
id : _espe.type.member_id;
|
||||
preview : {
|
||||
membership_number : string,
|
||||
name_real : string;
|
||||
membership_number : string;
|
||||
name_real_value : string;
|
||||
name_real_index : int;
|
||||
};
|
||||
}
|
||||
>
|
||||
|
@ -128,12 +131,28 @@ namespace _espe.repository.member
|
|||
{
|
||||
return (
|
||||
(await get_store().search(null))
|
||||
.filter(
|
||||
({"key": key, "preview": preview}) => (
|
||||
(
|
||||
(search_term === null)
|
||||
||
|
||||
(search_term.length <= 1)
|
||||
)
|
||||
? true
|
||||
: (
|
||||
preview["membership_number"].toLowerCase().includes(search_term.toLowerCase())
|
||||
||
|
||||
preview["name_real_value"].toLowerCase().includes(search_term.toLowerCase())
|
||||
)
|
||||
)
|
||||
)
|
||||
.map(
|
||||
({"key": key, "preview": preview}) => ({
|
||||
"id": key,
|
||||
"preview": {
|
||||
"membership_number": preview["membership_number"],
|
||||
"name_real": preview["name_real"],
|
||||
"name_real_value": preview["name_real_value"],
|
||||
"name_real_index": preview["name_real_index"],
|
||||
}
|
||||
})
|
||||
)
|
||||
|
|
|
@ -40,7 +40,7 @@ namespace _espe.service.member
|
|||
{
|
||||
"object": object.name_real_value.toLowerCase().replace(new RegExp(" ", "g"), "."),
|
||||
"extension": (
|
||||
(object.name_real_index === 0)
|
||||
(object.name_real_index <= 1)
|
||||
? ""
|
||||
: ("." + object.name_real_index.toFixed(0))
|
||||
),
|
||||
|
@ -124,11 +124,33 @@ namespace _espe.service.member
|
|||
{
|
||||
return _espe.repository.member.dump();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*/
|
||||
export async function list(
|
||||
search_term : (null | string)
|
||||
) : Promise<
|
||||
Array<
|
||||
{
|
||||
id : _espe.type.member_id;
|
||||
preview : {
|
||||
membership_number : string;
|
||||
name_real_value : string;
|
||||
name_real_index : int;
|
||||
};
|
||||
}
|
||||
>
|
||||
>
|
||||
{
|
||||
return _espe.repository.member.list(search_term);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
*/
|
||||
async function get(
|
||||
export function get(
|
||||
id : _espe.type.member_id
|
||||
) : Promise<_espe.type.member_object>
|
||||
{
|
||||
|
@ -280,24 +302,39 @@ namespace _espe.service.member
|
|||
}
|
||||
}
|
||||
|
||||
/*
|
||||
export async function list(
|
||||
) : Promise<Array<{id : _espe.type.member_id; preview : {membership_number : string, name_real_value : string;};}>>
|
||||
{
|
||||
return _espe.repository.member.list();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*/
|
||||
export async function modify(
|
||||
id : _espe.type.member_id,
|
||||
object : _espe.type.member_object
|
||||
member_id : _espe.type.member_id,
|
||||
data : {
|
||||
email_address_private : (null | string);
|
||||
registered : boolean;
|
||||
enabled : boolean;
|
||||
}
|
||||
) : Promise<void>
|
||||
{
|
||||
await _espe.repository.member.update(id, object);
|
||||
const member_object_old : _espe.type.member_object = await get(member_id);
|
||||
const member_object_new : _espe.type.member_object = {
|
||||
"membership_number": member_object_old.membership_number,
|
||||
"name_real_value": member_object_old.name_real_value,
|
||||
"name_real_index": member_object_old.name_real_index,
|
||||
"email_address_private": data.email_address_private,
|
||||
"registered": data.registered,
|
||||
"enabled": data.enabled,
|
||||
"email_use_veiled_address": member_object_old.email_use_veiled_address,
|
||||
"email_use_nominal_address": member_object_old.email_use_nominal_address,
|
||||
"email_redirect_to_private_address": member_object_old.email_redirect_to_private_address,
|
||||
"email_allow_sending": member_object_old.email_allow_sending,
|
||||
"password_image": member_object_old.password_image,
|
||||
};
|
||||
await _espe.repository.member.update(member_id, member_object_new);
|
||||
notify_change();
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
export async function remove(
|
||||
id : _espe.type.member_id
|
||||
) : Promise<void>
|
||||
|
|
|
@ -44,6 +44,9 @@ ${dir_temp}/espe-unlinked.js: \
|
|||
${dir_source}/api/actions/member_summon.ts \
|
||||
${dir_source}/api/actions/member_info.ts \
|
||||
${dir_source}/api/actions/member_register.ts \
|
||||
${dir_source}/api/actions/member_list.ts \
|
||||
${dir_source}/api/actions/member_read.ts \
|
||||
${dir_source}/api/actions/member_modify.ts \
|
||||
${dir_source}/api/functions.ts \
|
||||
${dir_source}/conf.ts \
|
||||
${dir_source}/main.ts
|
||||
|
|
Loading…
Add table
Reference in a new issue