namespace _espe.repository.member { /** */ var _store : ( null | lib_plankton.storage.type_store< _espe.type.member.id, Record, {}, lib_plankton.storage.type_sql_table_autokey_search_term, Record > ) = null; /** */ function get_store( ) : lib_plankton.storage.type_store< _espe.type.member.id, Record, {}, lib_plankton.storage.type_sql_table_autokey_search_term, Record > { if (_store === null) { _store = lib_plankton.storage.sql_table_autokey_store( { "database_implementation": _espe.helpers.database_implementation(), "table_name": "members", "key_name": "id", } ); } else { // do nothing } return _store; } /** */ function encode( object : _espe.type.member.object ) : Record { return { "membership_number": object.membership_number, "name_real_value": object.name_real_value, "name_real_index": object.name_real_index, "email_address_private": object.email_address_private, "registered": (object.registered ? 1 : 0), "enabled": (object.enabled ? 1 : 0), "email_use_veiled_address": (object.email_use_veiled_address ? 1 : 0), "email_use_nominal_address": (object.email_use_nominal_address ? 1 : 0), "email_redirect_to_private_address": (object.email_redirect_to_private_address ? 1 : 0), "email_allow_sending": (object.email_allow_sending ? 1 : 0), "password_image": object.password_image, }; } /** */ function decode( row : Record ) : _espe.type.member.object { return { "membership_number": row["membership_number"], "name_real_value": row["name_real_value"], "name_real_index": row["name_real_index"], "email_address_private": row["email_address_private"], "registered": (row["registered"] > 0), "enabled": (row["enabled"] > 0), "email_use_veiled_address": (row["email_use_veiled_address"] > 0), "email_use_nominal_address": (row["email_use_nominal_address"] > 0), "email_redirect_to_private_address": (row["email_redirect_to_private_address"] > 0), "email_allow_sending": (row["email_allow_sending"] > 0), "password_image": row["password_image"], }; } /** */ export async function dump( ) : Promise< Array< { id : _espe.type.member.id; value : _espe.type.member.object; } > > { return ( (await get_store().search(null)) .map( ({"key": key, "preview": preview}) => ({ "id": key, "value": (preview as _espe.type.member.object), }) ) ); } /** */ export async function list( ) : Promise< Array< { id : _espe.type.member.id; preview : { membership_number : string, name_real : string; }; } > > { return ( (await get_store().search(null)) .map( ({"key": key, "preview": preview}) => ({ "id": key, "preview": { "membership_number": preview["membership_number"], "name_real": preview["name_real"], } }) ) ); } /** */ export async function read( id : _espe.type.member.id ) : Promise<_espe.type.member.object> { const row : Record = await get_store().read(id); return decode(row); } /** */ export async function create( value : _espe.type.member.object ) : Promise<_espe.type.member.id> { const row : Record = encode(value); const id : _espe.type.member.id = await get_store().create(row); return id; } /** */ export async function update( id : _espe.type.member.id, value : _espe.type.member.object ) : Promise { const row : Record = encode(value); await get_store().update(id, row); } /** */ export async function delete( id : _espe.type.member.id ) : Promise { await get_store().delete(id); } }