package routes import ( "errors" "github.com/labstack/echo/v4" models "vibeStonk/server/models/v1" ) type Provider interface { Provide(middlewares *SystemMiddleware) []*Route } type Route struct { Endpoint Endpoint Method string HandlerFn echo.HandlerFunc Middleware []echo.MiddlewareFunc } // region Endpoint type Endpoint string func (e Endpoint) String() string { return string(e) } func endpoint(endpoint string) Endpoint { return Endpoint("/api/v1" + endpoint) } // endregion // region request context const requestContextKey = "request_context" var ( ErrNoRequestContext = errors.New("no request context found") ErrBadRequestContext = errors.New("context found, but wrong type") ) type RequestContext struct { User *models.User } func newRequestContext(c echo.Context, user *models.User) { ctx := &RequestContext{ User: user, } c.Set(requestContextKey, ctx) } func GetRequestContext(c echo.Context) (*RequestContext, error) { ctxInterface := c.Get(requestContextKey) if ctxInterface == nil { return nil, ErrNoRequestContext } ctx, ok := ctxInterface.(*RequestContext) if !ok { return nil, ErrBadRequestContext } return ctx, nil } // endregion