You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

33 lines
958 B
Go

package server
import (
"log/slog"
"git.runcible.io/learning/ratchet/internal/model"
"github.com/alexedwards/scs/v2"
"github.com/go-playground/form/v4"
)
type RatchetApp struct {
logger *slog.Logger
templateCache *TemplateCache
//Services used by HTTP routes
snippetService model.SnippetServiceInterface
userService model.UserServiceInterface
formDecoder *form.Decoder
sessionManager *scs.SessionManager
}
// TODO this function presents some challenges because it both instantiates new data objects
// and configures route / middleware setup
func NewRatchetApp(logger *slog.Logger, tc *TemplateCache, snippetService model.SnippetServiceInterface, userService model.UserServiceInterface, sm *scs.SessionManager) *RatchetApp {
rs := new(RatchetApp)
rs.logger = logger
rs.snippetService = snippetService
rs.userService = userService
rs.formDecoder = form.NewDecoder()
rs.templateCache = tc
rs.sessionManager = sm
return rs
}