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
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
|
|
}
|