11import { ReactiveArrayService , ReactiveArrayStore } from "@code0-tech/pictor" ;
2- import { Namespace , NamespaceProject , Query , RuntimeModule } from "@code0-tech/sagittarius-graphql-types" ;
2+ import { Namespace , NamespaceProject , Query , Runtime , RuntimeModule } from "@code0-tech/sagittarius-graphql-types" ;
33import { GraphqlClient } from "@core/util/graphql-client" ;
44import { View } from "@code0-tech/pictor/dist/utils/view" ;
55import modulesQuery from "@edition/module/services/queries/Modules.query.graphql"
66
77export type ModuleDependencies = {
88 namespaceId : Namespace [ 'id' ]
99 projectId : NamespaceProject [ 'id' ]
10+ runtimeId : Runtime [ 'id' ]
1011}
1112
1213export class ModuleService extends ReactiveArrayService < RuntimeModule , ModuleDependencies > {
@@ -23,31 +24,35 @@ export class ModuleService extends ReactiveArrayService<RuntimeModule, ModuleDep
2324 const modules = super . values ( )
2425 if ( ! dependencies ?. namespaceId || ! dependencies . projectId ) return modules
2526
26- this . client . query < Query > ( {
27- query : modulesQuery ,
28- variables : {
29- namespaceId : dependencies ?. namespaceId ,
30- projectId : dependencies . projectId ,
31-
32- firstRuntime : 50 ,
33- afterRuntime : null ,
34-
35- firstModule : 50 ,
36- afterModule : null ,
37-
38- firstConfiguration : 50 ,
39- afterConfiguration : null
40- }
41- } ) . then ( res => {
42- const nodes = res . data ?. namespace ?. project ?. runtimes ?. nodes ?. flatMap ( runtime => runtime ?. modules ?. nodes ?? [ ] ) ?? [ ]
43- nodes . forEach ( module => {
44- if ( module && ! this . hasById ( module . id ) ) {
45- this . set ( this . i ++ , new View ( module ) )
27+ const filtered = modules . filter ( m => m . runtime ?. id === dependencies . runtimeId )
28+
29+ if ( filtered . length <= 0 ) {
30+ this . client . query < Query > ( {
31+ query : modulesQuery ,
32+ variables : {
33+ namespaceId : dependencies ?. namespaceId ,
34+ projectId : dependencies . projectId ,
35+
36+ firstRuntime : 50 ,
37+ afterRuntime : null ,
38+
39+ firstModule : 50 ,
40+ afterModule : null ,
41+
42+ firstConfiguration : 50 ,
43+ afterConfiguration : null
4644 }
45+ } ) . then ( res => {
46+ const nodes = res . data ?. namespace ?. project ?. runtimes ?. nodes ?. flatMap ( runtime => runtime ?. modules ?. nodes ?? [ ] ) ?? [ ]
47+ nodes . forEach ( module => {
48+ if ( module && ! this . hasById ( module . id ) ) {
49+ this . set ( this . i ++ , new View ( module ) )
50+ }
51+ } )
4752 } )
48- } )
53+ }
4954
50- return modules
55+ return filtered
5156 }
5257
5358 hasById ( id : RuntimeModule [ "id" ] ) : boolean {
0 commit comments