|
|
|
This page describes the internal flow when indexing new content on the sharing plattform
|
|
|
|
|
|
|
|
|
|
|
|
```plantuml
|
|
|
|
start
|
|
|
|
:process gitlab event
|
|
|
|
push
|
|
|
|
project_rename
|
|
|
|
project_transfer
|
|
|
|
group_rename
|
|
|
|
_(project_destroy)_
|
|
|
|
;
|
|
|
|
:identify top most metadata.*;
|
|
|
|
:process top most metadata.*;
|
|
|
|
:analyse collection content;
|
|
|
|
repeat
|
|
|
|
:analyse child link;
|
|
|
|
if (child in same project) then (yes)
|
|
|
|
:recursively process child;
|
|
|
|
elseif (child in other project in sharing repository) then (yes)
|
|
|
|
:check indexing status of child;
|
|
|
|
if (child project does not yet exist) then (yes)
|
|
|
|
:emit error;
|
|
|
|
elseif (child has different visibility) then (yes)
|
|
|
|
:emit error;
|
|
|
|
else (child is already indexed)
|
|
|
|
:be happy and do nothing;
|
|
|
|
endif
|
|
|
|
else (outside gitlab project)
|
|
|
|
:not yet supported;
|
|
|
|
endif
|
|
|
|
repeat while (next child?)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
stop
|
|
|
|
``` |
|
|
\ No newline at end of file |