(ctx context.Context, dag *dagql.Server, opts ...InstallOpts)
| 2204 | } |
| 2205 | |
| 2206 | func (mod *userMod) install(ctx context.Context, dag *dagql.Server, opts ...InstallOpts) error { |
| 2207 | self := mod.self() |
| 2208 | if self == nil { |
| 2209 | return fmt.Errorf("install user module: missing module result wrapper") |
| 2210 | } |
| 2211 | |
| 2212 | slog.ExtraDebug("installing module", "name", self.Name()) |
| 2213 | start := time.Now() |
| 2214 | defer func() { slog.ExtraDebug("done installing module", "name", self.Name(), "took", time.Since(start)) }() |
| 2215 | |
| 2216 | for _, def := range self.ObjectDefs { |
| 2217 | objDef := def.Self().AsObject.Value.Self() |
| 2218 | |
| 2219 | slog.ExtraDebug("installing object", "name", self.Name(), "object", objDef.Name) |
| 2220 | |
| 2221 | modType, ok, err := self.Deps.ModTypeFor(ctx, def.Self()) |
| 2222 | if err != nil { |
| 2223 | return fmt.Errorf("failed to get mod type for type def: %w", err) |
| 2224 | } |
| 2225 | if ok { |
| 2226 | if src := self.GetSource(); src != nil && src.SelfCallsEnabled() { |
| 2227 | slog.ExtraDebug("type is already defined by dependency module", "type", objDef.Name, "module", modType.SourceMod().Name()) |
| 2228 | } else { |
| 2229 | return fmt.Errorf("type %q is already defined by module %q", objDef.Name, modType.SourceMod().Name()) |
| 2230 | } |
| 2231 | } |
| 2232 | |
| 2233 | obj := &ModuleObject{ |
| 2234 | Module: mod.res, |
| 2235 | TypeDef: objDef, |
| 2236 | } |
| 2237 | if err := obj.Install(ctx, dag, opts...); err != nil { |
| 2238 | return err |
| 2239 | } |
| 2240 | } |
| 2241 | |
| 2242 | for _, def := range self.InterfaceDefs { |
| 2243 | ifaceDef := def.Self().AsInterface.Value.Self() |
| 2244 | slog.ExtraDebug("installing interface", "name", self.Name(), "interface", ifaceDef.Name) |
| 2245 | iface := &InterfaceType{ |
| 2246 | typeDef: ifaceDef, |
| 2247 | mod: mod.res, |
| 2248 | } |
| 2249 | if err := iface.Install(ctx, dag); err != nil { |
| 2250 | return err |
| 2251 | } |
| 2252 | } |
| 2253 | |
| 2254 | for _, def := range self.EnumDefs { |
| 2255 | enumDef := def.Self().AsEnum.Value.Self() |
| 2256 | slog.ExtraDebug("installing enum", "name", self.Name(), "enum", enumDef.Name, "members", len(enumDef.Members)) |
| 2257 | enum := &ModuleEnum{TypeDef: enumDef} |
| 2258 | enum.Install(dag) |
| 2259 | } |
| 2260 | |
| 2261 | return nil |
| 2262 | } |
| 2263 |
no test coverage detected