diff --git a/source/repositories/calendar.ts b/source/repositories/calendar.ts index 43266df..364f88f 100644 --- a/source/repositories/calendar.ts +++ b/source/repositories/calendar.ts @@ -41,6 +41,14 @@ namespace _zeitbild.repository.calendar }; + /** + */ + type type_access_attributed_group_preview = { + group_id : int; + level : int; + }; + + /** */ type type_access_attributed_user_row = { @@ -50,6 +58,14 @@ namespace _zeitbild.repository.calendar }; + /** + */ + type type_access_attributed_user_preview = { + user_id : int; + level : int; + }; + + /** */ type type_dispersal = { @@ -405,16 +421,18 @@ namespace _zeitbild.repository.calendar const calendar_id : _zeitbild.type_calendar_id = await core_store.create( dispersal.core_row ); - for await (const access_attributed_group_row of dispersal.access_attributed_group_rows) { + for await (const access_attributed_group_row of dispersal.access_attributed_group_rows) + { get_access_attributed_group_chest().write( - [calendar_id, access_attributed_group_row["group_id"]], - {"level": access_attributed_group_row["level"]} + [calendar_id, access_attributed_group_row.group_id], + {"level": access_attributed_group_row.level} ); } - for await (const access_attributed_user_row of dispersal.access_attributed_user_rows) { + for await (const access_attributed_user_row of dispersal.access_attributed_user_rows) + { get_access_attributed_user_chest().write( - [calendar_id, access_attributed_user_row["user_id"]], - {"level": access_attributed_user_row["level"]} + [calendar_id, access_attributed_user_row.user_id], + {"level": access_attributed_user_row.level} ); } await lib_plankton.cache.clear(_zeitbild.cache_regular); @@ -441,82 +459,114 @@ namespace _zeitbild.repository.calendar // attributed:group { const access_attributed_group_chest = get_access_attributed_group_chest(); - const hits : Array> = await access_attributed_group_chest.search( - { - "expression": "(calendar_id = $calendar_id)", - "arguments": { - "calendar_id": calendar_id, + const hits : Array<{key : Array; preview : type_access_attributed_group_row;}> = ( + (await access_attributed_group_chest.search( + { + "expression": "(calendar_id = $calendar_id)", + "arguments": { + "calendar_id": calendar_id, + } } - } + )) + .map( + hit => ( + { + "key": hit.key, + "preview": { + "group_id": hit.preview["group_id"], + "level": hit.preview["level"], + } + } + ) + ) ); const contrast = lib_plankton.list.contrast< - Record, - Record + {key : Array; preview : type_access_attributed_group_row;}, + type_access_attributed_group_row >( hits, - hit => hit["group_id"], + hit => hit.preview.group_id.toFixed(0), dispersal.access_attributed_group_rows, - row => row["group_id"] + row => row.group_id.toFixed(0) ); // delete - for await (const entry of contrast.only_left) { + for await (const entry of contrast.only_left) + { await access_attributed_group_chest.delete( - [calendar_id, entry.left["group_id"]] + [calendar_id, entry.left.preview.group_id] ); } // update - for await (const entry of contrast.both) { + for await (const entry of contrast.both) + { await access_attributed_group_chest.write( - [calendar_id, entry.right["group_id"]], - {"level": entry.right["level"]} + [calendar_id, entry.right.group_id], + {"level": entry.right.level} ); } // create - for await (const entry of contrast.only_right) { + for await (const entry of contrast.only_right) + { await access_attributed_group_chest.write( - [calendar_id, entry.right["group_id"]], - {"level": entry.right["level"]} + [calendar_id, entry.right.group_id], + {"level": entry.right.level} ); } } // attributed:user { const access_attributed_user_chest = get_access_attributed_user_chest(); - const hits : Array> = await access_attributed_user_chest.search( - { - "expression": "(calendar_id = $calendar_id)", - "arguments": { - "calendar_id": calendar_id, + const hits : Array<{key : Array; preview : type_access_attributed_user_row;}> = ( + (await access_attributed_user_chest.search( + { + "expression": "(calendar_id = $calendar_id)", + "arguments": { + "calendar_id": calendar_id, + } } - } + )) + .map( + hit => ( + { + "key": hit.key, + "preview": { + "user_id": hit.preview["user_id"], + "level": hit.preview["level"], + } + } + ) + ) ); const contrast = lib_plankton.list.contrast< - Record, - Record + {key : Array; preview : type_access_attributed_user_row;}, + type_access_attributed_user_row >( hits, - hit => hit["user_id"], + hit => hit.preview.user_id.toFixed(0), dispersal.access_attributed_user_rows, - row => row["user_id"] + row => row.user_id.toFixed(0) ); // delete - for await (const entry of contrast.only_left) { + for await (const entry of contrast.only_left) + { await access_attributed_user_chest.delete( - [calendar_id, entry.left["user_id"]] + [calendar_id, entry.left.preview.user_id] ); } // update - for await (const entry of contrast.both) { + for await (const entry of contrast.both) + { await access_attributed_user_chest.write( - [calendar_id, entry.right["user_id"]], - {"level": entry.right["level"]} + [calendar_id, entry.right.user_id], + {"level": entry.right.level} ); } // create - for await (const entry of contrast.only_right) { + for await (const entry of contrast.only_right) + { await access_attributed_user_chest.write( - [calendar_id, entry.right["user_id"]], - {"level": entry.right["level"]} + [calendar_id, entry.right.user_id], + {"level": entry.right.level} ); } }