[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
|
) : void
|
||||||
{
|
{
|
||||||
// TODO: translate types
|
// 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,
|
rest_subject,
|
||||||
lib_plankton.http.enum_method.get,
|
lib_plankton.http.enum_method.get,
|
||||||
"/member",
|
"/member/list",
|
||||||
{
|
{
|
||||||
"description": "listet alle Mitglieder auf",
|
"description": "listet alle Mitglieder auf",
|
||||||
"restriction": restriction_logged_in,
|
"query_parameters": [
|
||||||
|
{
|
||||||
|
"name": "search_term",
|
||||||
|
"required": false,
|
||||||
|
"description": "search term",
|
||||||
|
}
|
||||||
|
],
|
||||||
"output_schema": () => ({
|
"output_schema": () => ({
|
||||||
"type": "array",
|
"type": "array",
|
||||||
"items": {
|
"items": {
|
||||||
|
@ -23,20 +41,30 @@ namespace _espe.api
|
||||||
"additionalProperties": false,
|
"additionalProperties": false,
|
||||||
"properties": {
|
"properties": {
|
||||||
"id": {
|
"id": {
|
||||||
"type": "integer",
|
"type": "number",
|
||||||
"nullable": false,
|
"nullable": false,
|
||||||
},
|
},
|
||||||
"preview": {
|
"preview": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"additionalProperties": false,
|
"additionalProperties": false,
|
||||||
"properties": {
|
"properties": {
|
||||||
"name": {
|
"membership_number": {
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"nullable": false,
|
"nullable": false,
|
||||||
},
|
},
|
||||||
|
"name_real_value": {
|
||||||
|
"type": "string",
|
||||||
|
"nullable": false,
|
||||||
|
},
|
||||||
|
"name_real_index": {
|
||||||
|
"type": "number",
|
||||||
|
"nullable": false,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
"required": [
|
"required": [
|
||||||
"name",
|
"membership_number",
|
||||||
|
"name_real_value",
|
||||||
|
"name_real_index",
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -46,12 +74,16 @@ namespace _espe.api
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
"execution": async ({}) => {
|
"restriction": restriction_logged_in,
|
||||||
return Promise.resolve({
|
"execution": ({"query_parameters": query_parameters}) => (
|
||||||
"status_code": 200,
|
_espe.service.member.list(query_parameters["search_term"] ?? null)
|
||||||
"data": (await _espe.service.member.list()),
|
.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
|
) : void
|
||||||
{
|
{
|
||||||
lib_plankton.rest.register<
|
lib_plankton.rest.register<
|
||||||
int,
|
null,
|
||||||
_espe.service.member.type_value
|
{
|
||||||
|
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,
|
rest_subject,
|
||||||
lib_plankton.http.enum_method.get,
|
lib_plankton.http.enum_method.get,
|
||||||
"/member/read",
|
"/member/read/:id",
|
||||||
{
|
{
|
||||||
"description": "gibt ein Mitglied anhand seiner ID aus",
|
"description": "gibt ein Mitglied anhand seiner ID aus",
|
||||||
"input_schema": () => ({
|
|
||||||
"nullable": false,
|
|
||||||
"type": "number"
|
|
||||||
}),
|
|
||||||
// TODO
|
// TODO
|
||||||
"output_schema": () => ({
|
"output_schema": () => ({
|
||||||
"nullable": false,
|
"nullable": false,
|
||||||
|
@ -31,12 +39,24 @@ namespace _espe.api
|
||||||
]
|
]
|
||||||
}),
|
}),
|
||||||
"restriction": restriction_logged_in,
|
"restriction": restriction_logged_in,
|
||||||
"execution": async ({"input": input}) => {
|
"execution": async ({"path_parameters": path_parameters, "input": input}) => {
|
||||||
const member_id : _espe.service.member.type_id = input;
|
const member_id : _espe.type.member_id = parseInt(path_parameters["id"]);
|
||||||
const member_value : _espe.service.member.type_value = await _espe.service.member.get(member_id);
|
const member_object : _espe.type.member_object = await _espe.service.member.get(member_id);
|
||||||
return Promise.resolve({
|
return Promise.resolve({
|
||||||
"status_code": 200,
|
"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_summon(rest_subject);
|
||||||
_espe.api.register_member_info(rest_subject);
|
_espe.api.register_member_info(rest_subject);
|
||||||
_espe.api.register_member_register(rest_subject);
|
_espe.api.register_member_register(rest_subject);
|
||||||
// _espe.api.register_member_list(rest_subject);
|
_espe.api.register_member_list(rest_subject);
|
||||||
// _espe.api.register_member_read(rest_subject);
|
_espe.api.register_member_read(rest_subject);
|
||||||
// _espe.api.register_member_update(rest_subject);
|
_espe.api.register_member_modify(rest_subject);
|
||||||
// _espe.api.register_member_delete(rest_subject);
|
// _espe.api.register_member_delete(rest_subject);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -112,15 +112,18 @@ namespace _espe.repository.member
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @todo optimize
|
||||||
*/
|
*/
|
||||||
export async function list(
|
export async function list(
|
||||||
|
search_term : (null | string)
|
||||||
) : Promise<
|
) : Promise<
|
||||||
Array<
|
Array<
|
||||||
{
|
{
|
||||||
id : _espe.type.member_id;
|
id : _espe.type.member_id;
|
||||||
preview : {
|
preview : {
|
||||||
membership_number : string,
|
membership_number : string;
|
||||||
name_real : string;
|
name_real_value : string;
|
||||||
|
name_real_index : int;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
|
@ -128,12 +131,28 @@ namespace _espe.repository.member
|
||||||
{
|
{
|
||||||
return (
|
return (
|
||||||
(await get_store().search(null))
|
(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(
|
.map(
|
||||||
({"key": key, "preview": preview}) => ({
|
({"key": key, "preview": preview}) => ({
|
||||||
"id": key,
|
"id": key,
|
||||||
"preview": {
|
"preview": {
|
||||||
"membership_number": preview["membership_number"],
|
"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"), "."),
|
"object": object.name_real_value.toLowerCase().replace(new RegExp(" ", "g"), "."),
|
||||||
"extension": (
|
"extension": (
|
||||||
(object.name_real_index === 0)
|
(object.name_real_index <= 1)
|
||||||
? ""
|
? ""
|
||||||
: ("." + object.name_real_index.toFixed(0))
|
: ("." + object.name_real_index.toFixed(0))
|
||||||
),
|
),
|
||||||
|
@ -124,11 +124,33 @@ namespace _espe.service.member
|
||||||
{
|
{
|
||||||
return _espe.repository.member.dump();
|
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
|
id : _espe.type.member_id
|
||||||
) : Promise<_espe.type.member_object>
|
) : 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(
|
export async function modify(
|
||||||
id : _espe.type.member_id,
|
member_id : _espe.type.member_id,
|
||||||
object : _espe.type.member_object
|
data : {
|
||||||
|
email_address_private : (null | string);
|
||||||
|
registered : boolean;
|
||||||
|
enabled : boolean;
|
||||||
|
}
|
||||||
) : Promise<void>
|
) : 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();
|
notify_change();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
export async function remove(
|
export async function remove(
|
||||||
id : _espe.type.member_id
|
id : _espe.type.member_id
|
||||||
) : Promise<void>
|
) : Promise<void>
|
||||||
|
|
|
@ -44,6 +44,9 @@ ${dir_temp}/espe-unlinked.js: \
|
||||||
${dir_source}/api/actions/member_summon.ts \
|
${dir_source}/api/actions/member_summon.ts \
|
||||||
${dir_source}/api/actions/member_info.ts \
|
${dir_source}/api/actions/member_info.ts \
|
||||||
${dir_source}/api/actions/member_register.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}/api/functions.ts \
|
||||||
${dir_source}/conf.ts \
|
${dir_source}/conf.ts \
|
||||||
${dir_source}/main.ts
|
${dir_source}/main.ts
|
||||||
|
|
Loading…
Add table
Reference in a new issue