Updating config and application struct and modifying api paths
Signed-off-by: Ethan Wellenreiter <ewellenreiter@gmail.com>
This commit is contained in:
parent
b687b43b35
commit
9b9305db29
@ -14,33 +14,43 @@ import (
|
||||
"github.com/go-chi/httprate"
|
||||
|
||||
// "git.ewellenr.ca/receipt_indexer/backend/internal/auth"
|
||||
|
||||
"git.ewellenr.ca/receipt_indexer/backend/internal/env"
|
||||
"git.ewellenr.ca/receipt_indexer/backend/internal/logger"
|
||||
"git.ewellenr.ca/receipt_indexer/backend/internal/ratelimiter"
|
||||
"git.ewellenr.ca/receipt_indexer/backend/internal/storage"
|
||||
auth_storage "git.ewellenr.ca/receipt_indexer/backend/internal/storage/auth"
|
||||
"git.ewellenr.ca/receipt_indexer/backend/internal/storage/cache"
|
||||
)
|
||||
|
||||
type application struct {
|
||||
// set up the configs stuff here
|
||||
config config
|
||||
auth auth_storage.AuthStorage
|
||||
store storage.Storage
|
||||
logger logger.Logger
|
||||
cacheStorage cache.Storage
|
||||
rateLimiter ratelimiter.Limiter
|
||||
environment env.Environment
|
||||
store storage.Storage // for user storage. also stores authentication stuff
|
||||
logger logger.Logger // logging events/actions/issues
|
||||
cacheStorage cache.Storage // for caching the storage
|
||||
rateLimiter ratelimiter.Limiter // rate limiting users
|
||||
environment env.Environment // accessing environment variables for the setup
|
||||
}
|
||||
|
||||
type config struct {
|
||||
addr string
|
||||
storeCfg storeConfig
|
||||
envCfg envConfig
|
||||
apiUrl string
|
||||
frontendUrl string
|
||||
auth authConfig
|
||||
mail mailConfig
|
||||
cacheCfg redisConfig
|
||||
rateLimiter ratelimiter.Config
|
||||
redisCfg redisConfig
|
||||
|
||||
// holds the different stuff like rate limiter, store, authenticator
|
||||
}
|
||||
|
||||
type storeConfig struct {
|
||||
db dbConfig
|
||||
authStore authConfig
|
||||
}
|
||||
|
||||
type redisConfig struct {
|
||||
addr string
|
||||
pw string
|
||||
@ -108,36 +118,49 @@ func (app *application) mount() http.Handler {
|
||||
|
||||
r.Route("/{groupID}", func(r chi.Router) {
|
||||
|
||||
r.Use(app.addGroupToContextMiddleware)
|
||||
|
||||
r.Get("/", app.getUsersGroupHandler)
|
||||
r.Delete("/", app.removeUserGroupHandler) // maybe this should expect authentication headers to reverify the password when deleting a group you own.
|
||||
|
||||
r.Put("/owner", app.setGroupOwnerHandler)
|
||||
r.Get("/owner", app.getGroupOwnerHandler)
|
||||
|
||||
r.Post("/moderator", app.addGroupModeratorHandler)
|
||||
r.Put("/moderator", app.addGroupModeratorHandler)
|
||||
r.Delete("/moderator/{secondaryuserID}", app.removeModeratorPriviligesHandler)
|
||||
|
||||
r.Get("/users", app.getGroupUsersHandler)
|
||||
r.Post("/users", app.addGroupUserHandler) // needs to create a new user/do the whole invite thing if they don't already exist
|
||||
r.Delete("/users/{secondaryuserID}", app.removeUserFromGroupHandler) // needs to check if the user is an owner/moderator
|
||||
r.Route("/users", func(r chi.Router) {
|
||||
|
||||
r.Use(app.CheckGroupRoleMiddleware) // need to verify that they are an owner/moderator
|
||||
|
||||
r.Get("/", app.getGroupUsersHandler)
|
||||
r.Post("/", app.addGroupUserHandler) // needs to create a new user/do the whole invite thing if they don't already exist
|
||||
r.Delete("/{secondaryuserID}", app.removeUserFromGroupHandler) // needs to check if the user is an owner/moderator
|
||||
})
|
||||
|
||||
})
|
||||
})
|
||||
|
||||
r.Route("/receipts", func(r chi.Router) {
|
||||
r.Get("/", app.getReceiptsHandler)
|
||||
r.Use(app.addQueryParamsToContextMiddleware)
|
||||
|
||||
r.Get("/", app.getReceiptsHandler) // batch get. should allow pagination and potentially a filter of some sort in the request. Does not return images or anything like that. Just the basic data (id, amount, date, location/store)
|
||||
|
||||
r.Route("/{receiptID}", func(r chi.Router) {
|
||||
|
||||
r.Use(app.receiptContextMiddleware)
|
||||
|
||||
r.Get("/", app.getReceiptHandler)
|
||||
r.Delete("/", app.deleteReceiptHandler)
|
||||
|
||||
r.Route("/images", func(r chi.Router) {
|
||||
r.Get("/", app.getReceiptImagesHandler)
|
||||
r.Put("/", app.addReceiptImageHandler)
|
||||
r.Post("/", app.addReceiptImageHandler)
|
||||
r.Route("/{imageID}", func(r chi.Router) {
|
||||
r.Get("/", app.getReceiptImageHandler)
|
||||
r.Put("/", app.changeReceiptImageHandler)
|
||||
r.Delete("/", app.deleteReceiptImageHandler)
|
||||
r.Post("/confirm", app.confirmImageCreationHandler)
|
||||
r.Put("/confirm", app.confirmImageCreationHandler)
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
Loading…
Reference in New Issue
Block a user