Skip to content

Compogo/dig

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Compogo Dig 🧩

Compogo Dig — это готовая интеграция uber-go/dig с фреймворком Compogo. Добавляется одной строкой и автоматически регистрирует контейнер в DI, делая его доступным для всех компонентов.

🚀 Установка

go get github.com/Compogo/dig

📦 Использование

package main

import (
    "github.com/Compogo/compogo"
    "github.com/Compogo/dig"
    "github.com/Compogo/logrus"
    "github.com/Compogo/myapp/service"
)

func main() {
    app := compogo.NewApp("myapp",
        compogo.WithOsSignalCloser(),
        dig.WithDig(),                          // ← одна строка
        logrus.WithLogrus(),
        compogo.WithComponents(
            service.Component,
        ),
    )

    if err := app.Serve(); err != nil {
        panic(err)
    }
}

✨ Возможности

🔧 Три способа получить контейнер

В любом компоненте можно запросить:

// 1. Как интерфейс container.Container
type Service struct {
    container container.Container
}

// 2. Как *dig.Decorator (с методами Provide/Provides/Invoke)
type Service struct {
    dig *dig.Decorator
}

// 3. Как чистый *dig.Container
type Service struct {
    rawDig *uberDig.Container
}

📦 Пакетная регистрация

container.Provides(
    NewConfig,
    NewService,
    NewRepository,
) // возвращает одну ошибку со всеми проблемами

🧪 Пример компонента, использующего контейнер

var ServiceComponent = &component.Component{
    Init: component.StepFunc(func(c container.Container) error {
        return c.Provides(
            NewService,
            func() *Repository { return NewRepository() },
        )
    }),
    Run: component.StepFunc(func(c container.Container) error {
        return c.Invoke(func(s *Service) {
            s.Start()
        })
    }),
}

About

Compogo Dig — это готовая интеграция Dig с фреймворком Compogo.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages