modregistry

package
v1.0.0 Latest Latest
Warning

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

Go to latest
Published: Jun 1, 2026 License: Apache-2.0 Imports: 8 Imported by: 0

Documentation

Overview

Package module defines the contract Vigil modules implement and the Registry used by cmd/server to compose them.

Each module under modules/* provides a constructor returning Module and is registered in cmd/server/main.go before Registry.MountAll mounts all routes on the shared mux.

Module-specific dependencies that aren't shared across modules (e.g. admin's start time and version, auth's provider config) are passed to the module constructor, not added to Dependencies. The shared Dependencies struct is kept deliberately minimal — every field added forces every module to deal with it.

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrNilModule           = errors.New("module is nil")
	ErrEmptyModuleName     = errors.New("module name is empty")
	ErrDuplicateModuleName = errors.New("module name already registered")
	ErrNilMux              = errors.New("mux is nil")
)

Functions

This section is empty.

Types

type Dependencies

type Dependencies struct {
	Queries *db.Queries
	Authz   *authz.Engine
}

Dependencies contains shared module dependencies.

type DevSeeder

type DevSeeder interface {
	DevSeed(ctx context.Context, deps Dependencies) error
}

DevSeeder is an optional module interface for development data seeding.

type Middleware

type Middleware func(http.Handler) http.Handler

Middleware is a route middleware function.

type Module

type Module interface {
	Name() string
	Register(deps Dependencies, registrar *Registrar) error
}

Module is the explicit contract for feature modules.

type Policy

type Policy struct {
	Resource string
	Action   string
}

type Registrar

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

func NewRegistrar

func NewRegistrar(mux *http.ServeMux, engine *authz.Engine, base ...Middleware) *Registrar

func (*Registrar) Guarded

func (r *Registrar) Guarded(pattern string, p Policy, h http.HandlerFunc, extra ...Middleware)

Guarded always applies policy middleware to the route.

func (*Registrar) Meta

func (r *Registrar) Meta() []RouteMeta

func (*Registrar) Public

func (r *Registrar) Public(pattern string, h http.HandlerFunc, extra ...Middleware)

Public intentionally omits policy middleware.

type Registry

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

Registry stores modules and mounts them in registration order.

func NewRegistry

func NewRegistry() *Registry

func (*Registry) MountAll

func (r *Registry) MountAll(mux *http.ServeMux, deps Dependencies) error

func (*Registry) Register

func (r *Registry) Register(m Module) error

func (*Registry) RouteMeta

func (r *Registry) RouteMeta() []RouteMeta

func (*Registry) SeedDev

func (r *Registry) SeedDev(ctx context.Context, deps Dependencies) error

type RouteMeta

type RouteMeta struct {
	Pattern string
	Policy  *Policy
	Public  bool
}

Jump to

Keyboard shortcuts

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