| 635 | } |
| 636 | |
| 637 | func (src *ModuleSource) EncodePersistedObject(ctx context.Context, cache dagql.PersistedObjectCache) (dagql.PersistedObjectEncoding, error) { |
| 638 | if src == nil { |
| 639 | return dagql.PersistedObjectEncoding{}, fmt.Errorf("encode persisted module source: nil module source") |
| 640 | } |
| 641 | payload := persistedModuleSourcePayload{ |
| 642 | ConfigExists: src.ConfigExists, |
| 643 | ModuleName: src.ModuleName, |
| 644 | ModuleOriginalName: src.ModuleOriginalName, |
| 645 | EngineVersion: src.EngineVersion, |
| 646 | CodegenConfig: src.CodegenConfig, |
| 647 | ModuleConfigUserFields: src.ModuleConfigUserFields, |
| 648 | DisableDefaultFunctionCaching: src.DisableDefaultFunctionCaching, |
| 649 | SDK: src.SDK, |
| 650 | IncludePaths: slices.Clone(src.IncludePaths), |
| 651 | RebasedIncludePaths: slices.Clone(src.RebasedIncludePaths), |
| 652 | ConfigDependencies: slices.Clone(src.ConfigDependencies), |
| 653 | ConfigBlueprint: src.ConfigBlueprint, |
| 654 | ConfigToolchains: slices.Clone(src.ConfigToolchains), |
| 655 | UserDefaults: src.UserDefaults, |
| 656 | ConfigClients: slices.Clone(src.ConfigClients), |
| 657 | SourceRootSubpath: src.SourceRootSubpath, |
| 658 | SourceSubpath: src.SourceSubpath, |
| 659 | OriginalSubpath: src.OriginalSubpath, |
| 660 | Kind: src.Kind, |
| 661 | Local: src.Local, |
| 662 | } |
| 663 | if src.SDK != nil { |
| 664 | if src.SDKImpl == nil { |
| 665 | return dagql.PersistedObjectEncoding{}, fmt.Errorf("encode persisted module source: sdk config is set but sdk impl is not initialized") |
| 666 | } |
| 667 | _, hasRuntime := src.SDKImpl.AsRuntime() |
| 668 | _, hasModuleTypes := src.SDKImpl.AsModuleTypes() |
| 669 | _, hasCodeGenerator := src.SDKImpl.AsCodeGenerator() |
| 670 | _, hasClientGenerator := src.SDKImpl.AsClientGenerator() |
| 671 | selfCallsAlways := false |
| 672 | if sc, ok := src.SDKImpl.(selfCallsAlwaysEnabler); ok && sc.AlwaysEnablesSelfCalls() { |
| 673 | selfCallsAlways = true |
| 674 | } |
| 675 | payload.SDKCapabilities = &persistedModuleSourceSDKCapabilities{ |
| 676 | Runtime: hasRuntime, |
| 677 | ModuleTypes: hasModuleTypes, |
| 678 | CodeGenerator: hasCodeGenerator, |
| 679 | ClientGenerator: hasClientGenerator, |
| 680 | SelfCallsAlways: selfCallsAlways, |
| 681 | } |
| 682 | } |
| 683 | if src.ContextDirectory.Self() != nil { |
| 684 | contextDirID, err := encodePersistedObjectRef(cache, src.ContextDirectory, "module source context directory") |
| 685 | if err != nil { |
| 686 | return dagql.PersistedObjectEncoding{}, err |
| 687 | } |
| 688 | payload.ContextDirectoryResultID = contextDirID |
| 689 | } |
| 690 | payload.DependencyResultIDs = make([]uint64, 0, len(src.Dependencies)) |
| 691 | for _, dep := range src.Dependencies { |
| 692 | if dep.Self() == nil { |
| 693 | continue |
| 694 | } |