fx

package
v0.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 5, 2024 License: MIT Imports: 22 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	OptionConfigurationRepository = fx.Provide(
		fx.Annotate(
			NewConfigurationRepository,
			fx.ParamTags("", `name:"repository-cache"`),
		),
	)
	OptionSiteRepository = fx.Provide(
		fx.Annotate(
			NewSiteRepository,
			fx.ParamTags("", `name:"repository-cache"`),
		),
	)
	OptionPageRepository = fx.Provide(
		fx.Annotate(
			NewPageRepository,
			fx.ParamTags("", `name:"repository-cache"`),
		),
	)
	OptionMenuRepository = fx.Provide(
		fx.Annotate(
			NewMenuRepository,
			fx.ParamTags("", `name:"repository-cache"`),
		),
	)
	OptionNodeRepository = fx.Provide(
		fx.Annotate(
			NewNodeRepository,
			fx.ParamTags("", `name:"repository-cache"`),
		),
	)
	OptionAdminRepository    = fx.Provide(NewAdminRepository)
	OptionTemplateRepository = fx.Provide(NewTemplateRepository)
	OptionThemeRepository    = fx.Provide(NewThemeRepository)

	OptionSessionStore = fx.Provide(NewSessionStore)
	OptionSeeder       = fx.Provide(fx.Annotate(cms.NewDefaultSeeder, fx.As(new(cms.Seeder))))
	OptionMenu         = fx.Provide(fx.Annotate(cms.NewDefaultMenu, fx.As(new(cms.Menu))))
	OptionMatcher      = fx.Provide(
		fx.Annotate(
			cms.NewDefaultMatcher,
			fx.As(new(cms.Matcher)),
			fx.ParamTags(`group:"menu-voter"`),
		),
	)
	OptionURLVoter = fx.Provide(
		fx.Annotate(
			cms.NewURLVoter,
			fx.As(new(cms.Voter)),
			fx.ResultTags(`group:"menu-voter"`),
		),
	)

	OptionSiteSelector = fx.Provide(
		fx.Annotate(
			cms.NewDefaultSiteSelector,
			fx.As(new(cms.SiteSelector)),
		),
	)
	OptionPageHandler = fx.Provide(
		fx.Annotate(
			cms.NewDefaultPageHandler,
			fx.As(new(cms.PageHandler)),
		),
	)
	OptionPageCreateHandler = fx.Provide(cms.NewPageCreateHandler)
	OptionErrorHandler      = fx.Provide(cms.NewErrorHandler)
	OptionHTTPErrorHandler  = fx.Provide(func(h *cms.ErrorHandler) echo.HTTPErrorHandler { return h.Handle })
	OptionErrorResolver     = fx.Provide(cms.ErrorResolver)
	OptionRenderer          = fx.Provide(fx.Annotate(cms.NewRenderer, fx.As(new(echo.Renderer))))

	OptionThemeFuncMap = fx.Provide(fx.Annotate(FuncMap, fx.ResultTags(`group:"theme-func-map"`)))
	OptionThemeLoader  = fx.Provide(fx.Annotate(theme.NewRepositoryLoader, fx.As(new(theme.Loader))))

	OptionBasicAuthValidator = fx.Provide(cms.BasicAuthValidator)
	OptionJWTAuthValidator   = fx.Provide(func(repo repository.Admin, cfg JWTConfig) middleware.KeyAuthValidator {
		return cms.JWTAuthValidator(repo, cfg.Secret)
	})

	OptionSiteSelectorMiddleware = fx.Provide(echox.AsMiddleware(SiteSelectorMiddleware))
	OptionPageSelectorMiddleware = fx.Provide(echox.AsMiddleware(PageSelectorMiddleware))
	OptionHybridPageMiddleware   = fx.Provide(echox.AsMiddleware(HybridPageMiddleware))

	OptionAdminAuthAPI = fx.Provide(
		fx.Annotate(
			NewAuthAPI,
			fx.As(new(echox.APIHandler)),
			fx.ParamTags(`name:"admin-auth-cache"`),
			fx.ResultTags(`group:"api-handler"`),
		),
	)
	OptionAdminAPI         = fx.Provide(echox.AsAPIHandler(NewAdminAPI))
	OptionConfigurationAPI = fx.Provide(echox.AsAPIHandler(NewConfigurationAPI))
	OptionSiteAPI          = fx.Provide(echox.AsAPIHandler(NewSiteAPI))
	OptionPageAPI          = fx.Provide(echox.AsAPIHandler(NewPageAPI))
	OptionTemplateAPI      = fx.Provide(echox.AsAPIHandler(NewTemplateAPI))
	OptionMenuAPI          = fx.Provide(echox.AsAPIHandler(NewMenuAPI))
	OptionNodeAPI          = fx.Provide(echox.AsAPIHandler(NewNodeAPI))
)

Functions

func FuncMap

func FuncMap(pageRepo repository.Page, menu cms.Menu, matcher cms.Matcher) theme.FuncMap

func HybridPageMiddleware

func HybridPageMiddleware(pageHandler cms.PageHandler, cfgRepository repository.Configuration) echox.Middleware

func NewAdminAPI

func NewAdminAPI(r repository.Admin) v1.Admin

func NewAdminRepository

func NewAdminRepository(db *sql.DB) repository.Admin

func NewAuthAPI

func NewAuthAPI(cache cms.Cache, r repository.Admin, cfg JWTConfig, logger *zap.Logger) v1.Auth

func NewConfigurationAPI

func NewConfigurationAPI(r repository.Configuration) v1.Configuration

func NewConfigurationRepository

func NewConfigurationRepository(db *sql.DB, c cms.Cache) repository.Configuration

func NewMenuAPI

func NewMenuAPI(r repository.Menu) v1.Menu

func NewMenuRepository

func NewMenuRepository(db *sql.DB, c cms.Cache) repository.Menu

func NewNodeAPI

func NewNodeAPI(r repository.Node) v1.Node

func NewNodeRepository

func NewNodeRepository(db *sql.DB, c cms.Cache) repository.Node

func NewPageAPI

func NewPageAPI(r repository.Page, cfg repository.Configuration) v1.Page

func NewPageRepository

func NewPageRepository(db *sql.DB, c cms.Cache) repository.Page

func NewSessionStore

func NewSessionStore(cfg SessionStoreConfig, lc fx.Lifecycle, db *sql.DB) scs.Store

func NewSiteAPI

func NewSiteAPI(r repository.Site) v1.Site

func NewSiteRepository

func NewSiteRepository(db *sql.DB, c cms.Cache) repository.Site

func NewTemplateAPI

func NewTemplateAPI(r repository.Template) v1.Template

func NewTemplateRepository

func NewTemplateRepository(params TemplateRepositoryParams) repository.Template

func NewThemeRepository

func NewThemeRepository(r repository.Template) theme.Repository

func PageSelectorMiddleware

func PageSelectorMiddleware(params PageSelectorParams) echox.Middleware

func SeederBoot

func SeederBoot(seeder cms.Seeder, lc fx.Lifecycle)

func SiteSelectorMiddleware

func SiteSelectorMiddleware(siteSelector cms.SiteSelector, cfgRepository repository.Configuration) echox.Middleware

Types

type JWTConfig

type JWTConfig struct {
	Secret               string        `json:"secret,omitempty" yaml:"secret,omitempty"`
	AccessTokenDuration  time.Duration `json:"accessTokenDuration,omitempty" yaml:"accessTokenDuration,omitempty"`
	RefreshTokenDuration time.Duration `json:"refreshTokenDuration,omitempty" yaml:"refreshTokenDuration,omitempty"`
}

func (*JWTConfig) InitDefaults

func (cfg *JWTConfig) InitDefaults()

type PageSelectorParams

type PageSelectorParams struct {
	fx.In
	PageHandler    cms.PageHandler
	CfgRepository  repository.Configuration
	PageRepository repository.Page
}

type SessionStoreConfig

type SessionStoreConfig struct {
	CleanupInterval time.Duration `json:"cleanupInterval,omitempty" yaml:"cleanupInterval,omitempty"`
}

func (*SessionStoreConfig) InitDefaults

func (cfg *SessionStoreConfig) InitDefaults()

type TemplateRepositoryParams

type TemplateRepositoryParams struct {
	Debug bool
	Cache cms.Cache `name:"repository-cache"`
	DB    *sql.DB
	FSS   []fs.FS
}

type ThemeRepository

type ThemeRepository struct {
	// contains filtered or unexported fields
}

func (ThemeRepository) FindByName

func (r ThemeRepository) FindByName(ctx context.Context, name string) (theme.Template, error)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL