@@ -125,6 +125,10 @@ func BuildModels(sc *SourceConfig, mc *ModelConfig) error {
125125 return fmt .Errorf ("error building information schema: %w" , err )
126126 }
127127
128+ if err := removeUnusedModels (sc , mc ); err != nil {
129+ return fmt .Errorf ("error removing unused models: %w" , err )
130+ }
131+
128132 columnMetadata , err := BuildColumnMetadata ()
129133 if err != nil {
130134 return fmt .Errorf ("error building column metadata: %w" , err )
@@ -277,3 +281,22 @@ func errorOnMissingModels(sc *SourceConfig, mc *ModelConfig) error {
277281 }
278282 return nil
279283}
284+
285+ // Remove unused models from ModelConfig. If a model is not referenced in any source, it is unused.
286+ func removeUnusedModels (sc * SourceConfig , mc * ModelConfig ) error {
287+ usedModels := make ([]string , 0 )
288+ for _ , source := range sc .Sources {
289+ for _ , modelName := range source .Models {
290+ usedModels = append (usedModels , string (modelName ))
291+ }
292+ }
293+
294+ for i , model := range mc .Models {
295+ if ! slices .Contains (usedModels , string (model .Name )) {
296+ Info (fmt .Sprintf ("Removing unused model: %s" , model .Name ))
297+ mc .Models = append (mc .Models [:i ], mc .Models [i + 1 :]... )
298+ }
299+ }
300+
301+ return nil
302+ }
0 commit comments