60 lines
1.5 KiB
Go
60 lines
1.5 KiB
Go
|
package module
|
||
|
|
||
|
// import (
|
||
|
// "context"
|
||
|
|
||
|
// "github.com/dop251/goja"
|
||
|
// "github.com/pkg/errors"
|
||
|
// "forge.cadoles.com/arcad/edge/pkg/app"
|
||
|
// "forge.cadoles.com/arcad/edge/pkg/repository"
|
||
|
// "gitlab.com/wpetit/goweb/logger"
|
||
|
// )
|
||
|
|
||
|
// type UserModule struct {
|
||
|
// appID app.ID
|
||
|
// repo repository.UserRepository
|
||
|
// backend *app.Backend
|
||
|
// ctx context.Context
|
||
|
// }
|
||
|
|
||
|
// func (m *UserModule) Name() string {
|
||
|
// return "user"
|
||
|
// }
|
||
|
|
||
|
// func (m *UserModule) Export(export *goja.Object) {
|
||
|
// if err := export.Set("getUserById", m.getUserByID); err != nil {
|
||
|
// panic(errors.Wrap(err, "could not set 'getUserById' function"))
|
||
|
// }
|
||
|
// }
|
||
|
|
||
|
// func (m *UserModule) getUserByID(call goja.FunctionCall) goja.Value {
|
||
|
// if len(call.Arguments) != 1 {
|
||
|
// panic(m.backend.ToValue("invalid number of arguments"))
|
||
|
// }
|
||
|
|
||
|
// userID := repository.UserID(call.Arguments[0].String())
|
||
|
|
||
|
// user, err := m.repo.Get(userID)
|
||
|
// if err != nil {
|
||
|
// err = errors.Wrapf(err, "could not find user '%s'", userID)
|
||
|
// logger.Error(m.ctx, "could not find user", logger.E(err), logger.F("userID", userID))
|
||
|
// panic(m.backend.ToValue(err))
|
||
|
// }
|
||
|
|
||
|
// return m.backend.ToValue(user)
|
||
|
// }
|
||
|
|
||
|
// func UserModuleFactory(repo repository.UserRepository) app.BackendModuleFactory {
|
||
|
// return func(appID app.ID, backend *app.Backend) app.BackendModule {
|
||
|
// return &UserModule{
|
||
|
// appID: appID,
|
||
|
// repo: repo,
|
||
|
// backend: backend,
|
||
|
// ctx: logger.With(
|
||
|
// context.Background(),
|
||
|
// logger.F("appID", appID),
|
||
|
// ),
|
||
|
// }
|
||
|
// }
|
||
|
// }
|