@@ -10,19 +10,72 @@ import (
1010
1111 "github.com/mendixlabs/mxcli/model"
1212 "github.com/mendixlabs/mxcli/sdk/domainmodel"
13+ "github.com/mendixlabs/mxcli/sdk/javaactions"
1314 "github.com/mendixlabs/mxcli/sdk/microflows"
1415 "github.com/mendixlabs/mxcli/sdk/mpr"
1516 "github.com/mendixlabs/mxcli/sdk/pages"
17+ "github.com/mendixlabs/mxcli/sdk/security"
1618 "github.com/mendixlabs/mxcli/sdk/workflows"
1719)
1820
21+ // CatalogReader defines the read-only backend surface used by the catalog builder.
22+ // Both *mpr.Reader and backend.FullBackend satisfy this interface.
23+ type CatalogReader interface {
24+ // Infrastructure
25+ GetRawUnit (id model.ID ) (map [string ]any , error )
26+ ListRawUnitsByType (typePrefix string ) ([]* mpr.RawUnit , error )
27+ ListUnits () ([]* mpr.UnitInfo , error )
28+ ListFolders () ([]* mpr.FolderInfo , error )
29+
30+ // Modules
31+ ListModules () ([]* model.Module , error )
32+
33+ // Settings & security
34+ GetProjectSettings () (* model.ProjectSettings , error )
35+ GetProjectSecurity () (* security.ProjectSecurity , error )
36+ GetNavigation () (* mpr.NavigationDocument , error )
37+
38+ // Domain models & enumerations
39+ ListDomainModels () ([]* domainmodel.DomainModel , error )
40+ ListEnumerations () ([]* model.Enumeration , error )
41+ ListConstants () ([]* model.Constant , error )
42+
43+ // Microflows & nanoflows
44+ ListMicroflows () ([]* microflows.Microflow , error )
45+ ListNanoflows () ([]* microflows.Nanoflow , error )
46+
47+ // Pages, layouts & snippets
48+ ListPages () ([]* pages.Page , error )
49+ ListLayouts () ([]* pages.Layout , error )
50+ ListSnippets () ([]* pages.Snippet , error )
51+
52+ // Workflows
53+ ListWorkflows () ([]* workflows.Workflow , error )
54+
55+ // Java actions
56+ ListJavaActionsFull () ([]* javaactions.JavaAction , error )
57+
58+ // Services
59+ ListConsumedODataServices () ([]* model.ConsumedODataService , error )
60+ ListPublishedODataServices () ([]* model.PublishedODataService , error )
61+ ListConsumedRestServices () ([]* model.ConsumedRestService , error )
62+ ListPublishedRestServices () ([]* model.PublishedRestService , error )
63+ ListBusinessEventServices () ([]* model.BusinessEventService , error )
64+ ListDatabaseConnections () ([]* model.DatabaseConnection , error )
65+
66+ // Mappings & JSON structures
67+ ListImportMappings () ([]* model.ImportMapping , error )
68+ ListExportMappings () ([]* model.ExportMapping , error )
69+ ListJsonStructures () ([]* mpr.JsonStructure , error )
70+ }
71+
1972// DescribeFunc generates MDL source for a given object type and qualified name.
2073type DescribeFunc func (objectType string , qualifiedName string ) (string , error )
2174
2275// Builder populates catalog tables from MPR data.
2376type Builder struct {
2477 catalog * Catalog
25- reader * mpr. Reader
78+ reader CatalogReader
2679 snapshot * Snapshot
2780 progress ProgressFunc
2881 hierarchy * hierarchy
@@ -148,7 +201,7 @@ func (h *hierarchy) buildFolderPath(containerID model.ID) string {
148201}
149202
150203// NewBuilder creates a new catalog builder.
151- func NewBuilder (catalog * Catalog , reader * mpr. Reader ) * Builder {
204+ func NewBuilder (catalog * Catalog , reader CatalogReader ) * Builder {
152205 return & Builder {
153206 catalog : catalog ,
154207 reader : reader ,
0 commit comments