From 762562d3293e6f22deecb9c9ff224b50c57907e6 Mon Sep 17 00:00:00 2001 From: nyagamunene Date: Wed, 12 Jun 2024 13:03:53 +0300 Subject: [PATCH] Refactor: Users and things Signed-off-by: nyagamunene --- cmd/things/main.go | 6 +- cmd/users/main.go | 25 +-- pkg/clients/clients.go | 22 +-- pkg/clients/postgres/clients.go | 86 +++++----- pkg/clients/postgres/clients_test.go | 6 +- pkg/errors/types.go | 9 +- things/api/logging.go | 31 ++-- things/api/metrics.go | 31 ++-- things/cache/things.go | 6 +- things/events/streams.go | 63 ++++---- things/mocks/cache.go | 33 ++-- things/mocks/repository.go | 168 +++++++++++--------- things/mocks/service.go | 176 ++++++++++++--------- things/postgres/clients.go | 24 +-- things/service.go | 82 +++++----- things/things.go | 37 ++--- things/tracing/tracing.go | 31 ++-- users/api/logging.go | 39 ++--- users/api/metrics.go | 39 ++--- users/clients.go | 39 ++--- users/emailer.go | 4 +- users/emailer/emailer.go | 9 +- users/events/streams.go | 75 ++++----- users/hasher.go | 6 +- users/hasher/hasher.go | 4 +- users/mocks/emailer.go | 15 +- users/mocks/hasher.go | 27 ++-- users/mocks/repository.go | 156 +++++++++++-------- users/mocks/service.go | 224 ++++++++++++++++----------- users/postgres/clients.go | 57 +++---- users/service.go | 90 +++++------ users/tracing/tracing.go | 39 ++--- 32 files changed, 914 insertions(+), 745 deletions(-) diff --git a/cmd/things/main.go b/cmd/things/main.go index 13576981315..a9b606d1024 100644 --- a/cmd/things/main.go +++ b/cmd/things/main.go @@ -237,9 +237,9 @@ func newService(ctx context.Context, db *sqlx.DB, dbConfig pgclient.Config, auth return nil, nil, err } - gsvc, err = gevents.NewEventStoreMiddleware(ctx, gsvc, esURL, streamID) - if err != nil { - return nil, nil, err + gsvc, Err := gevents.NewEventStoreMiddleware(ctx, gsvc, esURL, streamID) + if Err != nil { + return nil, nil, Err } csvc = ctracing.New(csvc, tracer) diff --git a/cmd/users/main.go b/cmd/users/main.go index d96e648c71e..ab2398ff0fa 100644 --- a/cmd/users/main.go +++ b/cmd/users/main.go @@ -32,6 +32,7 @@ import ( mglog "github.com/absmach/magistrala/logger" "github.com/absmach/magistrala/pkg/auth" mgclients "github.com/absmach/magistrala/pkg/clients" + "github.com/absmach/magistrala/pkg/errors" svcerr "github.com/absmach/magistrala/pkg/errors/service" "github.com/absmach/magistrala/pkg/groups" "github.com/absmach/magistrala/pkg/oauth2" @@ -226,9 +227,9 @@ func newService(ctx context.Context, authClient magistrala.AuthServiceClient, db if err != nil { return nil, nil, err } - gsvc, err = gevents.NewEventStoreMiddleware(ctx, gsvc, c.ESURL, streamID) - if err != nil { - return nil, nil, err + gsvc, Err := gevents.NewEventStoreMiddleware(ctx, gsvc, c.ESURL, streamID) + if Err != nil { + return nil, nil, Err } csvc = ctracing.New(csvc, tracer) @@ -251,14 +252,14 @@ func newService(ctx context.Context, authClient magistrala.AuthServiceClient, db return csvc, gsvc, err } -func createAdmin(ctx context.Context, c config, crepo clientspg.Repository, hsr users.Hasher, svc users.Service) (string, error) { +func createAdmin(ctx context.Context, c config, crepo clientspg.Repository, hsr users.Hasher, svc users.Service) (string, errors.Error) { id, err := uuid.New().ID() if err != nil { - return "", err + return "", errors.Cast(err) } - hash, err := hsr.Hash(c.AdminPassword) - if err != nil { - return "", err + hash, Err := hsr.Hash(c.AdminPassword) + if Err != nil { + return "", Err } client := mgclients.Client{ @@ -282,11 +283,11 @@ func createAdmin(ctx context.Context, c config, crepo clientspg.Repository, hsr } // Create an admin - if _, err = crepo.Save(ctx, client); err != nil { - return "", err + if _, Err = crepo.Save(ctx, client); err != nil { + return "", Err } - if _, err = svc.IssueToken(ctx, c.AdminEmail, c.AdminPassword, ""); err != nil { - return "", err + if _, Err = svc.IssueToken(ctx, c.AdminEmail, c.AdminPassword, ""); err != nil { + return "", Err } return client.ID, nil } diff --git a/pkg/clients/clients.go b/pkg/clients/clients.go index 8d16fe91302..2f66e9bf235 100644 --- a/pkg/clients/clients.go +++ b/pkg/clients/clients.go @@ -70,37 +70,37 @@ type MembersPage struct { // Repository specifies an account persistence API. type Repository interface { // RetrieveByID retrieves client by its unique ID. - RetrieveByID(ctx context.Context, id string) (Client, error) + RetrieveByID(ctx context.Context, id string) (Client, errors.Error) // RetrieveByIdentity retrieves client by its unique credentials - RetrieveByIdentity(ctx context.Context, identity string) (Client, error) + RetrieveByIdentity(ctx context.Context, identity string) (Client, errors.Error) // RetrieveAll retrieves all clients. - RetrieveAll(ctx context.Context, pm Page) (ClientsPage, error) + RetrieveAll(ctx context.Context, pm Page) (ClientsPage, errors.Error) // RetrieveAllBasicInfo list all clients only with basic information. - RetrieveAllBasicInfo(ctx context.Context, pm Page) (ClientsPage, error) + RetrieveAllBasicInfo(ctx context.Context, pm Page) (ClientsPage, errors.Error) // RetrieveAllByIDs retrieves for given client IDs . - RetrieveAllByIDs(ctx context.Context, pm Page) (ClientsPage, error) + RetrieveAllByIDs(ctx context.Context, pm Page) (ClientsPage, errors.Error) // Update updates the client name and metadata. - Update(ctx context.Context, client Client) (Client, error) + Update(ctx context.Context, client Client) (Client, errors.Error) // UpdateTags updates the client tags. - UpdateTags(ctx context.Context, client Client) (Client, error) + UpdateTags(ctx context.Context, client Client) (Client, errors.Error) // UpdateIdentity updates identity for client with given id. - UpdateIdentity(ctx context.Context, client Client) (Client, error) + UpdateIdentity(ctx context.Context, client Client) (Client, errors.Error) // UpdateSecret updates secret for client with given identity. - UpdateSecret(ctx context.Context, client Client) (Client, error) + UpdateSecret(ctx context.Context, client Client) (Client, errors.Error) // UpdateRole updates role for client with given id. - UpdateRole(ctx context.Context, client Client) (Client, error) + UpdateRole(ctx context.Context, client Client) (Client, errors.Error) // ChangeStatus changes client status to enabled or disabled - ChangeStatus(ctx context.Context, client Client) (Client, error) + ChangeStatus(ctx context.Context, client Client) (Client, errors.Error) } // Validate returns an error if client representation is invalid. diff --git a/pkg/clients/postgres/clients.go b/pkg/clients/postgres/clients.go index 1ada83f4850..971122e4b4c 100644 --- a/pkg/clients/postgres/clients.go +++ b/pkg/clients/postgres/clients.go @@ -24,7 +24,7 @@ type Repository struct { DB postgres.Database } -func (repo *Repository) Update(ctx context.Context, client clients.Client) (clients.Client, error) { +func (repo *Repository) Update(ctx context.Context, client clients.Client) (clients.Client, errors.Error) { var query []string var upq string if client.Name != "" { @@ -45,7 +45,7 @@ func (repo *Repository) Update(ctx context.Context, client clients.Client) (clie return repo.update(ctx, client, q) } -func (repo *Repository) UpdateTags(ctx context.Context, client clients.Client) (clients.Client, error) { +func (repo *Repository) UpdateTags(ctx context.Context, client clients.Client) (clients.Client, errors.Error) { q := `UPDATE clients SET tags = :tags, updated_at = :updated_at, updated_by = :updated_by WHERE id = :id AND status = :status RETURNING id, name, tags, identity, metadata, COALESCE(domain_id, '') AS domain_id, status, created_at, updated_at, updated_by` @@ -53,7 +53,7 @@ func (repo *Repository) UpdateTags(ctx context.Context, client clients.Client) ( return repo.update(ctx, client, q) } -func (repo *Repository) UpdateIdentity(ctx context.Context, client clients.Client) (clients.Client, error) { +func (repo *Repository) UpdateIdentity(ctx context.Context, client clients.Client) (clients.Client, errors.Error) { q := `UPDATE clients SET identity = :identity, updated_at = :updated_at, updated_by = :updated_by WHERE id = :id AND status = :status RETURNING id, name, tags, identity, metadata, COALESCE(domain_id, '') AS domain_id, status, created_at, updated_at, updated_by` @@ -61,7 +61,7 @@ func (repo *Repository) UpdateIdentity(ctx context.Context, client clients.Clien return repo.update(ctx, client, q) } -func (repo *Repository) UpdateSecret(ctx context.Context, client clients.Client) (clients.Client, error) { +func (repo *Repository) UpdateSecret(ctx context.Context, client clients.Client) (clients.Client, errors.Error) { q := `UPDATE clients SET secret = :secret, updated_at = :updated_at, updated_by = :updated_by WHERE id = :id AND status = :status RETURNING id, name, tags, identity, metadata, COALESCE(domain_id, '') AS domain_id, status, created_at, updated_at, updated_by` @@ -69,15 +69,16 @@ func (repo *Repository) UpdateSecret(ctx context.Context, client clients.Client) return repo.update(ctx, client, q) } -func (repo *Repository) UpdateRole(ctx context.Context, client clients.Client) (clients.Client, error) { +func (repo *Repository) UpdateRole(ctx context.Context, client clients.Client) (clients.Client, errors.Error) { q := `UPDATE clients SET role = :role, updated_at = :updated_at, updated_by = :updated_by WHERE id = :id AND status = :status RETURNING id, name, tags, identity, metadata, COALESCE(domain_id, '') AS domain_id, status, role, created_at, updated_at, updated_by` client.Status = clients.EnabledStatus - return repo.update(ctx, client, q) + cl, err := repo.update(ctx, client, q) + return cl, errors.Cast(err) } -func (repo *Repository) ChangeStatus(ctx context.Context, client clients.Client) (clients.Client, error) { +func (repo *Repository) ChangeStatus(ctx context.Context, client clients.Client) (clients.Client, errors.Error) { q := `UPDATE clients SET status = :status, updated_at = :updated_at, updated_by = :updated_by WHERE id = :id RETURNING id, name, tags, identity, metadata, COALESCE(domain_id, '') AS domain_id, status, created_at, updated_at, updated_by` @@ -85,7 +86,7 @@ func (repo *Repository) ChangeStatus(ctx context.Context, client clients.Client) return repo.update(ctx, client, q) } -func (repo *Repository) RetrieveByID(ctx context.Context, id string) (clients.Client, error) { +func (repo *Repository) RetrieveByID(ctx context.Context, id string) (clients.Client, errors.Error) { q := `SELECT id, name, tags, COALESCE(domain_id, '') AS domain_id, identity, secret, metadata, created_at, updated_at, updated_by, status FROM clients WHERE id = :id` @@ -105,13 +106,14 @@ func (repo *Repository) RetrieveByID(ctx context.Context, id string) (clients.Cl return clients.Client{}, errors.Wrap(repoerr.ErrViewEntity, err) } - return ToClient(dbc) + cl, err := ToClient(dbc) + return cl, errors.Cast(err) } return clients.Client{}, repoerr.ErrNotFound } -func (repo *Repository) RetrieveByIdentity(ctx context.Context, identity string) (clients.Client, error) { +func (repo *Repository) RetrieveByIdentity(ctx context.Context, identity string) (clients.Client, errors.Error) { q := `SELECT id, name, tags, COALESCE(domain_id, '') AS domain_id, identity, secret, metadata, created_at, updated_at, updated_by, status FROM clients WHERE identity = :identity AND status = :status` @@ -122,7 +124,7 @@ func (repo *Repository) RetrieveByIdentity(ctx context.Context, identity string) row, err := repo.DB.NamedQueryContext(ctx, q, dbc) if err != nil { - return clients.Client{}, postgres.HandleError(repoerr.ErrViewEntity, err) + return clients.Client{}, errors.Cast(postgres.HandleError(repoerr.ErrViewEntity, err)) } defer row.Close() @@ -138,7 +140,7 @@ func (repo *Repository) RetrieveByIdentity(ctx context.Context, identity string) return clients.Client{}, repoerr.ErrNotFound } -func (repo *Repository) RetrieveAll(ctx context.Context, pm clients.Page) (clients.ClientsPage, error) { +func (repo *Repository) RetrieveAll(ctx context.Context, pm clients.Page) (clients.ClientsPage, errors.Error) { query, err := PageQuery(pm) if err != nil { return clients.ClientsPage{}, errors.Wrap(repoerr.ErrViewEntity, err) @@ -151,9 +153,9 @@ func (repo *Repository) RetrieveAll(ctx context.Context, pm clients.Page) (clien if err != nil { return clients.ClientsPage{}, errors.Wrap(repoerr.ErrFailedToRetrieveAllGroups, err) } - rows, err := repo.DB.NamedQueryContext(ctx, q, dbPage) - if err != nil { - return clients.ClientsPage{}, errors.Wrap(repoerr.ErrFailedToRetrieveAllGroups, err) + rows, Err := repo.DB.NamedQueryContext(ctx, q, dbPage) + if Err != nil { + return clients.ClientsPage{}, errors.Wrap(repoerr.ErrFailedToRetrieveAllGroups, Err) } defer rows.Close() @@ -173,9 +175,9 @@ func (repo *Repository) RetrieveAll(ctx context.Context, pm clients.Page) (clien } cq := fmt.Sprintf(`SELECT COUNT(*) FROM clients c %s;`, query) - total, err := postgres.Total(ctx, repo.DB, cq, dbPage) - if err != nil { - return clients.ClientsPage{}, errors.Wrap(repoerr.ErrViewEntity, err) + total, Err := postgres.Total(ctx, repo.DB, cq, dbPage) + if Err != nil { + return clients.ClientsPage{}, errors.Wrap(repoerr.ErrViewEntity, Err) } page := clients.ClientsPage{ @@ -190,7 +192,7 @@ func (repo *Repository) RetrieveAll(ctx context.Context, pm clients.Page) (clien return page, nil } -func (repo *Repository) RetrieveAllBasicInfo(ctx context.Context, pm clients.Page) (clients.ClientsPage, error) { +func (repo *Repository) RetrieveAllBasicInfo(ctx context.Context, pm clients.Page) (clients.ClientsPage, errors.Error) { sq, tq := constructSearchQuery(pm) q := fmt.Sprintf(`SELECT c.id, c.name, c.created_at, c.updated_at FROM clients c %s LIMIT :limit OFFSET :offset;`, sq) @@ -200,9 +202,9 @@ func (repo *Repository) RetrieveAllBasicInfo(ctx context.Context, pm clients.Pag return clients.ClientsPage{}, errors.Wrap(repoerr.ErrFailedToRetrieveAllGroups, err) } - rows, err := repo.DB.NamedQueryContext(ctx, q, dbPage) - if err != nil { - return clients.ClientsPage{}, errors.Wrap(repoerr.ErrFailedToRetrieveAllGroups, err) + rows, Err := repo.DB.NamedQueryContext(ctx, q, dbPage) + if Err != nil { + return clients.ClientsPage{}, errors.Wrap(repoerr.ErrFailedToRetrieveAllGroups, Err) } defer rows.Close() @@ -222,9 +224,9 @@ func (repo *Repository) RetrieveAllBasicInfo(ctx context.Context, pm clients.Pag } cq := fmt.Sprintf(`SELECT COUNT(*) FROM clients c %s;`, tq) - total, err := postgres.Total(ctx, repo.DB, cq, dbPage) - if err != nil { - return clients.ClientsPage{}, errors.Wrap(repoerr.ErrViewEntity, err) + total, Err := postgres.Total(ctx, repo.DB, cq, dbPage) + if Err != nil { + return clients.ClientsPage{}, errors.Wrap(repoerr.ErrViewEntity, Err) } page := clients.ClientsPage{ @@ -239,7 +241,7 @@ func (repo *Repository) RetrieveAllBasicInfo(ctx context.Context, pm clients.Pag return page, nil } -func (repo *Repository) RetrieveAllByIDs(ctx context.Context, pm clients.Page) (clients.ClientsPage, error) { +func (repo *Repository) RetrieveAllByIDs(ctx context.Context, pm clients.Page) (clients.ClientsPage, errors.Error) { if (len(pm.IDs) == 0) && (pm.Domain == "") { return clients.ClientsPage{ Page: clients.Page{Total: pm.Total, Offset: pm.Offset, Limit: pm.Limit}, @@ -257,9 +259,9 @@ func (repo *Repository) RetrieveAllByIDs(ctx context.Context, pm clients.Page) ( if err != nil { return clients.ClientsPage{}, errors.Wrap(repoerr.ErrFailedToRetrieveAllGroups, err) } - rows, err := repo.DB.NamedQueryContext(ctx, q, dbPage) - if err != nil { - return clients.ClientsPage{}, errors.Wrap(repoerr.ErrFailedToRetrieveAllGroups, err) + rows, Err := repo.DB.NamedQueryContext(ctx, q, dbPage) + if Err != nil { + return clients.ClientsPage{}, errors.Wrap(repoerr.ErrFailedToRetrieveAllGroups, Err) } defer rows.Close() @@ -279,9 +281,9 @@ func (repo *Repository) RetrieveAllByIDs(ctx context.Context, pm clients.Page) ( } cq := fmt.Sprintf(`SELECT COUNT(*) FROM clients c %s;`, query) - total, err := postgres.Total(ctx, repo.DB, cq, dbPage) - if err != nil { - return clients.ClientsPage{}, errors.Wrap(repoerr.ErrViewEntity, err) + total, Err := postgres.Total(ctx, repo.DB, cq, dbPage) + if Err != nil { + return clients.ClientsPage{}, errors.Wrap(repoerr.ErrViewEntity, Err) } page := clients.ClientsPage{ @@ -296,15 +298,15 @@ func (repo *Repository) RetrieveAllByIDs(ctx context.Context, pm clients.Page) ( return page, nil } -func (repo *Repository) update(ctx context.Context, client clients.Client, query string) (clients.Client, error) { +func (repo *Repository) update(ctx context.Context, client clients.Client, query string) (clients.Client, errors.Error) { dbc, err := ToDBClient(client) if err != nil { return clients.Client{}, errors.Wrap(repoerr.ErrUpdateEntity, err) } - row, err := repo.DB.NamedQueryContext(ctx, query, dbc) - if err != nil { - return clients.Client{}, postgres.HandleError(repoerr.ErrUpdateEntity, err) + row, Err := repo.DB.NamedQueryContext(ctx, query, dbc) + if Err != nil { + return clients.Client{}, errors.Cast(postgres.HandleError(repoerr.ErrUpdateEntity, Err)) } defer row.Close() @@ -336,7 +338,7 @@ type DBClient struct { Role *clients.Role `db:"role,omitempty"` } -func ToDBClient(c clients.Client) (DBClient, error) { +func ToDBClient(c clients.Client) (DBClient, errors.Error) { data := []byte("{}") if len(c.Metadata) > 0 { b, err := json.Marshal(c.Metadata) @@ -346,8 +348,8 @@ func ToDBClient(c clients.Client) (DBClient, error) { data = b } var tags pgtype.TextArray - if err := tags.Set(c.Tags); err != nil { - return DBClient{}, err + if Err := tags.Set(c.Tags); Err != nil { + return DBClient{}, errors.Cast(Err) } var updatedBy *string if c.UpdatedBy != "" { @@ -374,7 +376,7 @@ func ToDBClient(c clients.Client) (DBClient, error) { }, nil } -func ToClient(c DBClient) (clients.Client, error) { +func ToClient(c DBClient) (clients.Client, errors.Error) { var metadata clients.Metadata if c.Metadata != nil { if err := json.Unmarshal([]byte(c.Metadata), &metadata); err != nil { @@ -415,7 +417,7 @@ func ToClient(c DBClient) (clients.Client, error) { return cli, nil } -func ToDBClientsPage(pm clients.Page) (dbClientsPage, error) { +func ToDBClientsPage(pm clients.Page) (dbClientsPage, errors.Error) { _, data, err := postgres.CreateMetadataQuery("", pm.Metadata) if err != nil { return dbClientsPage{}, errors.Wrap(repoerr.ErrViewEntity, err) @@ -448,7 +450,7 @@ type dbClientsPage struct { Role clients.Role `db:"role"` } -func PageQuery(pm clients.Page) (string, error) { +func PageQuery(pm clients.Page) (string, errors.Error) { mq, _, err := postgres.CreateMetadataQuery("", pm.Metadata) if err != nil { return "", errors.Wrap(errors.ErrMalformedEntity, err) diff --git a/pkg/clients/postgres/clients_test.go b/pkg/clients/postgres/clients_test.go index aeb855b001b..a47587ee82c 100644 --- a/pkg/clients/postgres/clients_test.go +++ b/pkg/clients/postgres/clients_test.go @@ -1848,9 +1848,9 @@ func save(ctx context.Context, repo *postgres.Repository, c mgclients.Client) (m return mgclients.Client{}, errors.Wrap(repoerr.ErrCreateEntity, err) } - row, err := repo.DB.NamedQueryContext(ctx, q, dbc) - if err != nil { - return mgclients.Client{}, ipostgres.HandleError(repoerr.ErrCreateEntity, err) + row, Err := repo.DB.NamedQueryContext(ctx, q, dbc) + if Err != nil { + return mgclients.Client{}, ipostgres.HandleError(repoerr.ErrCreateEntity, Err) } defer row.Close() diff --git a/pkg/errors/types.go b/pkg/errors/types.go index 70275f68da3..b72a0a2637c 100644 --- a/pkg/errors/types.go +++ b/pkg/errors/types.go @@ -3,21 +3,20 @@ package errors -import "errors" var ( // ErrMalformedEntity indicates a malformed entity specification. ErrMalformedEntity = New("malformed entity specification") // ErrUnsupportedContentType indicates invalid content type. - ErrUnsupportedContentType = errors.New("invalid content type") + ErrUnsupportedContentType = New("invalid content type") // ErrUnidentified indicates unidentified error. - ErrUnidentified = errors.New("unidentified error") + ErrUnidentified = New("unidentified error") // ErrEmptyPath indicates empty file path. - ErrEmptyPath = errors.New("empty file path") + ErrEmptyPath = New("empty file path") // ErrStatusAlreadyAssigned indicated that the client or group has already been assigned the status. - ErrStatusAlreadyAssigned = errors.New("status already assigned") + ErrStatusAlreadyAssigned = New("status already assigned") ) diff --git a/things/api/logging.go b/things/api/logging.go index 4fc0bd4f6bf..af28403f72a 100644 --- a/things/api/logging.go +++ b/things/api/logging.go @@ -11,6 +11,7 @@ import ( "github.com/absmach/magistrala" mgclients "github.com/absmach/magistrala/pkg/clients" + "github.com/absmach/magistrala/pkg/errors" "github.com/absmach/magistrala/things" ) @@ -25,7 +26,7 @@ func LoggingMiddleware(svc things.Service, logger *slog.Logger) things.Service { return &loggingMiddleware{logger, svc} } -func (lm *loggingMiddleware) CreateThings(ctx context.Context, token string, clients ...mgclients.Client) (cs []mgclients.Client, err error) { +func (lm *loggingMiddleware) CreateThings(ctx context.Context, token string, clients ...mgclients.Client) (cs []mgclients.Client, err errors.Error) { defer func(begin time.Time) { args := []any{ slog.String("duration", time.Since(begin).String()), @@ -40,7 +41,7 @@ func (lm *loggingMiddleware) CreateThings(ctx context.Context, token string, cli return lm.svc.CreateThings(ctx, token, clients...) } -func (lm *loggingMiddleware) ViewClient(ctx context.Context, token, id string) (c mgclients.Client, err error) { +func (lm *loggingMiddleware) ViewClient(ctx context.Context, token, id string) (c mgclients.Client, err errors.Error) { defer func(begin time.Time) { args := []any{ slog.String("duration", time.Since(begin).String()), @@ -59,7 +60,7 @@ func (lm *loggingMiddleware) ViewClient(ctx context.Context, token, id string) ( return lm.svc.ViewClient(ctx, token, id) } -func (lm *loggingMiddleware) ViewClientPerms(ctx context.Context, token, id string) (p []string, err error) { +func (lm *loggingMiddleware) ViewClientPerms(ctx context.Context, token, id string) (p []string, err errors.Error) { defer func(begin time.Time) { args := []any{ slog.String("duration", time.Since(begin).String()), @@ -75,7 +76,7 @@ func (lm *loggingMiddleware) ViewClientPerms(ctx context.Context, token, id stri return lm.svc.ViewClientPerms(ctx, token, id) } -func (lm *loggingMiddleware) ListClients(ctx context.Context, token, reqUserID string, pm mgclients.Page) (cp mgclients.ClientsPage, err error) { +func (lm *loggingMiddleware) ListClients(ctx context.Context, token, reqUserID string, pm mgclients.Page) (cp mgclients.ClientsPage, err errors.Error) { defer func(begin time.Time) { args := []any{ slog.String("duration", time.Since(begin).String()), @@ -96,7 +97,7 @@ func (lm *loggingMiddleware) ListClients(ctx context.Context, token, reqUserID s return lm.svc.ListClients(ctx, token, reqUserID, pm) } -func (lm *loggingMiddleware) UpdateClient(ctx context.Context, token string, client mgclients.Client) (c mgclients.Client, err error) { +func (lm *loggingMiddleware) UpdateClient(ctx context.Context, token string, client mgclients.Client) (c mgclients.Client, err errors.Error) { defer func(begin time.Time) { args := []any{ slog.String("duration", time.Since(begin).String()), @@ -116,7 +117,7 @@ func (lm *loggingMiddleware) UpdateClient(ctx context.Context, token string, cli return lm.svc.UpdateClient(ctx, token, client) } -func (lm *loggingMiddleware) UpdateClientTags(ctx context.Context, token string, client mgclients.Client) (c mgclients.Client, err error) { +func (lm *loggingMiddleware) UpdateClientTags(ctx context.Context, token string, client mgclients.Client) (c mgclients.Client, err errors.Error) { defer func(begin time.Time) { args := []any{ slog.String("duration", time.Since(begin).String()), @@ -136,7 +137,7 @@ func (lm *loggingMiddleware) UpdateClientTags(ctx context.Context, token string, return lm.svc.UpdateClientTags(ctx, token, client) } -func (lm *loggingMiddleware) UpdateClientSecret(ctx context.Context, token, oldSecret, newSecret string) (c mgclients.Client, err error) { +func (lm *loggingMiddleware) UpdateClientSecret(ctx context.Context, token, oldSecret, newSecret string) (c mgclients.Client, err errors.Error) { defer func(begin time.Time) { args := []any{ slog.String("duration", time.Since(begin).String()), @@ -155,7 +156,7 @@ func (lm *loggingMiddleware) UpdateClientSecret(ctx context.Context, token, oldS return lm.svc.UpdateClientSecret(ctx, token, oldSecret, newSecret) } -func (lm *loggingMiddleware) EnableClient(ctx context.Context, token, id string) (c mgclients.Client, err error) { +func (lm *loggingMiddleware) EnableClient(ctx context.Context, token, id string) (c mgclients.Client, err errors.Error) { defer func(begin time.Time) { args := []any{ slog.String("duration", time.Since(begin).String()), @@ -174,7 +175,7 @@ func (lm *loggingMiddleware) EnableClient(ctx context.Context, token, id string) return lm.svc.EnableClient(ctx, token, id) } -func (lm *loggingMiddleware) DisableClient(ctx context.Context, token, id string) (c mgclients.Client, err error) { +func (lm *loggingMiddleware) DisableClient(ctx context.Context, token, id string) (c mgclients.Client, err errors.Error) { defer func(begin time.Time) { args := []any{ slog.String("duration", time.Since(begin).String()), @@ -193,7 +194,7 @@ func (lm *loggingMiddleware) DisableClient(ctx context.Context, token, id string return lm.svc.DisableClient(ctx, token, id) } -func (lm *loggingMiddleware) ListClientsByGroup(ctx context.Context, token, channelID string, cp mgclients.Page) (mp mgclients.MembersPage, err error) { +func (lm *loggingMiddleware) ListClientsByGroup(ctx context.Context, token, channelID string, cp mgclients.Page) (mp mgclients.MembersPage, err errors.Error) { defer func(begin time.Time) { args := []any{ slog.String("duration", time.Since(begin).String()), @@ -214,7 +215,7 @@ func (lm *loggingMiddleware) ListClientsByGroup(ctx context.Context, token, chan return lm.svc.ListClientsByGroup(ctx, token, channelID, cp) } -func (lm *loggingMiddleware) Identify(ctx context.Context, key string) (id string, err error) { +func (lm *loggingMiddleware) Identify(ctx context.Context, key string) (id string, err errors.Error) { defer func(begin time.Time) { args := []any{ slog.String("duration", time.Since(begin).String()), @@ -230,7 +231,7 @@ func (lm *loggingMiddleware) Identify(ctx context.Context, key string) (id strin return lm.svc.Identify(ctx, key) } -func (lm *loggingMiddleware) Authorize(ctx context.Context, req *magistrala.AuthorizeReq) (id string, err error) { +func (lm *loggingMiddleware) Authorize(ctx context.Context, req *magistrala.AuthorizeReq) (id string, err errors.Error) { defer func(begin time.Time) { args := []any{ slog.String("duration", time.Since(begin).String()), @@ -249,7 +250,7 @@ func (lm *loggingMiddleware) Authorize(ctx context.Context, req *magistrala.Auth return lm.svc.Authorize(ctx, req) } -func (lm *loggingMiddleware) Share(ctx context.Context, token, id, relation string, userids ...string) (err error) { +func (lm *loggingMiddleware) Share(ctx context.Context, token, id, relation string, userids ...string) (err errors.Error) { defer func(begin time.Time) { args := []any{ slog.String("duration", time.Since(begin).String()), @@ -267,7 +268,7 @@ func (lm *loggingMiddleware) Share(ctx context.Context, token, id, relation stri return lm.svc.Share(ctx, token, id, relation, userids...) } -func (lm *loggingMiddleware) Unshare(ctx context.Context, token, id, relation string, userids ...string) (err error) { +func (lm *loggingMiddleware) Unshare(ctx context.Context, token, id, relation string, userids ...string) (err errors.Error) { defer func(begin time.Time) { args := []any{ slog.String("duration", time.Since(begin).String()), @@ -285,7 +286,7 @@ func (lm *loggingMiddleware) Unshare(ctx context.Context, token, id, relation st return lm.svc.Unshare(ctx, token, id, relation, userids...) } -func (lm *loggingMiddleware) DeleteClient(ctx context.Context, token, id string) (err error) { +func (lm *loggingMiddleware) DeleteClient(ctx context.Context, token, id string) (err errors.Error) { defer func(begin time.Time) { args := []any{ slog.String("duration", time.Since(begin).String()), diff --git a/things/api/metrics.go b/things/api/metrics.go index 24976d39a88..cabacfeb2ce 100644 --- a/things/api/metrics.go +++ b/things/api/metrics.go @@ -9,6 +9,7 @@ import ( "github.com/absmach/magistrala" mgclients "github.com/absmach/magistrala/pkg/clients" + "github.com/absmach/magistrala/pkg/errors" "github.com/absmach/magistrala/things" "github.com/go-kit/kit/metrics" ) @@ -30,7 +31,7 @@ func MetricsMiddleware(svc things.Service, counter metrics.Counter, latency metr } } -func (ms *metricsMiddleware) CreateThings(ctx context.Context, token string, clients ...mgclients.Client) ([]mgclients.Client, error) { +func (ms *metricsMiddleware) CreateThings(ctx context.Context, token string, clients ...mgclients.Client) ([]mgclients.Client, errors.Error) { defer func(begin time.Time) { ms.counter.With("method", "register_things").Add(1) ms.latency.With("method", "register_things").Observe(time.Since(begin).Seconds()) @@ -38,7 +39,7 @@ func (ms *metricsMiddleware) CreateThings(ctx context.Context, token string, cli return ms.svc.CreateThings(ctx, token, clients...) } -func (ms *metricsMiddleware) ViewClient(ctx context.Context, token, id string) (mgclients.Client, error) { +func (ms *metricsMiddleware) ViewClient(ctx context.Context, token, id string) (mgclients.Client, errors.Error) { defer func(begin time.Time) { ms.counter.With("method", "view_thing").Add(1) ms.latency.With("method", "view_thing").Observe(time.Since(begin).Seconds()) @@ -46,7 +47,7 @@ func (ms *metricsMiddleware) ViewClient(ctx context.Context, token, id string) ( return ms.svc.ViewClient(ctx, token, id) } -func (ms *metricsMiddleware) ViewClientPerms(ctx context.Context, token, id string) ([]string, error) { +func (ms *metricsMiddleware) ViewClientPerms(ctx context.Context, token, id string) ([]string, errors.Error) { defer func(begin time.Time) { ms.counter.With("method", "view_thing_permissions").Add(1) ms.latency.With("method", "view_thing_permissions").Observe(time.Since(begin).Seconds()) @@ -54,7 +55,7 @@ func (ms *metricsMiddleware) ViewClientPerms(ctx context.Context, token, id stri return ms.svc.ViewClientPerms(ctx, token, id) } -func (ms *metricsMiddleware) ListClients(ctx context.Context, token, reqUserID string, pm mgclients.Page) (mgclients.ClientsPage, error) { +func (ms *metricsMiddleware) ListClients(ctx context.Context, token, reqUserID string, pm mgclients.Page) (mgclients.ClientsPage, errors.Error) { defer func(begin time.Time) { ms.counter.With("method", "list_things").Add(1) ms.latency.With("method", "list_things").Observe(time.Since(begin).Seconds()) @@ -62,7 +63,7 @@ func (ms *metricsMiddleware) ListClients(ctx context.Context, token, reqUserID s return ms.svc.ListClients(ctx, token, reqUserID, pm) } -func (ms *metricsMiddleware) UpdateClient(ctx context.Context, token string, client mgclients.Client) (mgclients.Client, error) { +func (ms *metricsMiddleware) UpdateClient(ctx context.Context, token string, client mgclients.Client) (mgclients.Client, errors.Error) { defer func(begin time.Time) { ms.counter.With("method", "update_thing_name_and_metadata").Add(1) ms.latency.With("method", "update_thing_name_and_metadata").Observe(time.Since(begin).Seconds()) @@ -70,7 +71,7 @@ func (ms *metricsMiddleware) UpdateClient(ctx context.Context, token string, cli return ms.svc.UpdateClient(ctx, token, client) } -func (ms *metricsMiddleware) UpdateClientTags(ctx context.Context, token string, client mgclients.Client) (mgclients.Client, error) { +func (ms *metricsMiddleware) UpdateClientTags(ctx context.Context, token string, client mgclients.Client) (mgclients.Client, errors.Error) { defer func(begin time.Time) { ms.counter.With("method", "update_thing_tags").Add(1) ms.latency.With("method", "update_thing_tags").Observe(time.Since(begin).Seconds()) @@ -78,7 +79,7 @@ func (ms *metricsMiddleware) UpdateClientTags(ctx context.Context, token string, return ms.svc.UpdateClientTags(ctx, token, client) } -func (ms *metricsMiddleware) UpdateClientSecret(ctx context.Context, token, oldSecret, newSecret string) (mgclients.Client, error) { +func (ms *metricsMiddleware) UpdateClientSecret(ctx context.Context, token, oldSecret, newSecret string) (mgclients.Client, errors.Error) { defer func(begin time.Time) { ms.counter.With("method", "update_thing_secret").Add(1) ms.latency.With("method", "update_thing_secret").Observe(time.Since(begin).Seconds()) @@ -86,7 +87,7 @@ func (ms *metricsMiddleware) UpdateClientSecret(ctx context.Context, token, oldS return ms.svc.UpdateClientSecret(ctx, token, oldSecret, newSecret) } -func (ms *metricsMiddleware) EnableClient(ctx context.Context, token, id string) (mgclients.Client, error) { +func (ms *metricsMiddleware) EnableClient(ctx context.Context, token, id string) (mgclients.Client, errors.Error) { defer func(begin time.Time) { ms.counter.With("method", "enable_thing").Add(1) ms.latency.With("method", "enable_thing").Observe(time.Since(begin).Seconds()) @@ -94,7 +95,7 @@ func (ms *metricsMiddleware) EnableClient(ctx context.Context, token, id string) return ms.svc.EnableClient(ctx, token, id) } -func (ms *metricsMiddleware) DisableClient(ctx context.Context, token, id string) (mgclients.Client, error) { +func (ms *metricsMiddleware) DisableClient(ctx context.Context, token, id string) (mgclients.Client, errors.Error) { defer func(begin time.Time) { ms.counter.With("method", "disable_thing").Add(1) ms.latency.With("method", "disable_thing").Observe(time.Since(begin).Seconds()) @@ -102,7 +103,7 @@ func (ms *metricsMiddleware) DisableClient(ctx context.Context, token, id string return ms.svc.DisableClient(ctx, token, id) } -func (ms *metricsMiddleware) ListClientsByGroup(ctx context.Context, token, groupID string, pm mgclients.Page) (mp mgclients.MembersPage, err error) { +func (ms *metricsMiddleware) ListClientsByGroup(ctx context.Context, token, groupID string, pm mgclients.Page) (mp mgclients.MembersPage, err errors.Error) { defer func(begin time.Time) { ms.counter.With("method", "list_things_by_channel").Add(1) ms.latency.With("method", "list_things_by_channel").Observe(time.Since(begin).Seconds()) @@ -110,7 +111,7 @@ func (ms *metricsMiddleware) ListClientsByGroup(ctx context.Context, token, grou return ms.svc.ListClientsByGroup(ctx, token, groupID, pm) } -func (ms *metricsMiddleware) Identify(ctx context.Context, key string) (string, error) { +func (ms *metricsMiddleware) Identify(ctx context.Context, key string) (string, errors.Error) { defer func(begin time.Time) { ms.counter.With("method", "identify_thing").Add(1) ms.latency.With("method", "identify_thing").Observe(time.Since(begin).Seconds()) @@ -118,7 +119,7 @@ func (ms *metricsMiddleware) Identify(ctx context.Context, key string) (string, return ms.svc.Identify(ctx, key) } -func (ms *metricsMiddleware) Authorize(ctx context.Context, req *magistrala.AuthorizeReq) (id string, err error) { +func (ms *metricsMiddleware) Authorize(ctx context.Context, req *magistrala.AuthorizeReq) (id string, err errors.Error) { defer func(begin time.Time) { ms.counter.With("method", "authorize").Add(1) ms.latency.With("method", "authorize").Observe(time.Since(begin).Seconds()) @@ -126,7 +127,7 @@ func (ms *metricsMiddleware) Authorize(ctx context.Context, req *magistrala.Auth return ms.svc.Authorize(ctx, req) } -func (ms *metricsMiddleware) Share(ctx context.Context, token, id, relation string, userids ...string) error { +func (ms *metricsMiddleware) Share(ctx context.Context, token, id, relation string, userids ...string) errors.Error { defer func(begin time.Time) { ms.counter.With("method", "share").Add(1) ms.latency.With("method", "share").Observe(time.Since(begin).Seconds()) @@ -134,7 +135,7 @@ func (ms *metricsMiddleware) Share(ctx context.Context, token, id, relation stri return ms.svc.Share(ctx, token, id, relation, userids...) } -func (ms *metricsMiddleware) Unshare(ctx context.Context, token, id, relation string, userids ...string) error { +func (ms *metricsMiddleware) Unshare(ctx context.Context, token, id, relation string, userids ...string) errors.Error { defer func(begin time.Time) { ms.counter.With("method", "unshare").Add(1) ms.latency.With("method", "unshare").Observe(time.Since(begin).Seconds()) @@ -142,7 +143,7 @@ func (ms *metricsMiddleware) Unshare(ctx context.Context, token, id, relation st return ms.svc.Unshare(ctx, token, id, relation, userids...) } -func (ms *metricsMiddleware) DeleteClient(ctx context.Context, token, id string) error { +func (ms *metricsMiddleware) DeleteClient(ctx context.Context, token, id string) errors.Error { defer func(begin time.Time) { ms.counter.With("method", "delete_client").Add(1) ms.latency.With("method", "delete_client").Observe(time.Since(begin).Seconds()) diff --git a/things/cache/things.go b/things/cache/things.go index 9c2619ce48c..ff28eea5f70 100644 --- a/things/cache/things.go +++ b/things/cache/things.go @@ -34,7 +34,7 @@ func NewCache(client *redis.Client, duration time.Duration) things.Cache { } } -func (tc *thingCache) Save(ctx context.Context, thingKey, thingID string) error { +func (tc *thingCache) Save(ctx context.Context, thingKey, thingID string) errors.Error { if thingKey == "" || thingID == "" { return errors.Wrap(repoerr.ErrCreateEntity, errors.New("thing key or thing id is empty")) } @@ -51,7 +51,7 @@ func (tc *thingCache) Save(ctx context.Context, thingKey, thingID string) error return nil } -func (tc *thingCache) ID(ctx context.Context, thingKey string) (string, error) { +func (tc *thingCache) ID(ctx context.Context, thingKey string) (string, errors.Error) { if thingKey == "" { return "", repoerr.ErrNotFound } @@ -65,7 +65,7 @@ func (tc *thingCache) ID(ctx context.Context, thingKey string) (string, error) { return thingID, nil } -func (tc *thingCache) Remove(ctx context.Context, thingID string) error { +func (tc *thingCache) Remove(ctx context.Context, thingID string) errors.Error { tid := fmt.Sprintf("%s:%s", idPrefix, thingID) key, err := tc.client.Get(ctx, tid).Result() // Redis returns Nil Reply when key does not exist. diff --git a/things/events/streams.go b/things/events/streams.go index ca6a392fb20..b47226410ec 100644 --- a/things/events/streams.go +++ b/things/events/streams.go @@ -8,6 +8,7 @@ import ( "github.com/absmach/magistrala" mgclients "github.com/absmach/magistrala/pkg/clients" + "github.com/absmach/magistrala/pkg/errors" "github.com/absmach/magistrala/pkg/events" "github.com/absmach/magistrala/pkg/events/store" "github.com/absmach/magistrala/things" @@ -24,10 +25,10 @@ type eventStore struct { // NewEventStoreMiddleware returns wrapper around things service that sends // events to event store. -func NewEventStoreMiddleware(ctx context.Context, svc things.Service, url string) (things.Service, error) { +func NewEventStoreMiddleware(ctx context.Context, svc things.Service, url string) (things.Service, errors.Error) { publisher, err := store.NewPublisher(ctx, url, streamID) if err != nil { - return nil, err + return nil, errors.Cast(err) } return &eventStore{ @@ -36,7 +37,7 @@ func NewEventStoreMiddleware(ctx context.Context, svc things.Service, url string }, nil } -func (es *eventStore) CreateThings(ctx context.Context, token string, thing ...mgclients.Client) ([]mgclients.Client, error) { +func (es *eventStore) CreateThings(ctx context.Context, token string, thing ...mgclients.Client) ([]mgclients.Client, errors.Error) { sths, err := es.svc.CreateThings(ctx, token, thing...) if err != nil { return sths, err @@ -47,14 +48,14 @@ func (es *eventStore) CreateThings(ctx context.Context, token string, thing ...m th, } if err := es.Publish(ctx, event); err != nil { - return sths, err + return sths, errors.Cast(err) } } return sths, nil } -func (es *eventStore) UpdateClient(ctx context.Context, token string, thing mgclients.Client) (mgclients.Client, error) { +func (es *eventStore) UpdateClient(ctx context.Context, token string, thing mgclients.Client) (mgclients.Client, errors.Error) { cli, err := es.svc.UpdateClient(ctx, token, thing) if err != nil { return cli, err @@ -63,7 +64,7 @@ func (es *eventStore) UpdateClient(ctx context.Context, token string, thing mgcl return es.update(ctx, "", cli) } -func (es *eventStore) UpdateClientTags(ctx context.Context, token string, thing mgclients.Client) (mgclients.Client, error) { +func (es *eventStore) UpdateClientTags(ctx context.Context, token string, thing mgclients.Client) (mgclients.Client, errors.Error) { cli, err := es.svc.UpdateClientTags(ctx, token, thing) if err != nil { return cli, err @@ -72,7 +73,7 @@ func (es *eventStore) UpdateClientTags(ctx context.Context, token string, thing return es.update(ctx, "tags", cli) } -func (es *eventStore) UpdateClientSecret(ctx context.Context, token, id, key string) (mgclients.Client, error) { +func (es *eventStore) UpdateClientSecret(ctx context.Context, token, id, key string) (mgclients.Client, errors.Error) { cli, err := es.svc.UpdateClientSecret(ctx, token, id, key) if err != nil { return cli, err @@ -81,19 +82,19 @@ func (es *eventStore) UpdateClientSecret(ctx context.Context, token, id, key str return es.update(ctx, "secret", cli) } -func (es *eventStore) update(ctx context.Context, operation string, thing mgclients.Client) (mgclients.Client, error) { +func (es *eventStore) update(ctx context.Context, operation string, thing mgclients.Client) (mgclients.Client, errors.Error) { event := updateClientEvent{ thing, operation, } if err := es.Publish(ctx, event); err != nil { - return thing, err + return thing, errors.Cast(err) } return thing, nil } -func (es *eventStore) ViewClient(ctx context.Context, token, id string) (mgclients.Client, error) { +func (es *eventStore) ViewClient(ctx context.Context, token, id string) (mgclients.Client, errors.Error) { cli, err := es.svc.ViewClient(ctx, token, id) if err != nil { return cli, err @@ -103,13 +104,13 @@ func (es *eventStore) ViewClient(ctx context.Context, token, id string) (mgclien cli, } if err := es.Publish(ctx, event); err != nil { - return cli, err + return cli, errors.Cast(err) } return cli, nil } -func (es *eventStore) ViewClientPerms(ctx context.Context, token, id string) ([]string, error) { +func (es *eventStore) ViewClientPerms(ctx context.Context, token, id string) ([]string, errors.Error) { permissions, err := es.svc.ViewClientPerms(ctx, token, id) if err != nil { return permissions, err @@ -119,13 +120,13 @@ func (es *eventStore) ViewClientPerms(ctx context.Context, token, id string) ([] permissions, } if err := es.Publish(ctx, event); err != nil { - return permissions, err + return permissions, errors.Cast(err) } return permissions, nil } -func (es *eventStore) ListClients(ctx context.Context, token, reqUserID string, pm mgclients.Page) (mgclients.ClientsPage, error) { +func (es *eventStore) ListClients(ctx context.Context, token, reqUserID string, pm mgclients.Page) (mgclients.ClientsPage, errors.Error) { cp, err := es.svc.ListClients(ctx, token, reqUserID, pm) if err != nil { return cp, err @@ -135,13 +136,13 @@ func (es *eventStore) ListClients(ctx context.Context, token, reqUserID string, pm, } if err := es.Publish(ctx, event); err != nil { - return cp, err + return cp, errors.Cast(err) } return cp, nil } -func (es *eventStore) ListClientsByGroup(ctx context.Context, token, chID string, pm mgclients.Page) (mgclients.MembersPage, error) { +func (es *eventStore) ListClientsByGroup(ctx context.Context, token, chID string, pm mgclients.Page) (mgclients.MembersPage, errors.Error) { mp, err := es.svc.ListClientsByGroup(ctx, token, chID, pm) if err != nil { return mp, err @@ -150,13 +151,13 @@ func (es *eventStore) ListClientsByGroup(ctx context.Context, token, chID string pm, chID, } if err := es.Publish(ctx, event); err != nil { - return mp, err + return mp, errors.Cast(err) } return mp, nil } -func (es *eventStore) EnableClient(ctx context.Context, token, id string) (mgclients.Client, error) { +func (es *eventStore) EnableClient(ctx context.Context, token, id string) (mgclients.Client, errors.Error) { cli, err := es.svc.EnableClient(ctx, token, id) if err != nil { return cli, err @@ -165,7 +166,7 @@ func (es *eventStore) EnableClient(ctx context.Context, token, id string) (mgcli return es.changeStatus(ctx, cli) } -func (es *eventStore) DisableClient(ctx context.Context, token, id string) (mgclients.Client, error) { +func (es *eventStore) DisableClient(ctx context.Context, token, id string) (mgclients.Client, errors.Error) { cli, err := es.svc.DisableClient(ctx, token, id) if err != nil { return cli, err @@ -174,7 +175,7 @@ func (es *eventStore) DisableClient(ctx context.Context, token, id string) (mgcl return es.changeStatus(ctx, cli) } -func (es *eventStore) changeStatus(ctx context.Context, cli mgclients.Client) (mgclients.Client, error) { +func (es *eventStore) changeStatus(ctx context.Context, cli mgclients.Client) (mgclients.Client, errors.Error) { event := changeStatusClientEvent{ id: cli.ID, updatedAt: cli.UpdatedAt, @@ -182,13 +183,13 @@ func (es *eventStore) changeStatus(ctx context.Context, cli mgclients.Client) (m status: cli.Status.String(), } if err := es.Publish(ctx, event); err != nil { - return cli, err + return cli, errors.Cast(err) } return cli, nil } -func (es *eventStore) Identify(ctx context.Context, key string) (string, error) { +func (es *eventStore) Identify(ctx context.Context, key string) (string, errors.Error) { thingID, err := es.svc.Identify(ctx, key) if err != nil { return thingID, err @@ -198,12 +199,12 @@ func (es *eventStore) Identify(ctx context.Context, key string) (string, error) } if err := es.Publish(ctx, event); err != nil { - return thingID, err + return thingID, errors.Cast(err) } return thingID, nil } -func (es *eventStore) Authorize(ctx context.Context, req *magistrala.AuthorizeReq) (string, error) { +func (es *eventStore) Authorize(ctx context.Context, req *magistrala.AuthorizeReq) (string, errors.Error) { thingID, err := es.svc.Authorize(ctx, req) if err != nil { return thingID, err @@ -216,13 +217,13 @@ func (es *eventStore) Authorize(ctx context.Context, req *magistrala.AuthorizeRe } if err := es.Publish(ctx, event); err != nil { - return thingID, err + return thingID, errors.Cast(err) } return thingID, nil } -func (es *eventStore) Share(ctx context.Context, token, id, relation string, userids ...string) error { +func (es *eventStore) Share(ctx context.Context, token, id, relation string, userids ...string) errors.Error { if err := es.svc.Share(ctx, token, id, relation, userids...); err != nil { return err } @@ -234,10 +235,10 @@ func (es *eventStore) Share(ctx context.Context, token, id, relation string, use userIDs: userids, } - return es.Publish(ctx, event) + return errors.Cast(es.Publish(ctx, event)) } -func (es *eventStore) Unshare(ctx context.Context, token, id, relation string, userids ...string) error { +func (es *eventStore) Unshare(ctx context.Context, token, id, relation string, userids ...string) errors.Error { if err := es.svc.Unshare(ctx, token, id, relation, userids...); err != nil { return err } @@ -249,10 +250,10 @@ func (es *eventStore) Unshare(ctx context.Context, token, id, relation string, u userIDs: userids, } - return es.Publish(ctx, event) + return errors.Cast(es.Publish(ctx, event)) } -func (es *eventStore) DeleteClient(ctx context.Context, token, id string) error { +func (es *eventStore) DeleteClient(ctx context.Context, token, id string) errors.Error { if err := es.svc.DeleteClient(ctx, token, id); err != nil { return err } @@ -260,7 +261,7 @@ func (es *eventStore) DeleteClient(ctx context.Context, token, id string) error event := removeClientEvent{id} if err := es.Publish(ctx, event); err != nil { - return err + return errors.Cast(err) } return nil diff --git a/things/mocks/cache.go b/things/mocks/cache.go index 63423099977..8320f7b464c 100644 --- a/things/mocks/cache.go +++ b/things/mocks/cache.go @@ -7,6 +7,7 @@ package mocks import ( context "context" + errors "github.com/absmach/magistrala/pkg/errors" mock "github.com/stretchr/testify/mock" ) @@ -16,7 +17,7 @@ type Cache struct { } // ID provides a mock function with given fields: ctx, thingSecret -func (_m *Cache) ID(ctx context.Context, thingSecret string) (string, error) { +func (_m *Cache) ID(ctx context.Context, thingSecret string) (string, errors.Error) { ret := _m.Called(ctx, thingSecret) if len(ret) == 0 { @@ -24,8 +25,8 @@ func (_m *Cache) ID(ctx context.Context, thingSecret string) (string, error) { } var r0 string - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, string) (string, error)); ok { + var r1 errors.Error + if rf, ok := ret.Get(0).(func(context.Context, string) (string, errors.Error)); ok { return rf(ctx, thingSecret) } if rf, ok := ret.Get(0).(func(context.Context, string) string); ok { @@ -34,46 +35,52 @@ func (_m *Cache) ID(ctx context.Context, thingSecret string) (string, error) { r0 = ret.Get(0).(string) } - if rf, ok := ret.Get(1).(func(context.Context, string) error); ok { + if rf, ok := ret.Get(1).(func(context.Context, string) errors.Error); ok { r1 = rf(ctx, thingSecret) } else { - r1 = ret.Error(1) + if ret.Get(1) != nil { + r1 = ret.Get(1).(errors.Error) + } } return r0, r1 } // Remove provides a mock function with given fields: ctx, thingID -func (_m *Cache) Remove(ctx context.Context, thingID string) error { +func (_m *Cache) Remove(ctx context.Context, thingID string) errors.Error { ret := _m.Called(ctx, thingID) if len(ret) == 0 { panic("no return value specified for Remove") } - var r0 error - if rf, ok := ret.Get(0).(func(context.Context, string) error); ok { + var r0 errors.Error + if rf, ok := ret.Get(0).(func(context.Context, string) errors.Error); ok { r0 = rf(ctx, thingID) } else { - r0 = ret.Error(0) + if ret.Get(0) != nil { + r0 = ret.Get(0).(errors.Error) + } } return r0 } // Save provides a mock function with given fields: ctx, thingSecret, thingID -func (_m *Cache) Save(ctx context.Context, thingSecret string, thingID string) error { +func (_m *Cache) Save(ctx context.Context, thingSecret string, thingID string) errors.Error { ret := _m.Called(ctx, thingSecret, thingID) if len(ret) == 0 { panic("no return value specified for Save") } - var r0 error - if rf, ok := ret.Get(0).(func(context.Context, string, string) error); ok { + var r0 errors.Error + if rf, ok := ret.Get(0).(func(context.Context, string, string) errors.Error); ok { r0 = rf(ctx, thingSecret, thingID) } else { - r0 = ret.Error(0) + if ret.Get(0) != nil { + r0 = ret.Get(0).(errors.Error) + } } return r0 diff --git a/things/mocks/repository.go b/things/mocks/repository.go index 3640bfc14f7..6ddcd836d8f 100644 --- a/things/mocks/repository.go +++ b/things/mocks/repository.go @@ -9,6 +9,8 @@ import ( clients "github.com/absmach/magistrala/pkg/clients" + errors "github.com/absmach/magistrala/pkg/errors" + mock "github.com/stretchr/testify/mock" ) @@ -18,7 +20,7 @@ type Repository struct { } // ChangeStatus provides a mock function with given fields: ctx, client -func (_m *Repository) ChangeStatus(ctx context.Context, client clients.Client) (clients.Client, error) { +func (_m *Repository) ChangeStatus(ctx context.Context, client clients.Client) (clients.Client, errors.Error) { ret := _m.Called(ctx, client) if len(ret) == 0 { @@ -26,8 +28,8 @@ func (_m *Repository) ChangeStatus(ctx context.Context, client clients.Client) ( } var r0 clients.Client - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, clients.Client) (clients.Client, error)); ok { + var r1 errors.Error + if rf, ok := ret.Get(0).(func(context.Context, clients.Client) (clients.Client, errors.Error)); ok { return rf(ctx, client) } if rf, ok := ret.Get(0).(func(context.Context, clients.Client) clients.Client); ok { @@ -36,35 +38,39 @@ func (_m *Repository) ChangeStatus(ctx context.Context, client clients.Client) ( r0 = ret.Get(0).(clients.Client) } - if rf, ok := ret.Get(1).(func(context.Context, clients.Client) error); ok { + if rf, ok := ret.Get(1).(func(context.Context, clients.Client) errors.Error); ok { r1 = rf(ctx, client) } else { - r1 = ret.Error(1) + if ret.Get(1) != nil { + r1 = ret.Get(1).(errors.Error) + } } return r0, r1 } // Delete provides a mock function with given fields: ctx, id -func (_m *Repository) Delete(ctx context.Context, id string) error { +func (_m *Repository) Delete(ctx context.Context, id string) errors.Error { ret := _m.Called(ctx, id) if len(ret) == 0 { panic("no return value specified for Delete") } - var r0 error - if rf, ok := ret.Get(0).(func(context.Context, string) error); ok { + var r0 errors.Error + if rf, ok := ret.Get(0).(func(context.Context, string) errors.Error); ok { r0 = rf(ctx, id) } else { - r0 = ret.Error(0) + if ret.Get(0) != nil { + r0 = ret.Get(0).(errors.Error) + } } return r0 } // RetrieveAll provides a mock function with given fields: ctx, pm -func (_m *Repository) RetrieveAll(ctx context.Context, pm clients.Page) (clients.ClientsPage, error) { +func (_m *Repository) RetrieveAll(ctx context.Context, pm clients.Page) (clients.ClientsPage, errors.Error) { ret := _m.Called(ctx, pm) if len(ret) == 0 { @@ -72,8 +78,8 @@ func (_m *Repository) RetrieveAll(ctx context.Context, pm clients.Page) (clients } var r0 clients.ClientsPage - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, clients.Page) (clients.ClientsPage, error)); ok { + var r1 errors.Error + if rf, ok := ret.Get(0).(func(context.Context, clients.Page) (clients.ClientsPage, errors.Error)); ok { return rf(ctx, pm) } if rf, ok := ret.Get(0).(func(context.Context, clients.Page) clients.ClientsPage); ok { @@ -82,17 +88,19 @@ func (_m *Repository) RetrieveAll(ctx context.Context, pm clients.Page) (clients r0 = ret.Get(0).(clients.ClientsPage) } - if rf, ok := ret.Get(1).(func(context.Context, clients.Page) error); ok { + if rf, ok := ret.Get(1).(func(context.Context, clients.Page) errors.Error); ok { r1 = rf(ctx, pm) } else { - r1 = ret.Error(1) + if ret.Get(1) != nil { + r1 = ret.Get(1).(errors.Error) + } } return r0, r1 } // RetrieveAllBasicInfo provides a mock function with given fields: ctx, pm -func (_m *Repository) RetrieveAllBasicInfo(ctx context.Context, pm clients.Page) (clients.ClientsPage, error) { +func (_m *Repository) RetrieveAllBasicInfo(ctx context.Context, pm clients.Page) (clients.ClientsPage, errors.Error) { ret := _m.Called(ctx, pm) if len(ret) == 0 { @@ -100,8 +108,8 @@ func (_m *Repository) RetrieveAllBasicInfo(ctx context.Context, pm clients.Page) } var r0 clients.ClientsPage - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, clients.Page) (clients.ClientsPage, error)); ok { + var r1 errors.Error + if rf, ok := ret.Get(0).(func(context.Context, clients.Page) (clients.ClientsPage, errors.Error)); ok { return rf(ctx, pm) } if rf, ok := ret.Get(0).(func(context.Context, clients.Page) clients.ClientsPage); ok { @@ -110,17 +118,19 @@ func (_m *Repository) RetrieveAllBasicInfo(ctx context.Context, pm clients.Page) r0 = ret.Get(0).(clients.ClientsPage) } - if rf, ok := ret.Get(1).(func(context.Context, clients.Page) error); ok { + if rf, ok := ret.Get(1).(func(context.Context, clients.Page) errors.Error); ok { r1 = rf(ctx, pm) } else { - r1 = ret.Error(1) + if ret.Get(1) != nil { + r1 = ret.Get(1).(errors.Error) + } } return r0, r1 } // RetrieveAllByIDs provides a mock function with given fields: ctx, pm -func (_m *Repository) RetrieveAllByIDs(ctx context.Context, pm clients.Page) (clients.ClientsPage, error) { +func (_m *Repository) RetrieveAllByIDs(ctx context.Context, pm clients.Page) (clients.ClientsPage, errors.Error) { ret := _m.Called(ctx, pm) if len(ret) == 0 { @@ -128,8 +138,8 @@ func (_m *Repository) RetrieveAllByIDs(ctx context.Context, pm clients.Page) (cl } var r0 clients.ClientsPage - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, clients.Page) (clients.ClientsPage, error)); ok { + var r1 errors.Error + if rf, ok := ret.Get(0).(func(context.Context, clients.Page) (clients.ClientsPage, errors.Error)); ok { return rf(ctx, pm) } if rf, ok := ret.Get(0).(func(context.Context, clients.Page) clients.ClientsPage); ok { @@ -138,17 +148,19 @@ func (_m *Repository) RetrieveAllByIDs(ctx context.Context, pm clients.Page) (cl r0 = ret.Get(0).(clients.ClientsPage) } - if rf, ok := ret.Get(1).(func(context.Context, clients.Page) error); ok { + if rf, ok := ret.Get(1).(func(context.Context, clients.Page) errors.Error); ok { r1 = rf(ctx, pm) } else { - r1 = ret.Error(1) + if ret.Get(1) != nil { + r1 = ret.Get(1).(errors.Error) + } } return r0, r1 } // RetrieveByID provides a mock function with given fields: ctx, id -func (_m *Repository) RetrieveByID(ctx context.Context, id string) (clients.Client, error) { +func (_m *Repository) RetrieveByID(ctx context.Context, id string) (clients.Client, errors.Error) { ret := _m.Called(ctx, id) if len(ret) == 0 { @@ -156,8 +168,8 @@ func (_m *Repository) RetrieveByID(ctx context.Context, id string) (clients.Clie } var r0 clients.Client - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, string) (clients.Client, error)); ok { + var r1 errors.Error + if rf, ok := ret.Get(0).(func(context.Context, string) (clients.Client, errors.Error)); ok { return rf(ctx, id) } if rf, ok := ret.Get(0).(func(context.Context, string) clients.Client); ok { @@ -166,17 +178,19 @@ func (_m *Repository) RetrieveByID(ctx context.Context, id string) (clients.Clie r0 = ret.Get(0).(clients.Client) } - if rf, ok := ret.Get(1).(func(context.Context, string) error); ok { + if rf, ok := ret.Get(1).(func(context.Context, string) errors.Error); ok { r1 = rf(ctx, id) } else { - r1 = ret.Error(1) + if ret.Get(1) != nil { + r1 = ret.Get(1).(errors.Error) + } } return r0, r1 } // RetrieveByIdentity provides a mock function with given fields: ctx, identity -func (_m *Repository) RetrieveByIdentity(ctx context.Context, identity string) (clients.Client, error) { +func (_m *Repository) RetrieveByIdentity(ctx context.Context, identity string) (clients.Client, errors.Error) { ret := _m.Called(ctx, identity) if len(ret) == 0 { @@ -184,8 +198,8 @@ func (_m *Repository) RetrieveByIdentity(ctx context.Context, identity string) ( } var r0 clients.Client - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, string) (clients.Client, error)); ok { + var r1 errors.Error + if rf, ok := ret.Get(0).(func(context.Context, string) (clients.Client, errors.Error)); ok { return rf(ctx, identity) } if rf, ok := ret.Get(0).(func(context.Context, string) clients.Client); ok { @@ -194,17 +208,19 @@ func (_m *Repository) RetrieveByIdentity(ctx context.Context, identity string) ( r0 = ret.Get(0).(clients.Client) } - if rf, ok := ret.Get(1).(func(context.Context, string) error); ok { + if rf, ok := ret.Get(1).(func(context.Context, string) errors.Error); ok { r1 = rf(ctx, identity) } else { - r1 = ret.Error(1) + if ret.Get(1) != nil { + r1 = ret.Get(1).(errors.Error) + } } return r0, r1 } // RetrieveBySecret provides a mock function with given fields: ctx, key -func (_m *Repository) RetrieveBySecret(ctx context.Context, key string) (clients.Client, error) { +func (_m *Repository) RetrieveBySecret(ctx context.Context, key string) (clients.Client, errors.Error) { ret := _m.Called(ctx, key) if len(ret) == 0 { @@ -212,8 +228,8 @@ func (_m *Repository) RetrieveBySecret(ctx context.Context, key string) (clients } var r0 clients.Client - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, string) (clients.Client, error)); ok { + var r1 errors.Error + if rf, ok := ret.Get(0).(func(context.Context, string) (clients.Client, errors.Error)); ok { return rf(ctx, key) } if rf, ok := ret.Get(0).(func(context.Context, string) clients.Client); ok { @@ -222,17 +238,19 @@ func (_m *Repository) RetrieveBySecret(ctx context.Context, key string) (clients r0 = ret.Get(0).(clients.Client) } - if rf, ok := ret.Get(1).(func(context.Context, string) error); ok { + if rf, ok := ret.Get(1).(func(context.Context, string) errors.Error); ok { r1 = rf(ctx, key) } else { - r1 = ret.Error(1) + if ret.Get(1) != nil { + r1 = ret.Get(1).(errors.Error) + } } return r0, r1 } // Save provides a mock function with given fields: ctx, client -func (_m *Repository) Save(ctx context.Context, client ...clients.Client) ([]clients.Client, error) { +func (_m *Repository) Save(ctx context.Context, client ...clients.Client) ([]clients.Client, errors.Error) { _va := make([]interface{}, len(client)) for _i := range client { _va[_i] = client[_i] @@ -247,8 +265,8 @@ func (_m *Repository) Save(ctx context.Context, client ...clients.Client) ([]cli } var r0 []clients.Client - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, ...clients.Client) ([]clients.Client, error)); ok { + var r1 errors.Error + if rf, ok := ret.Get(0).(func(context.Context, ...clients.Client) ([]clients.Client, errors.Error)); ok { return rf(ctx, client...) } if rf, ok := ret.Get(0).(func(context.Context, ...clients.Client) []clients.Client); ok { @@ -259,17 +277,19 @@ func (_m *Repository) Save(ctx context.Context, client ...clients.Client) ([]cli } } - if rf, ok := ret.Get(1).(func(context.Context, ...clients.Client) error); ok { + if rf, ok := ret.Get(1).(func(context.Context, ...clients.Client) errors.Error); ok { r1 = rf(ctx, client...) } else { - r1 = ret.Error(1) + if ret.Get(1) != nil { + r1 = ret.Get(1).(errors.Error) + } } return r0, r1 } // Update provides a mock function with given fields: ctx, client -func (_m *Repository) Update(ctx context.Context, client clients.Client) (clients.Client, error) { +func (_m *Repository) Update(ctx context.Context, client clients.Client) (clients.Client, errors.Error) { ret := _m.Called(ctx, client) if len(ret) == 0 { @@ -277,8 +297,8 @@ func (_m *Repository) Update(ctx context.Context, client clients.Client) (client } var r0 clients.Client - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, clients.Client) (clients.Client, error)); ok { + var r1 errors.Error + if rf, ok := ret.Get(0).(func(context.Context, clients.Client) (clients.Client, errors.Error)); ok { return rf(ctx, client) } if rf, ok := ret.Get(0).(func(context.Context, clients.Client) clients.Client); ok { @@ -287,17 +307,19 @@ func (_m *Repository) Update(ctx context.Context, client clients.Client) (client r0 = ret.Get(0).(clients.Client) } - if rf, ok := ret.Get(1).(func(context.Context, clients.Client) error); ok { + if rf, ok := ret.Get(1).(func(context.Context, clients.Client) errors.Error); ok { r1 = rf(ctx, client) } else { - r1 = ret.Error(1) + if ret.Get(1) != nil { + r1 = ret.Get(1).(errors.Error) + } } return r0, r1 } // UpdateIdentity provides a mock function with given fields: ctx, client -func (_m *Repository) UpdateIdentity(ctx context.Context, client clients.Client) (clients.Client, error) { +func (_m *Repository) UpdateIdentity(ctx context.Context, client clients.Client) (clients.Client, errors.Error) { ret := _m.Called(ctx, client) if len(ret) == 0 { @@ -305,8 +327,8 @@ func (_m *Repository) UpdateIdentity(ctx context.Context, client clients.Client) } var r0 clients.Client - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, clients.Client) (clients.Client, error)); ok { + var r1 errors.Error + if rf, ok := ret.Get(0).(func(context.Context, clients.Client) (clients.Client, errors.Error)); ok { return rf(ctx, client) } if rf, ok := ret.Get(0).(func(context.Context, clients.Client) clients.Client); ok { @@ -315,17 +337,19 @@ func (_m *Repository) UpdateIdentity(ctx context.Context, client clients.Client) r0 = ret.Get(0).(clients.Client) } - if rf, ok := ret.Get(1).(func(context.Context, clients.Client) error); ok { + if rf, ok := ret.Get(1).(func(context.Context, clients.Client) errors.Error); ok { r1 = rf(ctx, client) } else { - r1 = ret.Error(1) + if ret.Get(1) != nil { + r1 = ret.Get(1).(errors.Error) + } } return r0, r1 } // UpdateRole provides a mock function with given fields: ctx, client -func (_m *Repository) UpdateRole(ctx context.Context, client clients.Client) (clients.Client, error) { +func (_m *Repository) UpdateRole(ctx context.Context, client clients.Client) (clients.Client, errors.Error) { ret := _m.Called(ctx, client) if len(ret) == 0 { @@ -333,8 +357,8 @@ func (_m *Repository) UpdateRole(ctx context.Context, client clients.Client) (cl } var r0 clients.Client - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, clients.Client) (clients.Client, error)); ok { + var r1 errors.Error + if rf, ok := ret.Get(0).(func(context.Context, clients.Client) (clients.Client, errors.Error)); ok { return rf(ctx, client) } if rf, ok := ret.Get(0).(func(context.Context, clients.Client) clients.Client); ok { @@ -343,17 +367,19 @@ func (_m *Repository) UpdateRole(ctx context.Context, client clients.Client) (cl r0 = ret.Get(0).(clients.Client) } - if rf, ok := ret.Get(1).(func(context.Context, clients.Client) error); ok { + if rf, ok := ret.Get(1).(func(context.Context, clients.Client) errors.Error); ok { r1 = rf(ctx, client) } else { - r1 = ret.Error(1) + if ret.Get(1) != nil { + r1 = ret.Get(1).(errors.Error) + } } return r0, r1 } // UpdateSecret provides a mock function with given fields: ctx, client -func (_m *Repository) UpdateSecret(ctx context.Context, client clients.Client) (clients.Client, error) { +func (_m *Repository) UpdateSecret(ctx context.Context, client clients.Client) (clients.Client, errors.Error) { ret := _m.Called(ctx, client) if len(ret) == 0 { @@ -361,8 +387,8 @@ func (_m *Repository) UpdateSecret(ctx context.Context, client clients.Client) ( } var r0 clients.Client - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, clients.Client) (clients.Client, error)); ok { + var r1 errors.Error + if rf, ok := ret.Get(0).(func(context.Context, clients.Client) (clients.Client, errors.Error)); ok { return rf(ctx, client) } if rf, ok := ret.Get(0).(func(context.Context, clients.Client) clients.Client); ok { @@ -371,17 +397,19 @@ func (_m *Repository) UpdateSecret(ctx context.Context, client clients.Client) ( r0 = ret.Get(0).(clients.Client) } - if rf, ok := ret.Get(1).(func(context.Context, clients.Client) error); ok { + if rf, ok := ret.Get(1).(func(context.Context, clients.Client) errors.Error); ok { r1 = rf(ctx, client) } else { - r1 = ret.Error(1) + if ret.Get(1) != nil { + r1 = ret.Get(1).(errors.Error) + } } return r0, r1 } // UpdateTags provides a mock function with given fields: ctx, client -func (_m *Repository) UpdateTags(ctx context.Context, client clients.Client) (clients.Client, error) { +func (_m *Repository) UpdateTags(ctx context.Context, client clients.Client) (clients.Client, errors.Error) { ret := _m.Called(ctx, client) if len(ret) == 0 { @@ -389,8 +417,8 @@ func (_m *Repository) UpdateTags(ctx context.Context, client clients.Client) (cl } var r0 clients.Client - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, clients.Client) (clients.Client, error)); ok { + var r1 errors.Error + if rf, ok := ret.Get(0).(func(context.Context, clients.Client) (clients.Client, errors.Error)); ok { return rf(ctx, client) } if rf, ok := ret.Get(0).(func(context.Context, clients.Client) clients.Client); ok { @@ -399,10 +427,12 @@ func (_m *Repository) UpdateTags(ctx context.Context, client clients.Client) (cl r0 = ret.Get(0).(clients.Client) } - if rf, ok := ret.Get(1).(func(context.Context, clients.Client) error); ok { + if rf, ok := ret.Get(1).(func(context.Context, clients.Client) errors.Error); ok { r1 = rf(ctx, client) } else { - r1 = ret.Error(1) + if ret.Get(1) != nil { + r1 = ret.Get(1).(errors.Error) + } } return r0, r1 diff --git a/things/mocks/service.go b/things/mocks/service.go index f66ec855749..029a8bb106c 100644 --- a/things/mocks/service.go +++ b/things/mocks/service.go @@ -9,6 +9,8 @@ import ( clients "github.com/absmach/magistrala/pkg/clients" + errors "github.com/absmach/magistrala/pkg/errors" + magistrala "github.com/absmach/magistrala" mock "github.com/stretchr/testify/mock" @@ -20,7 +22,7 @@ type Service struct { } // Authorize provides a mock function with given fields: ctx, req -func (_m *Service) Authorize(ctx context.Context, req *magistrala.AuthorizeReq) (string, error) { +func (_m *Service) Authorize(ctx context.Context, req *magistrala.AuthorizeReq) (string, errors.Error) { ret := _m.Called(ctx, req) if len(ret) == 0 { @@ -28,8 +30,8 @@ func (_m *Service) Authorize(ctx context.Context, req *magistrala.AuthorizeReq) } var r0 string - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, *magistrala.AuthorizeReq) (string, error)); ok { + var r1 errors.Error + if rf, ok := ret.Get(0).(func(context.Context, *magistrala.AuthorizeReq) (string, errors.Error)); ok { return rf(ctx, req) } if rf, ok := ret.Get(0).(func(context.Context, *magistrala.AuthorizeReq) string); ok { @@ -38,17 +40,19 @@ func (_m *Service) Authorize(ctx context.Context, req *magistrala.AuthorizeReq) r0 = ret.Get(0).(string) } - if rf, ok := ret.Get(1).(func(context.Context, *magistrala.AuthorizeReq) error); ok { + if rf, ok := ret.Get(1).(func(context.Context, *magistrala.AuthorizeReq) errors.Error); ok { r1 = rf(ctx, req) } else { - r1 = ret.Error(1) + if ret.Get(1) != nil { + r1 = ret.Get(1).(errors.Error) + } } return r0, r1 } // CreateThings provides a mock function with given fields: ctx, token, client -func (_m *Service) CreateThings(ctx context.Context, token string, client ...clients.Client) ([]clients.Client, error) { +func (_m *Service) CreateThings(ctx context.Context, token string, client ...clients.Client) ([]clients.Client, errors.Error) { _va := make([]interface{}, len(client)) for _i := range client { _va[_i] = client[_i] @@ -63,8 +67,8 @@ func (_m *Service) CreateThings(ctx context.Context, token string, client ...cli } var r0 []clients.Client - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, string, ...clients.Client) ([]clients.Client, error)); ok { + var r1 errors.Error + if rf, ok := ret.Get(0).(func(context.Context, string, ...clients.Client) ([]clients.Client, errors.Error)); ok { return rf(ctx, token, client...) } if rf, ok := ret.Get(0).(func(context.Context, string, ...clients.Client) []clients.Client); ok { @@ -75,35 +79,39 @@ func (_m *Service) CreateThings(ctx context.Context, token string, client ...cli } } - if rf, ok := ret.Get(1).(func(context.Context, string, ...clients.Client) error); ok { + if rf, ok := ret.Get(1).(func(context.Context, string, ...clients.Client) errors.Error); ok { r1 = rf(ctx, token, client...) } else { - r1 = ret.Error(1) + if ret.Get(1) != nil { + r1 = ret.Get(1).(errors.Error) + } } return r0, r1 } // DeleteClient provides a mock function with given fields: ctx, token, id -func (_m *Service) DeleteClient(ctx context.Context, token string, id string) error { +func (_m *Service) DeleteClient(ctx context.Context, token string, id string) errors.Error { ret := _m.Called(ctx, token, id) if len(ret) == 0 { panic("no return value specified for DeleteClient") } - var r0 error - if rf, ok := ret.Get(0).(func(context.Context, string, string) error); ok { + var r0 errors.Error + if rf, ok := ret.Get(0).(func(context.Context, string, string) errors.Error); ok { r0 = rf(ctx, token, id) } else { - r0 = ret.Error(0) + if ret.Get(0) != nil { + r0 = ret.Get(0).(errors.Error) + } } return r0 } // DisableClient provides a mock function with given fields: ctx, token, id -func (_m *Service) DisableClient(ctx context.Context, token string, id string) (clients.Client, error) { +func (_m *Service) DisableClient(ctx context.Context, token string, id string) (clients.Client, errors.Error) { ret := _m.Called(ctx, token, id) if len(ret) == 0 { @@ -111,8 +119,8 @@ func (_m *Service) DisableClient(ctx context.Context, token string, id string) ( } var r0 clients.Client - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, string, string) (clients.Client, error)); ok { + var r1 errors.Error + if rf, ok := ret.Get(0).(func(context.Context, string, string) (clients.Client, errors.Error)); ok { return rf(ctx, token, id) } if rf, ok := ret.Get(0).(func(context.Context, string, string) clients.Client); ok { @@ -121,17 +129,19 @@ func (_m *Service) DisableClient(ctx context.Context, token string, id string) ( r0 = ret.Get(0).(clients.Client) } - if rf, ok := ret.Get(1).(func(context.Context, string, string) error); ok { + if rf, ok := ret.Get(1).(func(context.Context, string, string) errors.Error); ok { r1 = rf(ctx, token, id) } else { - r1 = ret.Error(1) + if ret.Get(1) != nil { + r1 = ret.Get(1).(errors.Error) + } } return r0, r1 } // EnableClient provides a mock function with given fields: ctx, token, id -func (_m *Service) EnableClient(ctx context.Context, token string, id string) (clients.Client, error) { +func (_m *Service) EnableClient(ctx context.Context, token string, id string) (clients.Client, errors.Error) { ret := _m.Called(ctx, token, id) if len(ret) == 0 { @@ -139,8 +149,8 @@ func (_m *Service) EnableClient(ctx context.Context, token string, id string) (c } var r0 clients.Client - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, string, string) (clients.Client, error)); ok { + var r1 errors.Error + if rf, ok := ret.Get(0).(func(context.Context, string, string) (clients.Client, errors.Error)); ok { return rf(ctx, token, id) } if rf, ok := ret.Get(0).(func(context.Context, string, string) clients.Client); ok { @@ -149,17 +159,19 @@ func (_m *Service) EnableClient(ctx context.Context, token string, id string) (c r0 = ret.Get(0).(clients.Client) } - if rf, ok := ret.Get(1).(func(context.Context, string, string) error); ok { + if rf, ok := ret.Get(1).(func(context.Context, string, string) errors.Error); ok { r1 = rf(ctx, token, id) } else { - r1 = ret.Error(1) + if ret.Get(1) != nil { + r1 = ret.Get(1).(errors.Error) + } } return r0, r1 } // Identify provides a mock function with given fields: ctx, key -func (_m *Service) Identify(ctx context.Context, key string) (string, error) { +func (_m *Service) Identify(ctx context.Context, key string) (string, errors.Error) { ret := _m.Called(ctx, key) if len(ret) == 0 { @@ -167,8 +179,8 @@ func (_m *Service) Identify(ctx context.Context, key string) (string, error) { } var r0 string - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, string) (string, error)); ok { + var r1 errors.Error + if rf, ok := ret.Get(0).(func(context.Context, string) (string, errors.Error)); ok { return rf(ctx, key) } if rf, ok := ret.Get(0).(func(context.Context, string) string); ok { @@ -177,17 +189,19 @@ func (_m *Service) Identify(ctx context.Context, key string) (string, error) { r0 = ret.Get(0).(string) } - if rf, ok := ret.Get(1).(func(context.Context, string) error); ok { + if rf, ok := ret.Get(1).(func(context.Context, string) errors.Error); ok { r1 = rf(ctx, key) } else { - r1 = ret.Error(1) + if ret.Get(1) != nil { + r1 = ret.Get(1).(errors.Error) + } } return r0, r1 } // ListClients provides a mock function with given fields: ctx, token, reqUserID, pm -func (_m *Service) ListClients(ctx context.Context, token string, reqUserID string, pm clients.Page) (clients.ClientsPage, error) { +func (_m *Service) ListClients(ctx context.Context, token string, reqUserID string, pm clients.Page) (clients.ClientsPage, errors.Error) { ret := _m.Called(ctx, token, reqUserID, pm) if len(ret) == 0 { @@ -195,8 +209,8 @@ func (_m *Service) ListClients(ctx context.Context, token string, reqUserID stri } var r0 clients.ClientsPage - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, string, string, clients.Page) (clients.ClientsPage, error)); ok { + var r1 errors.Error + if rf, ok := ret.Get(0).(func(context.Context, string, string, clients.Page) (clients.ClientsPage, errors.Error)); ok { return rf(ctx, token, reqUserID, pm) } if rf, ok := ret.Get(0).(func(context.Context, string, string, clients.Page) clients.ClientsPage); ok { @@ -205,17 +219,19 @@ func (_m *Service) ListClients(ctx context.Context, token string, reqUserID stri r0 = ret.Get(0).(clients.ClientsPage) } - if rf, ok := ret.Get(1).(func(context.Context, string, string, clients.Page) error); ok { + if rf, ok := ret.Get(1).(func(context.Context, string, string, clients.Page) errors.Error); ok { r1 = rf(ctx, token, reqUserID, pm) } else { - r1 = ret.Error(1) + if ret.Get(1) != nil { + r1 = ret.Get(1).(errors.Error) + } } return r0, r1 } // ListClientsByGroup provides a mock function with given fields: ctx, token, groupID, pm -func (_m *Service) ListClientsByGroup(ctx context.Context, token string, groupID string, pm clients.Page) (clients.MembersPage, error) { +func (_m *Service) ListClientsByGroup(ctx context.Context, token string, groupID string, pm clients.Page) (clients.MembersPage, errors.Error) { ret := _m.Called(ctx, token, groupID, pm) if len(ret) == 0 { @@ -223,8 +239,8 @@ func (_m *Service) ListClientsByGroup(ctx context.Context, token string, groupID } var r0 clients.MembersPage - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, string, string, clients.Page) (clients.MembersPage, error)); ok { + var r1 errors.Error + if rf, ok := ret.Get(0).(func(context.Context, string, string, clients.Page) (clients.MembersPage, errors.Error)); ok { return rf(ctx, token, groupID, pm) } if rf, ok := ret.Get(0).(func(context.Context, string, string, clients.Page) clients.MembersPage); ok { @@ -233,17 +249,19 @@ func (_m *Service) ListClientsByGroup(ctx context.Context, token string, groupID r0 = ret.Get(0).(clients.MembersPage) } - if rf, ok := ret.Get(1).(func(context.Context, string, string, clients.Page) error); ok { + if rf, ok := ret.Get(1).(func(context.Context, string, string, clients.Page) errors.Error); ok { r1 = rf(ctx, token, groupID, pm) } else { - r1 = ret.Error(1) + if ret.Get(1) != nil { + r1 = ret.Get(1).(errors.Error) + } } return r0, r1 } // Share provides a mock function with given fields: ctx, token, id, relation, userids -func (_m *Service) Share(ctx context.Context, token string, id string, relation string, userids ...string) error { +func (_m *Service) Share(ctx context.Context, token string, id string, relation string, userids ...string) errors.Error { _va := make([]interface{}, len(userids)) for _i := range userids { _va[_i] = userids[_i] @@ -257,18 +275,20 @@ func (_m *Service) Share(ctx context.Context, token string, id string, relation panic("no return value specified for Share") } - var r0 error - if rf, ok := ret.Get(0).(func(context.Context, string, string, string, ...string) error); ok { + var r0 errors.Error + if rf, ok := ret.Get(0).(func(context.Context, string, string, string, ...string) errors.Error); ok { r0 = rf(ctx, token, id, relation, userids...) } else { - r0 = ret.Error(0) + if ret.Get(0) != nil { + r0 = ret.Get(0).(errors.Error) + } } return r0 } // Unshare provides a mock function with given fields: ctx, token, id, relation, userids -func (_m *Service) Unshare(ctx context.Context, token string, id string, relation string, userids ...string) error { +func (_m *Service) Unshare(ctx context.Context, token string, id string, relation string, userids ...string) errors.Error { _va := make([]interface{}, len(userids)) for _i := range userids { _va[_i] = userids[_i] @@ -282,18 +302,20 @@ func (_m *Service) Unshare(ctx context.Context, token string, id string, relatio panic("no return value specified for Unshare") } - var r0 error - if rf, ok := ret.Get(0).(func(context.Context, string, string, string, ...string) error); ok { + var r0 errors.Error + if rf, ok := ret.Get(0).(func(context.Context, string, string, string, ...string) errors.Error); ok { r0 = rf(ctx, token, id, relation, userids...) } else { - r0 = ret.Error(0) + if ret.Get(0) != nil { + r0 = ret.Get(0).(errors.Error) + } } return r0 } // UpdateClient provides a mock function with given fields: ctx, token, client -func (_m *Service) UpdateClient(ctx context.Context, token string, client clients.Client) (clients.Client, error) { +func (_m *Service) UpdateClient(ctx context.Context, token string, client clients.Client) (clients.Client, errors.Error) { ret := _m.Called(ctx, token, client) if len(ret) == 0 { @@ -301,8 +323,8 @@ func (_m *Service) UpdateClient(ctx context.Context, token string, client client } var r0 clients.Client - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, string, clients.Client) (clients.Client, error)); ok { + var r1 errors.Error + if rf, ok := ret.Get(0).(func(context.Context, string, clients.Client) (clients.Client, errors.Error)); ok { return rf(ctx, token, client) } if rf, ok := ret.Get(0).(func(context.Context, string, clients.Client) clients.Client); ok { @@ -311,17 +333,19 @@ func (_m *Service) UpdateClient(ctx context.Context, token string, client client r0 = ret.Get(0).(clients.Client) } - if rf, ok := ret.Get(1).(func(context.Context, string, clients.Client) error); ok { + if rf, ok := ret.Get(1).(func(context.Context, string, clients.Client) errors.Error); ok { r1 = rf(ctx, token, client) } else { - r1 = ret.Error(1) + if ret.Get(1) != nil { + r1 = ret.Get(1).(errors.Error) + } } return r0, r1 } // UpdateClientSecret provides a mock function with given fields: ctx, token, id, key -func (_m *Service) UpdateClientSecret(ctx context.Context, token string, id string, key string) (clients.Client, error) { +func (_m *Service) UpdateClientSecret(ctx context.Context, token string, id string, key string) (clients.Client, errors.Error) { ret := _m.Called(ctx, token, id, key) if len(ret) == 0 { @@ -329,8 +353,8 @@ func (_m *Service) UpdateClientSecret(ctx context.Context, token string, id stri } var r0 clients.Client - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, string, string, string) (clients.Client, error)); ok { + var r1 errors.Error + if rf, ok := ret.Get(0).(func(context.Context, string, string, string) (clients.Client, errors.Error)); ok { return rf(ctx, token, id, key) } if rf, ok := ret.Get(0).(func(context.Context, string, string, string) clients.Client); ok { @@ -339,17 +363,19 @@ func (_m *Service) UpdateClientSecret(ctx context.Context, token string, id stri r0 = ret.Get(0).(clients.Client) } - if rf, ok := ret.Get(1).(func(context.Context, string, string, string) error); ok { + if rf, ok := ret.Get(1).(func(context.Context, string, string, string) errors.Error); ok { r1 = rf(ctx, token, id, key) } else { - r1 = ret.Error(1) + if ret.Get(1) != nil { + r1 = ret.Get(1).(errors.Error) + } } return r0, r1 } // UpdateClientTags provides a mock function with given fields: ctx, token, client -func (_m *Service) UpdateClientTags(ctx context.Context, token string, client clients.Client) (clients.Client, error) { +func (_m *Service) UpdateClientTags(ctx context.Context, token string, client clients.Client) (clients.Client, errors.Error) { ret := _m.Called(ctx, token, client) if len(ret) == 0 { @@ -357,8 +383,8 @@ func (_m *Service) UpdateClientTags(ctx context.Context, token string, client cl } var r0 clients.Client - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, string, clients.Client) (clients.Client, error)); ok { + var r1 errors.Error + if rf, ok := ret.Get(0).(func(context.Context, string, clients.Client) (clients.Client, errors.Error)); ok { return rf(ctx, token, client) } if rf, ok := ret.Get(0).(func(context.Context, string, clients.Client) clients.Client); ok { @@ -367,17 +393,19 @@ func (_m *Service) UpdateClientTags(ctx context.Context, token string, client cl r0 = ret.Get(0).(clients.Client) } - if rf, ok := ret.Get(1).(func(context.Context, string, clients.Client) error); ok { + if rf, ok := ret.Get(1).(func(context.Context, string, clients.Client) errors.Error); ok { r1 = rf(ctx, token, client) } else { - r1 = ret.Error(1) + if ret.Get(1) != nil { + r1 = ret.Get(1).(errors.Error) + } } return r0, r1 } // ViewClient provides a mock function with given fields: ctx, token, id -func (_m *Service) ViewClient(ctx context.Context, token string, id string) (clients.Client, error) { +func (_m *Service) ViewClient(ctx context.Context, token string, id string) (clients.Client, errors.Error) { ret := _m.Called(ctx, token, id) if len(ret) == 0 { @@ -385,8 +413,8 @@ func (_m *Service) ViewClient(ctx context.Context, token string, id string) (cli } var r0 clients.Client - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, string, string) (clients.Client, error)); ok { + var r1 errors.Error + if rf, ok := ret.Get(0).(func(context.Context, string, string) (clients.Client, errors.Error)); ok { return rf(ctx, token, id) } if rf, ok := ret.Get(0).(func(context.Context, string, string) clients.Client); ok { @@ -395,17 +423,19 @@ func (_m *Service) ViewClient(ctx context.Context, token string, id string) (cli r0 = ret.Get(0).(clients.Client) } - if rf, ok := ret.Get(1).(func(context.Context, string, string) error); ok { + if rf, ok := ret.Get(1).(func(context.Context, string, string) errors.Error); ok { r1 = rf(ctx, token, id) } else { - r1 = ret.Error(1) + if ret.Get(1) != nil { + r1 = ret.Get(1).(errors.Error) + } } return r0, r1 } // ViewClientPerms provides a mock function with given fields: ctx, token, id -func (_m *Service) ViewClientPerms(ctx context.Context, token string, id string) ([]string, error) { +func (_m *Service) ViewClientPerms(ctx context.Context, token string, id string) ([]string, errors.Error) { ret := _m.Called(ctx, token, id) if len(ret) == 0 { @@ -413,8 +443,8 @@ func (_m *Service) ViewClientPerms(ctx context.Context, token string, id string) } var r0 []string - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, string, string) ([]string, error)); ok { + var r1 errors.Error + if rf, ok := ret.Get(0).(func(context.Context, string, string) ([]string, errors.Error)); ok { return rf(ctx, token, id) } if rf, ok := ret.Get(0).(func(context.Context, string, string) []string); ok { @@ -425,10 +455,12 @@ func (_m *Service) ViewClientPerms(ctx context.Context, token string, id string) } } - if rf, ok := ret.Get(1).(func(context.Context, string, string) error); ok { + if rf, ok := ret.Get(1).(func(context.Context, string, string) errors.Error); ok { r1 = rf(ctx, token, id) } else { - r1 = ret.Error(1) + if ret.Get(1) != nil { + r1 = ret.Get(1).(errors.Error) + } } return r0, r1 diff --git a/things/postgres/clients.go b/things/postgres/clients.go index 69e9f066fdf..440b1b94e54 100644 --- a/things/postgres/clients.go +++ b/things/postgres/clients.go @@ -29,13 +29,13 @@ type Repository interface { // Save persists the client account. A non-nil error is returned to indicate // operation failure. - Save(ctx context.Context, client ...mgclients.Client) ([]mgclients.Client, error) + Save(ctx context.Context, client ...mgclients.Client) ([]mgclients.Client, errors.Error) // RetrieveBySecret retrieves a client based on the secret (key). - RetrieveBySecret(ctx context.Context, key string) (mgclients.Client, error) + RetrieveBySecret(ctx context.Context, key string) (mgclients.Client, errors.Error) // Delete deletes client with given id - Delete(ctx context.Context, id string) error + Delete(ctx context.Context, id string) errors.Error } // NewRepository instantiates a PostgreSQL @@ -46,7 +46,7 @@ func NewRepository(db postgres.Database) Repository { } } -func (repo clientRepo) Save(ctx context.Context, cs ...mgclients.Client) ([]mgclients.Client, error) { +func (repo clientRepo) Save(ctx context.Context, cs ...mgclients.Client) ([]mgclients.Client, errors.Error) { tx, err := repo.DB.BeginTxx(ctx, nil) if err != nil { return []mgclients.Client{}, errors.Wrap(repoerr.ErrCreateEntity, err) @@ -63,10 +63,10 @@ func (repo clientRepo) Save(ctx context.Context, cs ...mgclients.Client) ([]mgcl return []mgclients.Client{}, errors.Wrap(repoerr.ErrCreateEntity, err) } - row, err := repo.DB.NamedQueryContext(ctx, q, dbcli) - if err != nil { + row, Err := repo.DB.NamedQueryContext(ctx, q, dbcli) + if Err != nil { if err := tx.Rollback(); err != nil { - return []mgclients.Client{}, postgres.HandleError(repoerr.ErrCreateEntity, err) + return []mgclients.Client{}, errors.Cast(postgres.HandleError(repoerr.ErrCreateEntity, Err)) } return []mgclients.Client{}, errors.Wrap(repoerr.ErrCreateEntity, err) } @@ -93,7 +93,7 @@ func (repo clientRepo) Save(ctx context.Context, cs ...mgclients.Client) ([]mgcl return clients, nil } -func (repo clientRepo) RetrieveBySecret(ctx context.Context, key string) (mgclients.Client, error) { +func (repo clientRepo) RetrieveBySecret(ctx context.Context, key string) (mgclients.Client, errors.Error) { q := fmt.Sprintf(`SELECT id, name, tags, COALESCE(domain_id, '') AS domain_id, identity, secret, metadata, created_at, updated_at, updated_by, status FROM clients WHERE secret = :secret AND status = %d`, mgclients.EnabledStatus) @@ -104,14 +104,14 @@ func (repo clientRepo) RetrieveBySecret(ctx context.Context, key string) (mgclie rows, err := repo.DB.NamedQueryContext(ctx, q, dbc) if err != nil { - return mgclients.Client{}, postgres.HandleError(repoerr.ErrViewEntity, err) + return mgclients.Client{}, errors.Cast(postgres.HandleError(repoerr.ErrViewEntity, err)) } defer rows.Close() dbc = pgclients.DBClient{} if rows.Next() { if err = rows.StructScan(&dbc); err != nil { - return mgclients.Client{}, postgres.HandleError(repoerr.ErrViewEntity, err) + return mgclients.Client{}, errors.Cast(postgres.HandleError(repoerr.ErrViewEntity, err)) } client, err := pgclients.ToClient(dbc) @@ -125,12 +125,12 @@ func (repo clientRepo) RetrieveBySecret(ctx context.Context, key string) (mgclie return mgclients.Client{}, repoerr.ErrNotFound } -func (repo clientRepo) Delete(ctx context.Context, id string) error { +func (repo clientRepo) Delete(ctx context.Context, id string) errors.Error { q := "DELETE FROM clients AS c WHERE c.id = $1 ;" result, err := repo.DB.ExecContext(ctx, q, id) if err != nil { - return postgres.HandleError(repoerr.ErrRemoveEntity, err) + return errors.Cast(postgres.HandleError(repoerr.ErrRemoveEntity, err)) } if rows, _ := result.RowsAffected(); rows == 0 { return repoerr.ErrNotFound diff --git a/things/service.go b/things/service.go index 57b53f5dad6..dc5683eb9f5 100644 --- a/things/service.go +++ b/things/service.go @@ -35,7 +35,7 @@ func NewService(uauth magistrala.AuthServiceClient, c postgres.Repository, grepo } } -func (svc service) Authorize(ctx context.Context, req *magistrala.AuthorizeReq) (string, error) { +func (svc service) Authorize(ctx context.Context, req *magistrala.AuthorizeReq) (string, errors.Error) { thingID, err := svc.Identify(ctx, req.GetSubject()) if err != nil { return "", err @@ -48,9 +48,9 @@ func (svc service) Authorize(ctx context.Context, req *magistrala.AuthorizeReq) Object: thingID, Permission: req.GetPermission(), } - resp, err := svc.auth.Authorize(ctx, r) - if err != nil { - return "", errors.Wrap(svcerr.ErrAuthorization, err) + resp, Err := svc.auth.Authorize(ctx, r) + if Err != nil { + return "", errors.Wrap(svcerr.ErrAuthorization, Err) } if !resp.GetAuthorized() { return "", svcerr.ErrAuthorization @@ -59,7 +59,7 @@ func (svc service) Authorize(ctx context.Context, req *magistrala.AuthorizeReq) return thingID, nil } -func (svc service) CreateThings(ctx context.Context, token string, cls ...mgclients.Client) ([]mgclients.Client, error) { +func (svc service) CreateThings(ctx context.Context, token string, cls ...mgclients.Client) ([]mgclients.Client, errors.Error) { user, err := svc.identify(ctx, token) if err != nil { return []mgclients.Client{}, err @@ -74,14 +74,14 @@ func (svc service) CreateThings(ctx context.Context, token string, cls ...mgclie if c.ID == "" { clientID, err := svc.idProvider.ID() if err != nil { - return []mgclients.Client{}, err + return []mgclients.Client{}, errors.Cast(err) } c.ID = clientID } if c.Credentials.Secret == "" { key, err := svc.idProvider.ID() if err != nil { - return []mgclients.Client{}, err + return []mgclients.Client{}, errors.Cast(err) } c.Credentials.Secret = key } @@ -125,7 +125,7 @@ func (svc service) CreateThings(ctx context.Context, token string, cls ...mgclie return saved, nil } -func (svc service) ViewClient(ctx context.Context, token, id string) (mgclients.Client, error) { +func (svc service) ViewClient(ctx context.Context, token, id string) (mgclients.Client, errors.Error) { _, err := svc.authorize(ctx, "", auth.UserType, auth.TokenKind, token, auth.ViewPermission, auth.ThingType, id) if err != nil { return mgclients.Client{}, err @@ -137,7 +137,7 @@ func (svc service) ViewClient(ctx context.Context, token, id string) (mgclients. return client, nil } -func (svc service) ViewClientPerms(ctx context.Context, token, id string) ([]string, error) { +func (svc service) ViewClientPerms(ctx context.Context, token, id string) ([]string, errors.Error) { res, err := svc.identify(ctx, token) if err != nil { return nil, err @@ -153,7 +153,7 @@ func (svc service) ViewClientPerms(ctx context.Context, token, id string) ([]str return permissions, nil } -func (svc service) ListClients(ctx context.Context, token, reqUserID string, pm mgclients.Page) (mgclients.ClientsPage, error) { +func (svc service) ListClients(ctx context.Context, token, reqUserID string, pm mgclients.Page) (mgclients.ClientsPage, errors.Error) { var ids []string res, err := svc.identify(ctx, token) @@ -211,14 +211,14 @@ func (svc service) ListClients(ctx context.Context, token, reqUserID string, pm } if err := g.Wait(); err != nil { - return mgclients.ClientsPage{}, err + return mgclients.ClientsPage{}, errors.Cast(err) } } return tp, nil } // Experimental functions used for async calling of svc.listUserThingPermission. This might be helpful during listing of large number of entities. -func (svc service) retrievePermissions(ctx context.Context, userID string, client *mgclients.Client) error { +func (svc service) retrievePermissions(ctx context.Context, userID string, client *mgclients.Client) errors.Error { permissions, err := svc.listUserThingPermission(ctx, userID, client.ID) if err != nil { return err @@ -227,7 +227,7 @@ func (svc service) retrievePermissions(ctx context.Context, userID string, clien return nil } -func (svc service) listUserThingPermission(ctx context.Context, userID, thingID string) ([]string, error) { +func (svc service) listUserThingPermission(ctx context.Context, userID, thingID string) ([]string, errors.Error) { lp, err := svc.auth.ListPermissions(ctx, &magistrala.ListPermissionsReq{ SubjectType: auth.UserType, Subject: userID, @@ -240,7 +240,7 @@ func (svc service) listUserThingPermission(ctx context.Context, userID, thingID return lp.GetPermissions(), nil } -func (svc service) listClientIDs(ctx context.Context, userID, permission string) ([]string, error) { +func (svc service) listClientIDs(ctx context.Context, userID, permission string) ([]string, errors.Error) { tids, err := svc.auth.ListAllObjects(ctx, &magistrala.ListObjectsReq{ SubjectType: auth.UserType, Subject: userID, @@ -253,7 +253,7 @@ func (svc service) listClientIDs(ctx context.Context, userID, permission string) return tids.Policies, nil } -func (svc service) filterAllowedThingIDs(ctx context.Context, userID, permission string, thingIDs []string) ([]string, error) { +func (svc service) filterAllowedThingIDs(ctx context.Context, userID, permission string, thingIDs []string) ([]string, errors.Error) { var ids []string tids, err := svc.auth.ListAllObjects(ctx, &magistrala.ListObjectsReq{ SubjectType: auth.UserType, @@ -274,7 +274,7 @@ func (svc service) filterAllowedThingIDs(ctx context.Context, userID, permission return ids, nil } -func (svc service) checkSuperAdmin(ctx context.Context, userID string) error { +func (svc service) checkSuperAdmin(ctx context.Context, userID string) errors.Error { res, err := svc.auth.Authorize(ctx, &magistrala.AuthorizeReq{ SubjectType: auth.UserType, Subject: userID, @@ -283,7 +283,7 @@ func (svc service) checkSuperAdmin(ctx context.Context, userID string) error { Object: auth.MagistralaObject, }) if err != nil { - return err + return errors.Cast(err) } if !res.Authorized { return svcerr.ErrAuthorization @@ -291,7 +291,7 @@ func (svc service) checkSuperAdmin(ctx context.Context, userID string) error { return nil } -func (svc service) UpdateClient(ctx context.Context, token string, cli mgclients.Client) (mgclients.Client, error) { +func (svc service) UpdateClient(ctx context.Context, token string, cli mgclients.Client) (mgclients.Client, errors.Error) { userID, err := svc.authorize(ctx, "", auth.UserType, auth.TokenKind, token, auth.EditPermission, auth.ThingType, cli.ID) if err != nil { return mgclients.Client{}, errors.Wrap(svcerr.ErrAuthorization, err) @@ -311,7 +311,7 @@ func (svc service) UpdateClient(ctx context.Context, token string, cli mgclients return client, nil } -func (svc service) UpdateClientTags(ctx context.Context, token string, cli mgclients.Client) (mgclients.Client, error) { +func (svc service) UpdateClientTags(ctx context.Context, token string, cli mgclients.Client) (mgclients.Client, errors.Error) { userID, err := svc.authorize(ctx, "", auth.UserType, auth.TokenKind, token, auth.EditPermission, auth.ThingType, cli.ID) if err != nil { return mgclients.Client{}, errors.Wrap(svcerr.ErrAuthorization, err) @@ -330,7 +330,7 @@ func (svc service) UpdateClientTags(ctx context.Context, token string, cli mgcli return client, nil } -func (svc service) UpdateClientSecret(ctx context.Context, token, id, key string) (mgclients.Client, error) { +func (svc service) UpdateClientSecret(ctx context.Context, token, id, key string) (mgclients.Client, errors.Error) { userID, err := svc.authorize(ctx, "", auth.UserType, auth.TokenKind, token, auth.EditPermission, auth.ThingType, id) if err != nil { return mgclients.Client{}, errors.Wrap(svcerr.ErrAuthorization, err) @@ -352,7 +352,7 @@ func (svc service) UpdateClientSecret(ctx context.Context, token, id, key string return client, nil } -func (svc service) EnableClient(ctx context.Context, token, id string) (mgclients.Client, error) { +func (svc service) EnableClient(ctx context.Context, token, id string) (mgclients.Client, errors.Error) { client := mgclients.Client{ ID: id, Status: mgclients.EnabledStatus, @@ -366,7 +366,7 @@ func (svc service) EnableClient(ctx context.Context, token, id string) (mgclient return client, nil } -func (svc service) DisableClient(ctx context.Context, token, id string) (mgclients.Client, error) { +func (svc service) DisableClient(ctx context.Context, token, id string) (mgclients.Client, errors.Error) { client := mgclients.Client{ ID: id, Status: mgclients.DisabledStatus, @@ -384,7 +384,7 @@ func (svc service) DisableClient(ctx context.Context, token, id string) (mgclien return client, nil } -func (svc service) Share(ctx context.Context, token, id, relation string, userids ...string) error { +func (svc service) Share(ctx context.Context, token, id, relation string, userids ...string) errors.Error { user, err := svc.identify(ctx, token) if err != nil { return err @@ -403,17 +403,17 @@ func (svc service) Share(ctx context.Context, token, id, relation string, userid Object: id, }) } - res, err := svc.auth.AddPolicies(ctx, &policies) - if err != nil { - return errors.Wrap(svcerr.ErrUpdateEntity, err) + res, Err := svc.auth.AddPolicies(ctx, &policies) + if Err != nil { + return errors.Wrap(svcerr.ErrUpdateEntity, Err) } if !res.Added { - return errors.Wrap(svcerr.ErrUpdateEntity, err) + return errors.Wrap(svcerr.ErrUpdateEntity, Err) } return nil } -func (svc service) Unshare(ctx context.Context, token, id, relation string, userids ...string) error { +func (svc service) Unshare(ctx context.Context, token, id, relation string, userids ...string) errors.Error { user, err := svc.identify(ctx, token) if err != nil { return err @@ -432,9 +432,9 @@ func (svc service) Unshare(ctx context.Context, token, id, relation string, user Object: id, }) } - res, err := svc.auth.DeletePolicies(ctx, &policies) - if err != nil { - return errors.Wrap(svcerr.ErrUpdateEntity, err) + res, Err := svc.auth.DeletePolicies(ctx, &policies) + if Err != nil { + return errors.Wrap(svcerr.ErrUpdateEntity, Err) } if !res.Deleted { return err @@ -442,7 +442,7 @@ func (svc service) Unshare(ctx context.Context, token, id, relation string, user return nil } -func (svc service) DeleteClient(ctx context.Context, token, id string) error { +func (svc service) DeleteClient(ctx context.Context, token, id string) errors.Error { res, err := svc.identify(ctx, token) if err != nil { return err @@ -491,7 +491,7 @@ func (svc service) DeleteClient(ctx context.Context, token, id string) error { return nil } -func (svc service) changeClientStatus(ctx context.Context, token string, client mgclients.Client) (mgclients.Client, error) { +func (svc service) changeClientStatus(ctx context.Context, token string, client mgclients.Client) (mgclients.Client, errors.Error) { userID, err := svc.authorize(ctx, "", auth.UserType, auth.TokenKind, token, auth.DeletePermission, auth.ThingType, client.ID) if err != nil { return mgclients.Client{}, errors.Wrap(svcerr.ErrAuthorization, err) @@ -513,7 +513,7 @@ func (svc service) changeClientStatus(ctx context.Context, token string, client return client, nil } -func (svc service) ListClientsByGroup(ctx context.Context, token, groupID string, pm mgclients.Page) (mgclients.MembersPage, error) { +func (svc service) ListClientsByGroup(ctx context.Context, token, groupID string, pm mgclients.Page) (mgclients.MembersPage, errors.Error) { res, err := svc.identify(ctx, token) if err != nil { return mgclients.MembersPage{}, err @@ -522,14 +522,14 @@ func (svc service) ListClientsByGroup(ctx context.Context, token, groupID string return mgclients.MembersPage{}, err } - tids, err := svc.auth.ListAllObjects(ctx, &magistrala.ListObjectsReq{ + tids, Err := svc.auth.ListAllObjects(ctx, &magistrala.ListObjectsReq{ SubjectType: auth.GroupType, Subject: groupID, Permission: auth.GroupRelation, ObjectType: auth.ThingType, }) - if err != nil { - return mgclients.MembersPage{}, errors.Wrap(svcerr.ErrNotFound, err) + if Err != nil { + return mgclients.MembersPage{}, errors.Wrap(svcerr.ErrNotFound, Err) } pm.IDs = tids.Policies @@ -551,7 +551,7 @@ func (svc service) ListClientsByGroup(ctx context.Context, token, groupID string } if err := g.Wait(); err != nil { - return mgclients.MembersPage{}, err + return mgclients.MembersPage{}, errors.Cast(err) } } @@ -561,7 +561,7 @@ func (svc service) ListClientsByGroup(ctx context.Context, token, groupID string }, nil } -func (svc service) Identify(ctx context.Context, key string) (string, error) { +func (svc service) Identify(ctx context.Context, key string) (string, errors.Error) { id, err := svc.clientCache.ID(ctx, key) if err == nil { return id, nil @@ -578,7 +578,7 @@ func (svc service) Identify(ctx context.Context, key string) (string, error) { return client.ID, nil } -func (svc service) identify(ctx context.Context, token string) (*magistrala.IdentityRes, error) { +func (svc service) identify(ctx context.Context, token string) (*magistrala.IdentityRes, errors.Error) { res, err := svc.auth.Identify(ctx, &magistrala.IdentityReq{Token: token}) if err != nil { return nil, errors.Wrap(svcerr.ErrAuthentication, err) @@ -589,7 +589,7 @@ func (svc service) identify(ctx context.Context, token string) (*magistrala.Iden return res, nil } -func (svc *service) authorize(ctx context.Context, domainID, subjType, subjKind, subj, perm, objType, obj string) (string, error) { +func (svc *service) authorize(ctx context.Context, domainID, subjType, subjKind, subj, perm, objType, obj string) (string, errors.Error) { req := &magistrala.AuthorizeReq{ Domain: domainID, SubjectType: subjType, diff --git a/things/things.go b/things/things.go index 270d59e131a..3f9c7afdb01 100644 --- a/things/things.go +++ b/things/things.go @@ -8,6 +8,7 @@ import ( "github.com/absmach/magistrala" "github.com/absmach/magistrala/pkg/clients" + "github.com/absmach/magistrala/pkg/errors" ) // Service specifies an API that must be fullfiled by the domain service @@ -17,51 +18,51 @@ import ( type Service interface { // CreateThings creates new client. In case of the failed registration, a // non-nil error value is returned. - CreateThings(ctx context.Context, token string, client ...clients.Client) ([]clients.Client, error) + CreateThings(ctx context.Context, token string, client ...clients.Client) ([]clients.Client, errors.Error) // ViewClient retrieves client info for a given client ID and an authorized token. - ViewClient(ctx context.Context, token, id string) (clients.Client, error) + ViewClient(ctx context.Context, token, id string) (clients.Client, errors.Error) // ViewClientPerms retrieves permissions on the client id for the given authorized token. - ViewClientPerms(ctx context.Context, token, id string) ([]string, error) + ViewClientPerms(ctx context.Context, token, id string) ([]string, errors.Error) // ListClients retrieves clients list for a valid auth token. - ListClients(ctx context.Context, token string, reqUserID string, pm clients.Page) (clients.ClientsPage, error) + ListClients(ctx context.Context, token string, reqUserID string, pm clients.Page) (clients.ClientsPage, errors.Error) // ListClientsByGroup retrieves data about subset of things that are // connected or not connected to specified channel and belong to the user identified by // the provided key. - ListClientsByGroup(ctx context.Context, token, groupID string, pm clients.Page) (clients.MembersPage, error) + ListClientsByGroup(ctx context.Context, token, groupID string, pm clients.Page) (clients.MembersPage, errors.Error) // UpdateClient updates the client's name and metadata. - UpdateClient(ctx context.Context, token string, client clients.Client) (clients.Client, error) + UpdateClient(ctx context.Context, token string, client clients.Client) (clients.Client, errors.Error) // UpdateClientTags updates the client's tags. - UpdateClientTags(ctx context.Context, token string, client clients.Client) (clients.Client, error) + UpdateClientTags(ctx context.Context, token string, client clients.Client) (clients.Client, errors.Error) // UpdateClientSecret updates the client's secret - UpdateClientSecret(ctx context.Context, token, id, key string) (clients.Client, error) + UpdateClientSecret(ctx context.Context, token, id, key string) (clients.Client, errors.Error) // EnableClient logically enableds the client identified with the provided ID - EnableClient(ctx context.Context, token, id string) (clients.Client, error) + EnableClient(ctx context.Context, token, id string) (clients.Client, errors.Error) // DisableClient logically disables the client identified with the provided ID - DisableClient(ctx context.Context, token, id string) (clients.Client, error) + DisableClient(ctx context.Context, token, id string) (clients.Client, errors.Error) // Share add share policy to thing id with given relation for given user ids - Share(ctx context.Context, token, id string, relation string, userids ...string) error + Share(ctx context.Context, token, id string, relation string, userids ...string) errors.Error // Unshare remove share policy to thing id with given relation for given user ids - Unshare(ctx context.Context, token, id string, relation string, userids ...string) error + Unshare(ctx context.Context, token, id string, relation string, userids ...string) errors.Error // Identify returns thing ID for given thing key. - Identify(ctx context.Context, key string) (string, error) + Identify(ctx context.Context, key string) (string, errors.Error) // Authorize used for AuthZ gRPC server implementation and Things authorization. - Authorize(ctx context.Context, req *magistrala.AuthorizeReq) (string, error) + Authorize(ctx context.Context, req *magistrala.AuthorizeReq) (string, errors.Error) // DeleteClient deletes client with given ID. - DeleteClient(ctx context.Context, token, id string) error + DeleteClient(ctx context.Context, token, id string) errors.Error } // Cache contains thing caching interface. @@ -69,11 +70,11 @@ type Service interface { //go:generate mockery --name Cache --filename cache.go --quiet --note "Copyright (c) Abstract Machines" type Cache interface { // Save stores pair thing secret, thing id. - Save(ctx context.Context, thingSecret, thingID string) error + Save(ctx context.Context, thingSecret, thingID string) errors.Error // ID returns thing ID for given thing secret. - ID(ctx context.Context, thingSecret string) (string, error) + ID(ctx context.Context, thingSecret string) (string, errors.Error) // Removes thing from cache. - Remove(ctx context.Context, thingID string) error + Remove(ctx context.Context, thingID string) errors.Error } diff --git a/things/tracing/tracing.go b/things/tracing/tracing.go index f0971632796..45c5b7a93be 100644 --- a/things/tracing/tracing.go +++ b/things/tracing/tracing.go @@ -8,6 +8,7 @@ import ( "github.com/absmach/magistrala" mgclients "github.com/absmach/magistrala/pkg/clients" + "github.com/absmach/magistrala/pkg/errors" "github.com/absmach/magistrala/things" "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/trace" @@ -26,7 +27,7 @@ func New(svc things.Service, tracer trace.Tracer) things.Service { } // CreateThings traces the "CreateThings" operation of the wrapped policies.Service. -func (tm *tracingMiddleware) CreateThings(ctx context.Context, token string, clis ...mgclients.Client) ([]mgclients.Client, error) { +func (tm *tracingMiddleware) CreateThings(ctx context.Context, token string, clis ...mgclients.Client) ([]mgclients.Client, errors.Error) { ctx, span := tm.tracer.Start(ctx, "svc_create_client") defer span.End() @@ -34,28 +35,28 @@ func (tm *tracingMiddleware) CreateThings(ctx context.Context, token string, cli } // ViewClient traces the "ViewClient" operation of the wrapped policies.Service. -func (tm *tracingMiddleware) ViewClient(ctx context.Context, token, id string) (mgclients.Client, error) { +func (tm *tracingMiddleware) ViewClient(ctx context.Context, token, id string) (mgclients.Client, errors.Error) { ctx, span := tm.tracer.Start(ctx, "svc_view_client", trace.WithAttributes(attribute.String("id", id))) defer span.End() return tm.svc.ViewClient(ctx, token, id) } // ViewClientPerms traces the "ViewClientPerms" operation of the wrapped policies.Service. -func (tm *tracingMiddleware) ViewClientPerms(ctx context.Context, token, id string) ([]string, error) { +func (tm *tracingMiddleware) ViewClientPerms(ctx context.Context, token, id string) ([]string, errors.Error) { ctx, span := tm.tracer.Start(ctx, "svc_view_client_permissions", trace.WithAttributes(attribute.String("id", id))) defer span.End() return tm.svc.ViewClientPerms(ctx, token, id) } // ListClients traces the "ListClients" operation of the wrapped policies.Service. -func (tm *tracingMiddleware) ListClients(ctx context.Context, token, reqUserID string, pm mgclients.Page) (mgclients.ClientsPage, error) { +func (tm *tracingMiddleware) ListClients(ctx context.Context, token, reqUserID string, pm mgclients.Page) (mgclients.ClientsPage, errors.Error) { ctx, span := tm.tracer.Start(ctx, "svc_list_clients") defer span.End() return tm.svc.ListClients(ctx, token, reqUserID, pm) } // UpdateClient traces the "UpdateClient" operation of the wrapped policies.Service. -func (tm *tracingMiddleware) UpdateClient(ctx context.Context, token string, cli mgclients.Client) (mgclients.Client, error) { +func (tm *tracingMiddleware) UpdateClient(ctx context.Context, token string, cli mgclients.Client) (mgclients.Client, errors.Error) { ctx, span := tm.tracer.Start(ctx, "svc_update_client_name_and_metadata", trace.WithAttributes(attribute.String("id", cli.ID))) defer span.End() @@ -63,7 +64,7 @@ func (tm *tracingMiddleware) UpdateClient(ctx context.Context, token string, cli } // UpdateClientTags traces the "UpdateClientTags" operation of the wrapped policies.Service. -func (tm *tracingMiddleware) UpdateClientTags(ctx context.Context, token string, cli mgclients.Client) (mgclients.Client, error) { +func (tm *tracingMiddleware) UpdateClientTags(ctx context.Context, token string, cli mgclients.Client) (mgclients.Client, errors.Error) { ctx, span := tm.tracer.Start(ctx, "svc_update_client_tags", trace.WithAttributes( attribute.String("id", cli.ID), attribute.StringSlice("tags", cli.Tags), @@ -74,7 +75,7 @@ func (tm *tracingMiddleware) UpdateClientTags(ctx context.Context, token string, } // UpdateClientSecret traces the "UpdateClientSecret" operation of the wrapped policies.Service. -func (tm *tracingMiddleware) UpdateClientSecret(ctx context.Context, token, oldSecret, newSecret string) (mgclients.Client, error) { +func (tm *tracingMiddleware) UpdateClientSecret(ctx context.Context, token, oldSecret, newSecret string) (mgclients.Client, errors.Error) { ctx, span := tm.tracer.Start(ctx, "svc_update_client_secret") defer span.End() @@ -82,7 +83,7 @@ func (tm *tracingMiddleware) UpdateClientSecret(ctx context.Context, token, oldS } // EnableClient traces the "EnableClient" operation of the wrapped policies.Service. -func (tm *tracingMiddleware) EnableClient(ctx context.Context, token, id string) (mgclients.Client, error) { +func (tm *tracingMiddleware) EnableClient(ctx context.Context, token, id string) (mgclients.Client, errors.Error) { ctx, span := tm.tracer.Start(ctx, "svc_enable_client", trace.WithAttributes(attribute.String("id", id))) defer span.End() @@ -90,7 +91,7 @@ func (tm *tracingMiddleware) EnableClient(ctx context.Context, token, id string) } // DisableClient traces the "DisableClient" operation of the wrapped policies.Service. -func (tm *tracingMiddleware) DisableClient(ctx context.Context, token, id string) (mgclients.Client, error) { +func (tm *tracingMiddleware) DisableClient(ctx context.Context, token, id string) (mgclients.Client, errors.Error) { ctx, span := tm.tracer.Start(ctx, "svc_disable_client", trace.WithAttributes(attribute.String("id", id))) defer span.End() @@ -98,7 +99,7 @@ func (tm *tracingMiddleware) DisableClient(ctx context.Context, token, id string } // ListClientsByGroup traces the "ListClientsByGroup" operation of the wrapped policies.Service. -func (tm *tracingMiddleware) ListClientsByGroup(ctx context.Context, token, groupID string, pm mgclients.Page) (mgclients.MembersPage, error) { +func (tm *tracingMiddleware) ListClientsByGroup(ctx context.Context, token, groupID string, pm mgclients.Page) (mgclients.MembersPage, errors.Error) { ctx, span := tm.tracer.Start(ctx, "svc_list_things_by_channel", trace.WithAttributes(attribute.String("groupID", groupID))) defer span.End() @@ -106,14 +107,14 @@ func (tm *tracingMiddleware) ListClientsByGroup(ctx context.Context, token, grou } // ListMemberships traces the "ListMemberships" operation of the wrapped policies.Service. -func (tm *tracingMiddleware) Identify(ctx context.Context, key string) (string, error) { +func (tm *tracingMiddleware) Identify(ctx context.Context, key string) (string, errors.Error) { ctx, span := tm.tracer.Start(ctx, "svc_identify", trace.WithAttributes(attribute.String("key", key))) defer span.End() return tm.svc.Identify(ctx, key) } -func (tm *tracingMiddleware) Authorize(ctx context.Context, req *magistrala.AuthorizeReq) (string, error) { +func (tm *tracingMiddleware) Authorize(ctx context.Context, req *magistrala.AuthorizeReq) (string, errors.Error) { ctx, span := tm.tracer.Start(ctx, "connect", trace.WithAttributes(attribute.String("subject", req.Subject), attribute.String("object", req.Object))) defer span.End() @@ -121,21 +122,21 @@ func (tm *tracingMiddleware) Authorize(ctx context.Context, req *magistrala.Auth } // Share traces the "Share" operation of the wrapped things.Service. -func (tm *tracingMiddleware) Share(ctx context.Context, token, id, relation string, userids ...string) error { +func (tm *tracingMiddleware) Share(ctx context.Context, token, id, relation string, userids ...string) errors.Error { ctx, span := tm.tracer.Start(ctx, "share", trace.WithAttributes(attribute.String("id", id), attribute.String("relation", relation), attribute.StringSlice("user_ids", userids))) defer span.End() return tm.svc.Share(ctx, token, id, relation, userids...) } // Unshare traces the "Unshare" operation of the wrapped things.Service. -func (tm *tracingMiddleware) Unshare(ctx context.Context, token, id, relation string, userids ...string) error { +func (tm *tracingMiddleware) Unshare(ctx context.Context, token, id, relation string, userids ...string) errors.Error { ctx, span := tm.tracer.Start(ctx, "unshare", trace.WithAttributes(attribute.String("id", id), attribute.String("relation", relation), attribute.StringSlice("user_ids", userids))) defer span.End() return tm.svc.Unshare(ctx, token, id, relation, userids...) } // DeleteClient traces the "DeleteClient" operation of the wrapped things.Service. -func (tm *tracingMiddleware) DeleteClient(ctx context.Context, token, id string) error { +func (tm *tracingMiddleware) DeleteClient(ctx context.Context, token, id string) errors.Error { ctx, span := tm.tracer.Start(ctx, "delete_client", trace.WithAttributes(attribute.String("id", id))) defer span.End() return tm.svc.DeleteClient(ctx, token, id) diff --git a/users/api/logging.go b/users/api/logging.go index 8c23818fb37..b58cef152c1 100644 --- a/users/api/logging.go +++ b/users/api/logging.go @@ -10,6 +10,7 @@ import ( "github.com/absmach/magistrala" mgclients "github.com/absmach/magistrala/pkg/clients" + "github.com/absmach/magistrala/pkg/errors" "github.com/absmach/magistrala/users" ) @@ -27,7 +28,7 @@ func LoggingMiddleware(svc users.Service, logger *slog.Logger) users.Service { // RegisterClient logs the register_client request. It logs the client id and the time it took to complete the request. // If the request fails, it logs the error. -func (lm *loggingMiddleware) RegisterClient(ctx context.Context, token string, client mgclients.Client) (c mgclients.Client, err error) { +func (lm *loggingMiddleware) RegisterClient(ctx context.Context, token string, client mgclients.Client) (c mgclients.Client, err errors.Error) { defer func(begin time.Time) { args := []any{ slog.String("duration", time.Since(begin).String()), @@ -48,7 +49,7 @@ func (lm *loggingMiddleware) RegisterClient(ctx context.Context, token string, c // IssueToken logs the issue_token request. It logs the client identity type and the time it took to complete the request. // If the request fails, it logs the error. -func (lm *loggingMiddleware) IssueToken(ctx context.Context, identity, secret, domainID string) (t *magistrala.Token, err error) { +func (lm *loggingMiddleware) IssueToken(ctx context.Context, identity, secret, domainID string) (t *magistrala.Token, err errors.Error) { defer func(begin time.Time) { args := []any{ slog.String("duration", time.Since(begin).String()), @@ -69,7 +70,7 @@ func (lm *loggingMiddleware) IssueToken(ctx context.Context, identity, secret, d // RefreshToken logs the refresh_token request. It logs the refreshtoken, token type and the time it took to complete the request. // If the request fails, it logs the error. -func (lm *loggingMiddleware) RefreshToken(ctx context.Context, refreshToken, domainID string) (t *magistrala.Token, err error) { +func (lm *loggingMiddleware) RefreshToken(ctx context.Context, refreshToken, domainID string) (t *magistrala.Token, err errors.Error) { defer func(begin time.Time) { args := []any{ slog.String("duration", time.Since(begin).String()), @@ -90,7 +91,7 @@ func (lm *loggingMiddleware) RefreshToken(ctx context.Context, refreshToken, dom // ViewClient logs the view_client request. It logs the client id and the time it took to complete the request. // If the request fails, it logs the error. -func (lm *loggingMiddleware) ViewClient(ctx context.Context, token, id string) (c mgclients.Client, err error) { +func (lm *loggingMiddleware) ViewClient(ctx context.Context, token, id string) (c mgclients.Client, err errors.Error) { defer func(begin time.Time) { args := []any{ slog.String("duration", time.Since(begin).String()), @@ -111,7 +112,7 @@ func (lm *loggingMiddleware) ViewClient(ctx context.Context, token, id string) ( // ViewProfile logs the view_profile request. It logs the client id and the time it took to complete the request. // If the request fails, it logs the error. -func (lm *loggingMiddleware) ViewProfile(ctx context.Context, token string) (c mgclients.Client, err error) { +func (lm *loggingMiddleware) ViewProfile(ctx context.Context, token string) (c mgclients.Client, err errors.Error) { defer func(begin time.Time) { args := []any{ slog.String("duration", time.Since(begin).String()), @@ -132,7 +133,7 @@ func (lm *loggingMiddleware) ViewProfile(ctx context.Context, token string) (c m // ListClients logs the list_clients request. It logs the page metadata and the time it took to complete the request. // If the request fails, it logs the error. -func (lm *loggingMiddleware) ListClients(ctx context.Context, token string, pm mgclients.Page) (cp mgclients.ClientsPage, err error) { +func (lm *loggingMiddleware) ListClients(ctx context.Context, token string, pm mgclients.Page) (cp mgclients.ClientsPage, err errors.Error) { defer func(begin time.Time) { args := []any{ slog.String("duration", time.Since(begin).String()), @@ -154,7 +155,7 @@ func (lm *loggingMiddleware) ListClients(ctx context.Context, token string, pm m // UpdateClient logs the update_client request. It logs the client id and the time it took to complete the request. // If the request fails, it logs the error. -func (lm *loggingMiddleware) UpdateClient(ctx context.Context, token string, client mgclients.Client) (c mgclients.Client, err error) { +func (lm *loggingMiddleware) UpdateClient(ctx context.Context, token string, client mgclients.Client) (c mgclients.Client, err errors.Error) { defer func(begin time.Time) { args := []any{ slog.String("duration", time.Since(begin).String()), @@ -176,7 +177,7 @@ func (lm *loggingMiddleware) UpdateClient(ctx context.Context, token string, cli // UpdateClientTags logs the update_client_tags request. It logs the client id and the time it took to complete the request. // If the request fails, it logs the error. -func (lm *loggingMiddleware) UpdateClientTags(ctx context.Context, token string, client mgclients.Client) (c mgclients.Client, err error) { +func (lm *loggingMiddleware) UpdateClientTags(ctx context.Context, token string, client mgclients.Client) (c mgclients.Client, err errors.Error) { defer func(begin time.Time) { args := []any{ slog.String("duration", time.Since(begin).String()), @@ -198,7 +199,7 @@ func (lm *loggingMiddleware) UpdateClientTags(ctx context.Context, token string, // UpdateClientIdentity logs the update_identity request. It logs the client id and the time it took to complete the request. // If the request fails, it logs the error. -func (lm *loggingMiddleware) UpdateClientIdentity(ctx context.Context, token, id, identity string) (c mgclients.Client, err error) { +func (lm *loggingMiddleware) UpdateClientIdentity(ctx context.Context, token, id, identity string) (c mgclients.Client, err errors.Error) { defer func(begin time.Time) { args := []any{ slog.String("duration", time.Since(begin).String()), @@ -219,7 +220,7 @@ func (lm *loggingMiddleware) UpdateClientIdentity(ctx context.Context, token, id // UpdateClientSecret logs the update_client_secret request. It logs the client id and the time it took to complete the request. // If the request fails, it logs the error. -func (lm *loggingMiddleware) UpdateClientSecret(ctx context.Context, token, oldSecret, newSecret string) (c mgclients.Client, err error) { +func (lm *loggingMiddleware) UpdateClientSecret(ctx context.Context, token, oldSecret, newSecret string) (c mgclients.Client, err errors.Error) { defer func(begin time.Time) { args := []any{ slog.String("duration", time.Since(begin).String()), @@ -240,7 +241,7 @@ func (lm *loggingMiddleware) UpdateClientSecret(ctx context.Context, token, oldS // GenerateResetToken logs the generate_reset_token request. It logs the time it took to complete the request. // If the request fails, it logs the error. -func (lm *loggingMiddleware) GenerateResetToken(ctx context.Context, email, host string) (err error) { +func (lm *loggingMiddleware) GenerateResetToken(ctx context.Context, email, host string) (err errors.Error) { defer func(begin time.Time) { args := []any{ slog.String("duration", time.Since(begin).String()), @@ -258,7 +259,7 @@ func (lm *loggingMiddleware) GenerateResetToken(ctx context.Context, email, host // ResetSecret logs the reset_secret request. It logs the time it took to complete the request. // If the request fails, it logs the error. -func (lm *loggingMiddleware) ResetSecret(ctx context.Context, token, secret string) (err error) { +func (lm *loggingMiddleware) ResetSecret(ctx context.Context, token, secret string) (err errors.Error) { defer func(begin time.Time) { args := []any{ slog.String("duration", time.Since(begin).String()), @@ -275,7 +276,7 @@ func (lm *loggingMiddleware) ResetSecret(ctx context.Context, token, secret stri // SendPasswordReset logs the send_password_reset request. It logs the time it took to complete the request. // If the request fails, it logs the error. -func (lm *loggingMiddleware) SendPasswordReset(ctx context.Context, host, email, user, token string) (err error) { +func (lm *loggingMiddleware) SendPasswordReset(ctx context.Context, host, email, user, token string) (err errors.Error) { defer func(begin time.Time) { args := []any{ slog.String("duration", time.Since(begin).String()), @@ -293,7 +294,7 @@ func (lm *loggingMiddleware) SendPasswordReset(ctx context.Context, host, email, // UpdateClientRole logs the update_client_role request. It logs the client id and the time it took to complete the request. // If the request fails, it logs the error. -func (lm *loggingMiddleware) UpdateClientRole(ctx context.Context, token string, client mgclients.Client) (c mgclients.Client, err error) { +func (lm *loggingMiddleware) UpdateClientRole(ctx context.Context, token string, client mgclients.Client) (c mgclients.Client, err errors.Error) { defer func(begin time.Time) { args := []any{ slog.String("duration", time.Since(begin).String()), @@ -315,7 +316,7 @@ func (lm *loggingMiddleware) UpdateClientRole(ctx context.Context, token string, // EnableClient logs the enable_client request. It logs the client id and the time it took to complete the request. // If the request fails, it logs the error. -func (lm *loggingMiddleware) EnableClient(ctx context.Context, token, id string) (c mgclients.Client, err error) { +func (lm *loggingMiddleware) EnableClient(ctx context.Context, token, id string) (c mgclients.Client, err errors.Error) { defer func(begin time.Time) { args := []any{ slog.String("duration", time.Since(begin).String()), @@ -336,7 +337,7 @@ func (lm *loggingMiddleware) EnableClient(ctx context.Context, token, id string) // DisableClient logs the disable_client request. It logs the client id and the time it took to complete the request. // If the request fails, it logs the error. -func (lm *loggingMiddleware) DisableClient(ctx context.Context, token, id string) (c mgclients.Client, err error) { +func (lm *loggingMiddleware) DisableClient(ctx context.Context, token, id string) (c mgclients.Client, err errors.Error) { defer func(begin time.Time) { args := []any{ slog.String("duration", time.Since(begin).String()), @@ -357,7 +358,7 @@ func (lm *loggingMiddleware) DisableClient(ctx context.Context, token, id string // ListMembers logs the list_members request. It logs the group id, and the time it took to complete the request. // If the request fails, it logs the error. -func (lm *loggingMiddleware) ListMembers(ctx context.Context, token, objectKind, objectID string, cp mgclients.Page) (mp mgclients.MembersPage, err error) { +func (lm *loggingMiddleware) ListMembers(ctx context.Context, token, objectKind, objectID string, cp mgclients.Page) (mp mgclients.MembersPage, err errors.Error) { defer func(begin time.Time) { args := []any{ slog.String("duration", time.Since(begin).String()), @@ -382,7 +383,7 @@ func (lm *loggingMiddleware) ListMembers(ctx context.Context, token, objectKind, } // Identify logs the identify request. It logs the time it took to complete the request. -func (lm *loggingMiddleware) Identify(ctx context.Context, token string) (id string, err error) { +func (lm *loggingMiddleware) Identify(ctx context.Context, token string) (id string, err errors.Error) { defer func(begin time.Time) { args := []any{ slog.String("duration", time.Since(begin).String()), @@ -398,7 +399,7 @@ func (lm *loggingMiddleware) Identify(ctx context.Context, token string) (id str return lm.svc.Identify(ctx, token) } -func (lm *loggingMiddleware) OAuthCallback(ctx context.Context, client mgclients.Client) (token *magistrala.Token, err error) { +func (lm *loggingMiddleware) OAuthCallback(ctx context.Context, client mgclients.Client) (token *magistrala.Token, err errors.Error) { defer func(begin time.Time) { args := []any{ slog.String("duration", time.Since(begin).String()), diff --git a/users/api/metrics.go b/users/api/metrics.go index ea4328e8187..4521cd06309 100644 --- a/users/api/metrics.go +++ b/users/api/metrics.go @@ -9,6 +9,7 @@ import ( "github.com/absmach/magistrala" mgclients "github.com/absmach/magistrala/pkg/clients" + "github.com/absmach/magistrala/pkg/errors" "github.com/absmach/magistrala/users" "github.com/go-kit/kit/metrics" ) @@ -31,7 +32,7 @@ func MetricsMiddleware(svc users.Service, counter metrics.Counter, latency metri } // RegisterClient instruments RegisterClient method with metrics. -func (ms *metricsMiddleware) RegisterClient(ctx context.Context, token string, client mgclients.Client) (mgclients.Client, error) { +func (ms *metricsMiddleware) RegisterClient(ctx context.Context, token string, client mgclients.Client) (mgclients.Client, errors.Error) { defer func(begin time.Time) { ms.counter.With("method", "register_client").Add(1) ms.latency.With("method", "register_client").Observe(time.Since(begin).Seconds()) @@ -40,7 +41,7 @@ func (ms *metricsMiddleware) RegisterClient(ctx context.Context, token string, c } // IssueToken instruments IssueToken method with metrics. -func (ms *metricsMiddleware) IssueToken(ctx context.Context, identity, secret, domainID string) (*magistrala.Token, error) { +func (ms *metricsMiddleware) IssueToken(ctx context.Context, identity, secret, domainID string) (*magistrala.Token, errors.Error) { defer func(begin time.Time) { ms.counter.With("method", "issue_token").Add(1) ms.latency.With("method", "issue_token").Observe(time.Since(begin).Seconds()) @@ -49,7 +50,7 @@ func (ms *metricsMiddleware) IssueToken(ctx context.Context, identity, secret, d } // RefreshToken instruments RefreshToken method with metrics. -func (ms *metricsMiddleware) RefreshToken(ctx context.Context, refreshToken, domainID string) (token *magistrala.Token, err error) { +func (ms *metricsMiddleware) RefreshToken(ctx context.Context, refreshToken, domainID string) (token *magistrala.Token, err errors.Error) { defer func(begin time.Time) { ms.counter.With("method", "refresh_token").Add(1) ms.latency.With("method", "refresh_token").Observe(time.Since(begin).Seconds()) @@ -58,7 +59,7 @@ func (ms *metricsMiddleware) RefreshToken(ctx context.Context, refreshToken, dom } // ViewClient instruments ViewClient method with metrics. -func (ms *metricsMiddleware) ViewClient(ctx context.Context, token, id string) (mgclients.Client, error) { +func (ms *metricsMiddleware) ViewClient(ctx context.Context, token, id string) (mgclients.Client, errors.Error) { defer func(begin time.Time) { ms.counter.With("method", "view_client").Add(1) ms.latency.With("method", "view_client").Observe(time.Since(begin).Seconds()) @@ -67,7 +68,7 @@ func (ms *metricsMiddleware) ViewClient(ctx context.Context, token, id string) ( } // ViewProfile instruments ViewProfile method with metrics. -func (ms *metricsMiddleware) ViewProfile(ctx context.Context, token string) (mgclients.Client, error) { +func (ms *metricsMiddleware) ViewProfile(ctx context.Context, token string) (mgclients.Client, errors.Error) { defer func(begin time.Time) { ms.counter.With("method", "view_profile").Add(1) ms.latency.With("method", "view_profile").Observe(time.Since(begin).Seconds()) @@ -76,7 +77,7 @@ func (ms *metricsMiddleware) ViewProfile(ctx context.Context, token string) (mgc } // ListClients instruments ListClients method with metrics. -func (ms *metricsMiddleware) ListClients(ctx context.Context, token string, pm mgclients.Page) (mgclients.ClientsPage, error) { +func (ms *metricsMiddleware) ListClients(ctx context.Context, token string, pm mgclients.Page) (mgclients.ClientsPage, errors.Error) { defer func(begin time.Time) { ms.counter.With("method", "list_clients").Add(1) ms.latency.With("method", "list_clients").Observe(time.Since(begin).Seconds()) @@ -85,7 +86,7 @@ func (ms *metricsMiddleware) ListClients(ctx context.Context, token string, pm m } // UpdateClient instruments UpdateClient method with metrics. -func (ms *metricsMiddleware) UpdateClient(ctx context.Context, token string, client mgclients.Client) (mgclients.Client, error) { +func (ms *metricsMiddleware) UpdateClient(ctx context.Context, token string, client mgclients.Client) (mgclients.Client, errors.Error) { defer func(begin time.Time) { ms.counter.With("method", "update_client_name_and_metadata").Add(1) ms.latency.With("method", "update_client_name_and_metadata").Observe(time.Since(begin).Seconds()) @@ -94,7 +95,7 @@ func (ms *metricsMiddleware) UpdateClient(ctx context.Context, token string, cli } // UpdateClientTags instruments UpdateClientTags method with metrics. -func (ms *metricsMiddleware) UpdateClientTags(ctx context.Context, token string, client mgclients.Client) (mgclients.Client, error) { +func (ms *metricsMiddleware) UpdateClientTags(ctx context.Context, token string, client mgclients.Client) (mgclients.Client, errors.Error) { defer func(begin time.Time) { ms.counter.With("method", "update_client_tags").Add(1) ms.latency.With("method", "update_client_tags").Observe(time.Since(begin).Seconds()) @@ -103,7 +104,7 @@ func (ms *metricsMiddleware) UpdateClientTags(ctx context.Context, token string, } // UpdateClientIdentity instruments UpdateClientIdentity method with metrics. -func (ms *metricsMiddleware) UpdateClientIdentity(ctx context.Context, token, id, identity string) (mgclients.Client, error) { +func (ms *metricsMiddleware) UpdateClientIdentity(ctx context.Context, token, id, identity string) (mgclients.Client, errors.Error) { defer func(begin time.Time) { ms.counter.With("method", "update_client_identity").Add(1) ms.latency.With("method", "update_client_identity").Observe(time.Since(begin).Seconds()) @@ -112,7 +113,7 @@ func (ms *metricsMiddleware) UpdateClientIdentity(ctx context.Context, token, id } // UpdateClientSecret instruments UpdateClientSecret method with metrics. -func (ms *metricsMiddleware) UpdateClientSecret(ctx context.Context, token, oldSecret, newSecret string) (mgclients.Client, error) { +func (ms *metricsMiddleware) UpdateClientSecret(ctx context.Context, token, oldSecret, newSecret string) (mgclients.Client, errors.Error) { defer func(begin time.Time) { ms.counter.With("method", "update_client_secret").Add(1) ms.latency.With("method", "update_client_secret").Observe(time.Since(begin).Seconds()) @@ -121,7 +122,7 @@ func (ms *metricsMiddleware) UpdateClientSecret(ctx context.Context, token, oldS } // GenerateResetToken instruments GenerateResetToken method with metrics. -func (ms *metricsMiddleware) GenerateResetToken(ctx context.Context, email, host string) error { +func (ms *metricsMiddleware) GenerateResetToken(ctx context.Context, email, host string) errors.Error { defer func(begin time.Time) { ms.counter.With("method", "generate_reset_token").Add(1) ms.latency.With("method", "generate_reset_token").Observe(time.Since(begin).Seconds()) @@ -130,7 +131,7 @@ func (ms *metricsMiddleware) GenerateResetToken(ctx context.Context, email, host } // ResetSecret instruments ResetSecret method with metrics. -func (ms *metricsMiddleware) ResetSecret(ctx context.Context, token, secret string) error { +func (ms *metricsMiddleware) ResetSecret(ctx context.Context, token, secret string) errors.Error { defer func(begin time.Time) { ms.counter.With("method", "reset_secret").Add(1) ms.latency.With("method", "reset_secret").Observe(time.Since(begin).Seconds()) @@ -139,7 +140,7 @@ func (ms *metricsMiddleware) ResetSecret(ctx context.Context, token, secret stri } // SendPasswordReset instruments SendPasswordReset method with metrics. -func (ms *metricsMiddleware) SendPasswordReset(ctx context.Context, host, email, user, token string) error { +func (ms *metricsMiddleware) SendPasswordReset(ctx context.Context, host, email, user, token string) errors.Error { defer func(begin time.Time) { ms.counter.With("method", "send_password_reset").Add(1) ms.latency.With("method", "send_password_reset").Observe(time.Since(begin).Seconds()) @@ -148,7 +149,7 @@ func (ms *metricsMiddleware) SendPasswordReset(ctx context.Context, host, email, } // UpdateClientRole instruments UpdateClientRole method with metrics. -func (ms *metricsMiddleware) UpdateClientRole(ctx context.Context, token string, client mgclients.Client) (mgclients.Client, error) { +func (ms *metricsMiddleware) UpdateClientRole(ctx context.Context, token string, client mgclients.Client) (mgclients.Client, errors.Error) { defer func(begin time.Time) { ms.counter.With("method", "update_client_role").Add(1) ms.latency.With("method", "update_client_role").Observe(time.Since(begin).Seconds()) @@ -157,7 +158,7 @@ func (ms *metricsMiddleware) UpdateClientRole(ctx context.Context, token string, } // EnableClient instruments EnableClient method with metrics. -func (ms *metricsMiddleware) EnableClient(ctx context.Context, token, id string) (mgclients.Client, error) { +func (ms *metricsMiddleware) EnableClient(ctx context.Context, token, id string) (mgclients.Client, errors.Error) { defer func(begin time.Time) { ms.counter.With("method", "enable_client").Add(1) ms.latency.With("method", "enable_client").Observe(time.Since(begin).Seconds()) @@ -166,7 +167,7 @@ func (ms *metricsMiddleware) EnableClient(ctx context.Context, token, id string) } // DisableClient instruments DisableClient method with metrics. -func (ms *metricsMiddleware) DisableClient(ctx context.Context, token, id string) (mgclients.Client, error) { +func (ms *metricsMiddleware) DisableClient(ctx context.Context, token, id string) (mgclients.Client, errors.Error) { defer func(begin time.Time) { ms.counter.With("method", "disable_client").Add(1) ms.latency.With("method", "disable_client").Observe(time.Since(begin).Seconds()) @@ -175,7 +176,7 @@ func (ms *metricsMiddleware) DisableClient(ctx context.Context, token, id string } // ListMembers instruments ListMembers method with metrics. -func (ms *metricsMiddleware) ListMembers(ctx context.Context, token, objectKind, objectID string, pm mgclients.Page) (mp mgclients.MembersPage, err error) { +func (ms *metricsMiddleware) ListMembers(ctx context.Context, token, objectKind, objectID string, pm mgclients.Page) (mp mgclients.MembersPage, err errors.Error) { defer func(begin time.Time) { ms.counter.With("method", "list_members").Add(1) ms.latency.With("method", "list_members").Observe(time.Since(begin).Seconds()) @@ -184,7 +185,7 @@ func (ms *metricsMiddleware) ListMembers(ctx context.Context, token, objectKind, } // Identify instruments Identify method with metrics. -func (ms *metricsMiddleware) Identify(ctx context.Context, token string) (string, error) { +func (ms *metricsMiddleware) Identify(ctx context.Context, token string) (string, errors.Error) { defer func(begin time.Time) { ms.counter.With("method", "identify").Add(1) ms.latency.With("method", "identify").Observe(time.Since(begin).Seconds()) @@ -192,7 +193,7 @@ func (ms *metricsMiddleware) Identify(ctx context.Context, token string) (string return ms.svc.Identify(ctx, token) } -func (ms *metricsMiddleware) OAuthCallback(ctx context.Context, client mgclients.Client) (*magistrala.Token, error) { +func (ms *metricsMiddleware) OAuthCallback(ctx context.Context, client mgclients.Client) (*magistrala.Token, errors.Error) { defer func(begin time.Time) { ms.counter.With("method", "oauth_callback").Add(1) ms.latency.With("method", "oauth_callback").Observe(time.Since(begin).Seconds()) diff --git a/users/clients.go b/users/clients.go index 2f359d43e11..197c9803340 100644 --- a/users/clients.go +++ b/users/clients.go @@ -8,6 +8,7 @@ import ( "github.com/absmach/magistrala" "github.com/absmach/magistrala/pkg/clients" + "github.com/absmach/magistrala/pkg/errors" ) // Service specifies an API that must be fullfiled by the domain service @@ -17,64 +18,64 @@ import ( type Service interface { // RegisterClient creates new client. In case of the failed registration, a // non-nil error value is returned. - RegisterClient(ctx context.Context, token string, client clients.Client) (clients.Client, error) + RegisterClient(ctx context.Context, token string, client clients.Client) (clients.Client, errors.Error) // ViewClient retrieves client info for a given client ID and an authorized token. - ViewClient(ctx context.Context, token, id string) (clients.Client, error) + ViewClient(ctx context.Context, token, id string) (clients.Client, errors.Error) // ViewProfile retrieves client info for a given token. - ViewProfile(ctx context.Context, token string) (clients.Client, error) + ViewProfile(ctx context.Context, token string) (clients.Client, errors.Error) // ListClients retrieves clients list for a valid auth token. - ListClients(ctx context.Context, token string, pm clients.Page) (clients.ClientsPage, error) + ListClients(ctx context.Context, token string, pm clients.Page) (clients.ClientsPage, errors.Error) // ListMembers retrieves everything that is assigned to a group/thing identified by objectID. - ListMembers(ctx context.Context, token, objectKind, objectID string, pm clients.Page) (clients.MembersPage, error) + ListMembers(ctx context.Context, token, objectKind, objectID string, pm clients.Page) (clients.MembersPage, errors.Error) // UpdateClient updates the client's name and metadata. - UpdateClient(ctx context.Context, token string, client clients.Client) (clients.Client, error) + UpdateClient(ctx context.Context, token string, client clients.Client) (clients.Client, errors.Error) // UpdateClientTags updates the client's tags. - UpdateClientTags(ctx context.Context, token string, client clients.Client) (clients.Client, error) + UpdateClientTags(ctx context.Context, token string, client clients.Client) (clients.Client, errors.Error) // UpdateClientIdentity updates the client's identity. - UpdateClientIdentity(ctx context.Context, token, id, identity string) (clients.Client, error) + UpdateClientIdentity(ctx context.Context, token, id, identity string) (clients.Client, errors.Error) // GenerateResetToken email where mail will be sent. // host is used for generating reset link. - GenerateResetToken(ctx context.Context, email, host string) error + GenerateResetToken(ctx context.Context, email, host string) errors.Error // UpdateClientSecret updates the client's secret. - UpdateClientSecret(ctx context.Context, token, oldSecret, newSecret string) (clients.Client, error) + UpdateClientSecret(ctx context.Context, token, oldSecret, newSecret string) (clients.Client, errors.Error) // ResetSecret change users secret in reset flow. // token can be authentication token or secret reset token. - ResetSecret(ctx context.Context, resetToken, secret string) error + ResetSecret(ctx context.Context, resetToken, secret string) errors.Error // SendPasswordReset sends reset password link to email. - SendPasswordReset(ctx context.Context, host, email, user, token string) error + SendPasswordReset(ctx context.Context, host, email, user, token string) errors.Error // UpdateClientRole updates the client's Role. - UpdateClientRole(ctx context.Context, token string, client clients.Client) (clients.Client, error) + UpdateClientRole(ctx context.Context, token string, client clients.Client) (clients.Client, errors.Error) // EnableClient logically enableds the client identified with the provided ID. - EnableClient(ctx context.Context, token, id string) (clients.Client, error) + EnableClient(ctx context.Context, token, id string) (clients.Client, errors.Error) // DisableClient logically disables the client identified with the provided ID. - DisableClient(ctx context.Context, token, id string) (clients.Client, error) + DisableClient(ctx context.Context, token, id string) (clients.Client, errors.Error) // Identify returns the client id from the given token. - Identify(ctx context.Context, tkn string) (string, error) + Identify(ctx context.Context, tkn string) (string, errors.Error) // IssueToken issues a new access and refresh token. - IssueToken(ctx context.Context, identity, secret, domainID string) (*magistrala.Token, error) + IssueToken(ctx context.Context, identity, secret, domainID string) (*magistrala.Token, errors.Error) // RefreshToken refreshes expired access tokens. // After an access token expires, the refresh token is used to get // a new pair of access and refresh tokens. - RefreshToken(ctx context.Context, accessToken, domainID string) (*magistrala.Token, error) + RefreshToken(ctx context.Context, accessToken, domainID string) (*magistrala.Token, errors.Error) // OAuthCallback handles the callback from any supported OAuth provider. // It processes the OAuth tokens and either signs in or signs up the user based on the provided state. - OAuthCallback(ctx context.Context, client clients.Client) (*magistrala.Token, error) + OAuthCallback(ctx context.Context, client clients.Client) (*magistrala.Token, errors.Error) } diff --git a/users/emailer.go b/users/emailer.go index 9f0c5396ca9..b71bc9b7301 100644 --- a/users/emailer.go +++ b/users/emailer.go @@ -3,10 +3,12 @@ package users +import "github.com/absmach/magistrala/pkg/errors" + // Emailer wrapper around the email. // //go:generate mockery --name Emailer --output=./mocks --filename emailer.go --quiet --note "Copyright (c) Abstract Machines" type Emailer interface { // SendPasswordReset sends an email to the user with a link to reset the password. - SendPasswordReset(To []string, host, user, token string) error + SendPasswordReset(To []string, host, user, token string) errors.Error } diff --git a/users/emailer/emailer.go b/users/emailer/emailer.go index 030a74ab9cb..c3b47a86fd6 100644 --- a/users/emailer/emailer.go +++ b/users/emailer/emailer.go @@ -7,6 +7,7 @@ import ( "fmt" "github.com/absmach/magistrala/internal/email" + "github.com/absmach/magistrala/pkg/errors" "github.com/absmach/magistrala/users" ) @@ -18,12 +19,12 @@ type emailer struct { } // New creates new emailer utility. -func New(url string, c *email.Config) (users.Emailer, error) { +func New(url string, c *email.Config) (users.Emailer, errors.Error) { e, err := email.New(c) - return &emailer{resetURL: url, agent: e}, err + return &emailer{resetURL: url, agent: e}, errors.Cast(err) } -func (e *emailer) SendPasswordReset(to []string, host, user, token string) error { +func (e *emailer) SendPasswordReset(to []string, host, user, token string) errors.Error { url := fmt.Sprintf("%s%s?token=%s", host, e.resetURL, token) - return e.agent.Send(to, "", "Password Reset Request", "", user, url, "") + return errors.Cast(e.agent.Send(to, "", "Password Reset Request", "", user, url, "")) } diff --git a/users/events/streams.go b/users/events/streams.go index f838c060803..b41cf57e892 100644 --- a/users/events/streams.go +++ b/users/events/streams.go @@ -8,6 +8,7 @@ import ( "github.com/absmach/magistrala" mgclients "github.com/absmach/magistrala/pkg/clients" + "github.com/absmach/magistrala/pkg/errors" "github.com/absmach/magistrala/pkg/events" "github.com/absmach/magistrala/pkg/events/store" "github.com/absmach/magistrala/users" @@ -24,10 +25,10 @@ type eventStore struct { // NewEventStoreMiddleware returns wrapper around users service that sends // events to event store. -func NewEventStoreMiddleware(ctx context.Context, svc users.Service, url string) (users.Service, error) { +func NewEventStoreMiddleware(ctx context.Context, svc users.Service, url string) (users.Service, errors.Error) { publisher, err := store.NewPublisher(ctx, url, streamID) if err != nil { - return nil, err + return nil, errors.Cast(err) } return &eventStore{ @@ -36,7 +37,7 @@ func NewEventStoreMiddleware(ctx context.Context, svc users.Service, url string) }, nil } -func (es *eventStore) RegisterClient(ctx context.Context, token string, user mgclients.Client) (mgclients.Client, error) { +func (es *eventStore) RegisterClient(ctx context.Context, token string, user mgclients.Client) (mgclients.Client, errors.Error) { user, err := es.svc.RegisterClient(ctx, token, user) if err != nil { return user, err @@ -47,13 +48,13 @@ func (es *eventStore) RegisterClient(ctx context.Context, token string, user mgc } if err := es.Publish(ctx, event); err != nil { - return user, err + return user, errors.Cast(err) } return user, nil } -func (es *eventStore) UpdateClient(ctx context.Context, token string, user mgclients.Client) (mgclients.Client, error) { +func (es *eventStore) UpdateClient(ctx context.Context, token string, user mgclients.Client) (mgclients.Client, errors.Error) { user, err := es.svc.UpdateClient(ctx, token, user) if err != nil { return user, err @@ -62,7 +63,7 @@ func (es *eventStore) UpdateClient(ctx context.Context, token string, user mgcli return es.update(ctx, "", user) } -func (es *eventStore) UpdateClientRole(ctx context.Context, token string, user mgclients.Client) (mgclients.Client, error) { +func (es *eventStore) UpdateClientRole(ctx context.Context, token string, user mgclients.Client) (mgclients.Client, errors.Error) { user, err := es.svc.UpdateClientRole(ctx, token, user) if err != nil { return user, err @@ -71,7 +72,7 @@ func (es *eventStore) UpdateClientRole(ctx context.Context, token string, user m return es.update(ctx, "role", user) } -func (es *eventStore) UpdateClientTags(ctx context.Context, token string, user mgclients.Client) (mgclients.Client, error) { +func (es *eventStore) UpdateClientTags(ctx context.Context, token string, user mgclients.Client) (mgclients.Client, errors.Error) { user, err := es.svc.UpdateClientTags(ctx, token, user) if err != nil { return user, err @@ -80,7 +81,7 @@ func (es *eventStore) UpdateClientTags(ctx context.Context, token string, user m return es.update(ctx, "tags", user) } -func (es *eventStore) UpdateClientSecret(ctx context.Context, token, oldSecret, newSecret string) (mgclients.Client, error) { +func (es *eventStore) UpdateClientSecret(ctx context.Context, token, oldSecret, newSecret string) (mgclients.Client, errors.Error) { user, err := es.svc.UpdateClientSecret(ctx, token, oldSecret, newSecret) if err != nil { return user, err @@ -89,7 +90,7 @@ func (es *eventStore) UpdateClientSecret(ctx context.Context, token, oldSecret, return es.update(ctx, "secret", user) } -func (es *eventStore) UpdateClientIdentity(ctx context.Context, token, id, identity string) (mgclients.Client, error) { +func (es *eventStore) UpdateClientIdentity(ctx context.Context, token, id, identity string) (mgclients.Client, errors.Error) { user, err := es.svc.UpdateClientIdentity(ctx, token, id, identity) if err != nil { return user, err @@ -98,19 +99,19 @@ func (es *eventStore) UpdateClientIdentity(ctx context.Context, token, id, ident return es.update(ctx, "identity", user) } -func (es *eventStore) update(ctx context.Context, operation string, user mgclients.Client) (mgclients.Client, error) { +func (es *eventStore) update(ctx context.Context, operation string, user mgclients.Client) (mgclients.Client, errors.Error) { event := updateClientEvent{ user, operation, } if err := es.Publish(ctx, event); err != nil { - return user, err + return user, errors.Cast(err) } return user, nil } -func (es *eventStore) ViewClient(ctx context.Context, token, id string) (mgclients.Client, error) { +func (es *eventStore) ViewClient(ctx context.Context, token, id string) (mgclients.Client, errors.Error) { user, err := es.svc.ViewClient(ctx, token, id) if err != nil { return user, err @@ -121,13 +122,13 @@ func (es *eventStore) ViewClient(ctx context.Context, token, id string) (mgclien } if err := es.Publish(ctx, event); err != nil { - return user, err + return user, errors.Cast(err) } return user, nil } -func (es *eventStore) ViewProfile(ctx context.Context, token string) (mgclients.Client, error) { +func (es *eventStore) ViewProfile(ctx context.Context, token string) (mgclients.Client, errors.Error) { user, err := es.svc.ViewProfile(ctx, token) if err != nil { return user, err @@ -138,13 +139,13 @@ func (es *eventStore) ViewProfile(ctx context.Context, token string) (mgclients. } if err := es.Publish(ctx, event); err != nil { - return user, err + return user, errors.Cast(err) } return user, nil } -func (es *eventStore) ListClients(ctx context.Context, token string, pm mgclients.Page) (mgclients.ClientsPage, error) { +func (es *eventStore) ListClients(ctx context.Context, token string, pm mgclients.Page) (mgclients.ClientsPage, errors.Error) { cp, err := es.svc.ListClients(ctx, token, pm) if err != nil { return cp, err @@ -154,13 +155,13 @@ func (es *eventStore) ListClients(ctx context.Context, token string, pm mgclient } if err := es.Publish(ctx, event); err != nil { - return cp, err + return cp, errors.Cast(err) } return cp, nil } -func (es *eventStore) ListMembers(ctx context.Context, token, objectKind, objectID string, pm mgclients.Page) (mgclients.MembersPage, error) { +func (es *eventStore) ListMembers(ctx context.Context, token, objectKind, objectID string, pm mgclients.Page) (mgclients.MembersPage, errors.Error) { mp, err := es.svc.ListMembers(ctx, token, objectKind, objectID, pm) if err != nil { return mp, err @@ -170,13 +171,13 @@ func (es *eventStore) ListMembers(ctx context.Context, token, objectKind, object } if err := es.Publish(ctx, event); err != nil { - return mp, err + return mp, errors.Cast(err) } return mp, nil } -func (es *eventStore) EnableClient(ctx context.Context, token, id string) (mgclients.Client, error) { +func (es *eventStore) EnableClient(ctx context.Context, token, id string) (mgclients.Client, errors.Error) { user, err := es.svc.EnableClient(ctx, token, id) if err != nil { return user, err @@ -185,7 +186,7 @@ func (es *eventStore) EnableClient(ctx context.Context, token, id string) (mgcli return es.delete(ctx, user) } -func (es *eventStore) DisableClient(ctx context.Context, token, id string) (mgclients.Client, error) { +func (es *eventStore) DisableClient(ctx context.Context, token, id string) (mgclients.Client, errors.Error) { user, err := es.svc.DisableClient(ctx, token, id) if err != nil { return user, err @@ -194,7 +195,7 @@ func (es *eventStore) DisableClient(ctx context.Context, token, id string) (mgcl return es.delete(ctx, user) } -func (es *eventStore) delete(ctx context.Context, user mgclients.Client) (mgclients.Client, error) { +func (es *eventStore) delete(ctx context.Context, user mgclients.Client) (mgclients.Client, errors.Error) { event := removeClientEvent{ id: user.ID, updatedAt: user.UpdatedAt, @@ -203,13 +204,13 @@ func (es *eventStore) delete(ctx context.Context, user mgclients.Client) (mgclie } if err := es.Publish(ctx, event); err != nil { - return user, err + return user, errors.Cast(err) } return user, nil } -func (es *eventStore) Identify(ctx context.Context, token string) (string, error) { +func (es *eventStore) Identify(ctx context.Context, token string) (string, errors.Error) { userID, err := es.svc.Identify(ctx, token) if err != nil { return userID, err @@ -220,13 +221,13 @@ func (es *eventStore) Identify(ctx context.Context, token string) (string, error } if err := es.Publish(ctx, event); err != nil { - return userID, err + return userID, errors.Cast(err) } return userID, nil } -func (es *eventStore) GenerateResetToken(ctx context.Context, email, host string) error { +func (es *eventStore) GenerateResetToken(ctx context.Context, email, host string) errors.Error { if err := es.svc.GenerateResetToken(ctx, email, host); err != nil { return err } @@ -236,10 +237,10 @@ func (es *eventStore) GenerateResetToken(ctx context.Context, email, host string host: host, } - return es.Publish(ctx, event) + return errors.Cast(es.Publish(ctx, event)) } -func (es *eventStore) IssueToken(ctx context.Context, identity, secret, domainID string) (*magistrala.Token, error) { +func (es *eventStore) IssueToken(ctx context.Context, identity, secret, domainID string) (*magistrala.Token, errors.Error) { token, err := es.svc.IssueToken(ctx, identity, secret, domainID) if err != nil { return token, err @@ -251,13 +252,13 @@ func (es *eventStore) IssueToken(ctx context.Context, identity, secret, domainID } if err := es.Publish(ctx, event); err != nil { - return token, err + return token, errors.Cast(err) } return token, nil } -func (es *eventStore) RefreshToken(ctx context.Context, refreshToken, domainID string) (*magistrala.Token, error) { +func (es *eventStore) RefreshToken(ctx context.Context, refreshToken, domainID string) (*magistrala.Token, errors.Error) { token, err := es.svc.RefreshToken(ctx, refreshToken, domainID) if err != nil { return token, err @@ -266,23 +267,23 @@ func (es *eventStore) RefreshToken(ctx context.Context, refreshToken, domainID s event := refreshTokenEvent{domainID: domainID} if err := es.Publish(ctx, event); err != nil { - return token, err + return token, errors.Cast(err) } return token, nil } -func (es *eventStore) ResetSecret(ctx context.Context, resetToken, secret string) error { +func (es *eventStore) ResetSecret(ctx context.Context, resetToken, secret string) errors.Error { if err := es.svc.ResetSecret(ctx, resetToken, secret); err != nil { return err } event := resetSecretEvent{} - return es.Publish(ctx, event) + return errors.Cast(es.Publish(ctx, event)) } -func (es *eventStore) SendPasswordReset(ctx context.Context, host, email, user, token string) error { +func (es *eventStore) SendPasswordReset(ctx context.Context, host, email, user, token string) errors.Error { if err := es.svc.SendPasswordReset(ctx, host, email, user, token); err != nil { return err } @@ -293,10 +294,10 @@ func (es *eventStore) SendPasswordReset(ctx context.Context, host, email, user, user: user, } - return es.Publish(ctx, event) + return errors.Cast(es.Publish(ctx, event)) } -func (es *eventStore) OAuthCallback(ctx context.Context, client mgclients.Client) (*magistrala.Token, error) { +func (es *eventStore) OAuthCallback(ctx context.Context, client mgclients.Client) (*magistrala.Token, errors.Error) { token, err := es.svc.OAuthCallback(ctx, client) if err != nil { return token, err @@ -307,7 +308,7 @@ func (es *eventStore) OAuthCallback(ctx context.Context, client mgclients.Client } if err := es.Publish(ctx, event); err != nil { - return token, err + return token, errors.Cast(err) } return token, nil diff --git a/users/hasher.go b/users/hasher.go index c8fa2a875d9..bf58a8092b4 100644 --- a/users/hasher.go +++ b/users/hasher.go @@ -3,15 +3,17 @@ package users +import "github.com/absmach/magistrala/pkg/errors" + // Hasher specifies an API for generating hashes of an arbitrary textual // content. // //go:generate mockery --name Hasher --output=./mocks --filename hasher.go --quiet --note "Copyright (c) Abstract Machines" type Hasher interface { // Hash generates the hashed string from plain-text. - Hash(string) (string, error) + Hash(string) (string, errors.Error) // Compare compares plain-text version to the hashed one. An error should // indicate failed comparison. - Compare(string, string) error + Compare(string, string) errors.Error } diff --git a/users/hasher/hasher.go b/users/hasher/hasher.go index 698acf70303..63e4efde0e8 100644 --- a/users/hasher/hasher.go +++ b/users/hasher/hasher.go @@ -25,7 +25,7 @@ func New() users.Hasher { return &bcryptHasher{} } -func (bh *bcryptHasher) Hash(pwd string) (string, error) { +func (bh *bcryptHasher) Hash(pwd string) (string, errors.Error) { hash, err := bcrypt.GenerateFromPassword([]byte(pwd), cost) if err != nil { return "", errors.Wrap(errHashPassword, err) @@ -34,7 +34,7 @@ func (bh *bcryptHasher) Hash(pwd string) (string, error) { return string(hash), nil } -func (bh *bcryptHasher) Compare(plain, hashed string) error { +func (bh *bcryptHasher) Compare(plain, hashed string) errors.Error { if err := bcrypt.CompareHashAndPassword([]byte(hashed), []byte(plain)); err != nil { return errors.Wrap(errComparePassword, err) } diff --git a/users/mocks/emailer.go b/users/mocks/emailer.go index 4c331dc7dd4..6dd7e0297dc 100644 --- a/users/mocks/emailer.go +++ b/users/mocks/emailer.go @@ -4,7 +4,10 @@ package mocks -import mock "github.com/stretchr/testify/mock" +import ( + errors "github.com/absmach/magistrala/pkg/errors" + mock "github.com/stretchr/testify/mock" +) // Emailer is an autogenerated mock type for the Emailer type type Emailer struct { @@ -12,18 +15,20 @@ type Emailer struct { } // SendPasswordReset provides a mock function with given fields: To, host, user, token -func (_m *Emailer) SendPasswordReset(To []string, host string, user string, token string) error { +func (_m *Emailer) SendPasswordReset(To []string, host string, user string, token string) errors.Error { ret := _m.Called(To, host, user, token) if len(ret) == 0 { panic("no return value specified for SendPasswordReset") } - var r0 error - if rf, ok := ret.Get(0).(func([]string, string, string, string) error); ok { + var r0 errors.Error + if rf, ok := ret.Get(0).(func([]string, string, string, string) errors.Error); ok { r0 = rf(To, host, user, token) } else { - r0 = ret.Error(0) + if ret.Get(0) != nil { + r0 = ret.Get(0).(errors.Error) + } } return r0 diff --git a/users/mocks/hasher.go b/users/mocks/hasher.go index b1b1f016916..c7ff1b31178 100644 --- a/users/mocks/hasher.go +++ b/users/mocks/hasher.go @@ -4,7 +4,10 @@ package mocks -import mock "github.com/stretchr/testify/mock" +import ( + errors "github.com/absmach/magistrala/pkg/errors" + mock "github.com/stretchr/testify/mock" +) // Hasher is an autogenerated mock type for the Hasher type type Hasher struct { @@ -12,25 +15,27 @@ type Hasher struct { } // Compare provides a mock function with given fields: _a0, _a1 -func (_m *Hasher) Compare(_a0 string, _a1 string) error { +func (_m *Hasher) Compare(_a0 string, _a1 string) errors.Error { ret := _m.Called(_a0, _a1) if len(ret) == 0 { panic("no return value specified for Compare") } - var r0 error - if rf, ok := ret.Get(0).(func(string, string) error); ok { + var r0 errors.Error + if rf, ok := ret.Get(0).(func(string, string) errors.Error); ok { r0 = rf(_a0, _a1) } else { - r0 = ret.Error(0) + if ret.Get(0) != nil { + r0 = ret.Get(0).(errors.Error) + } } return r0 } // Hash provides a mock function with given fields: _a0 -func (_m *Hasher) Hash(_a0 string) (string, error) { +func (_m *Hasher) Hash(_a0 string) (string, errors.Error) { ret := _m.Called(_a0) if len(ret) == 0 { @@ -38,8 +43,8 @@ func (_m *Hasher) Hash(_a0 string) (string, error) { } var r0 string - var r1 error - if rf, ok := ret.Get(0).(func(string) (string, error)); ok { + var r1 errors.Error + if rf, ok := ret.Get(0).(func(string) (string, errors.Error)); ok { return rf(_a0) } if rf, ok := ret.Get(0).(func(string) string); ok { @@ -48,10 +53,12 @@ func (_m *Hasher) Hash(_a0 string) (string, error) { r0 = ret.Get(0).(string) } - if rf, ok := ret.Get(1).(func(string) error); ok { + if rf, ok := ret.Get(1).(func(string) errors.Error); ok { r1 = rf(_a0) } else { - r1 = ret.Error(1) + if ret.Get(1) != nil { + r1 = ret.Get(1).(errors.Error) + } } return r0, r1 diff --git a/users/mocks/repository.go b/users/mocks/repository.go index 3fbff82d4ba..b50f6ed7281 100644 --- a/users/mocks/repository.go +++ b/users/mocks/repository.go @@ -9,6 +9,8 @@ import ( clients "github.com/absmach/magistrala/pkg/clients" + errors "github.com/absmach/magistrala/pkg/errors" + mock "github.com/stretchr/testify/mock" ) @@ -18,7 +20,7 @@ type Repository struct { } // ChangeStatus provides a mock function with given fields: ctx, client -func (_m *Repository) ChangeStatus(ctx context.Context, client clients.Client) (clients.Client, error) { +func (_m *Repository) ChangeStatus(ctx context.Context, client clients.Client) (clients.Client, errors.Error) { ret := _m.Called(ctx, client) if len(ret) == 0 { @@ -26,8 +28,8 @@ func (_m *Repository) ChangeStatus(ctx context.Context, client clients.Client) ( } var r0 clients.Client - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, clients.Client) (clients.Client, error)); ok { + var r1 errors.Error + if rf, ok := ret.Get(0).(func(context.Context, clients.Client) (clients.Client, errors.Error)); ok { return rf(ctx, client) } if rf, ok := ret.Get(0).(func(context.Context, clients.Client) clients.Client); ok { @@ -36,35 +38,39 @@ func (_m *Repository) ChangeStatus(ctx context.Context, client clients.Client) ( r0 = ret.Get(0).(clients.Client) } - if rf, ok := ret.Get(1).(func(context.Context, clients.Client) error); ok { + if rf, ok := ret.Get(1).(func(context.Context, clients.Client) errors.Error); ok { r1 = rf(ctx, client) } else { - r1 = ret.Error(1) + if ret.Get(1) != nil { + r1 = ret.Get(1).(errors.Error) + } } return r0, r1 } // CheckSuperAdmin provides a mock function with given fields: ctx, adminID -func (_m *Repository) CheckSuperAdmin(ctx context.Context, adminID string) error { +func (_m *Repository) CheckSuperAdmin(ctx context.Context, adminID string) errors.Error { ret := _m.Called(ctx, adminID) if len(ret) == 0 { panic("no return value specified for CheckSuperAdmin") } - var r0 error - if rf, ok := ret.Get(0).(func(context.Context, string) error); ok { + var r0 errors.Error + if rf, ok := ret.Get(0).(func(context.Context, string) errors.Error); ok { r0 = rf(ctx, adminID) } else { - r0 = ret.Error(0) + if ret.Get(0) != nil { + r0 = ret.Get(0).(errors.Error) + } } return r0 } // RetrieveAll provides a mock function with given fields: ctx, pm -func (_m *Repository) RetrieveAll(ctx context.Context, pm clients.Page) (clients.ClientsPage, error) { +func (_m *Repository) RetrieveAll(ctx context.Context, pm clients.Page) (clients.ClientsPage, errors.Error) { ret := _m.Called(ctx, pm) if len(ret) == 0 { @@ -72,8 +78,8 @@ func (_m *Repository) RetrieveAll(ctx context.Context, pm clients.Page) (clients } var r0 clients.ClientsPage - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, clients.Page) (clients.ClientsPage, error)); ok { + var r1 errors.Error + if rf, ok := ret.Get(0).(func(context.Context, clients.Page) (clients.ClientsPage, errors.Error)); ok { return rf(ctx, pm) } if rf, ok := ret.Get(0).(func(context.Context, clients.Page) clients.ClientsPage); ok { @@ -82,17 +88,19 @@ func (_m *Repository) RetrieveAll(ctx context.Context, pm clients.Page) (clients r0 = ret.Get(0).(clients.ClientsPage) } - if rf, ok := ret.Get(1).(func(context.Context, clients.Page) error); ok { + if rf, ok := ret.Get(1).(func(context.Context, clients.Page) errors.Error); ok { r1 = rf(ctx, pm) } else { - r1 = ret.Error(1) + if ret.Get(1) != nil { + r1 = ret.Get(1).(errors.Error) + } } return r0, r1 } // RetrieveAllBasicInfo provides a mock function with given fields: ctx, pm -func (_m *Repository) RetrieveAllBasicInfo(ctx context.Context, pm clients.Page) (clients.ClientsPage, error) { +func (_m *Repository) RetrieveAllBasicInfo(ctx context.Context, pm clients.Page) (clients.ClientsPage, errors.Error) { ret := _m.Called(ctx, pm) if len(ret) == 0 { @@ -100,8 +108,8 @@ func (_m *Repository) RetrieveAllBasicInfo(ctx context.Context, pm clients.Page) } var r0 clients.ClientsPage - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, clients.Page) (clients.ClientsPage, error)); ok { + var r1 errors.Error + if rf, ok := ret.Get(0).(func(context.Context, clients.Page) (clients.ClientsPage, errors.Error)); ok { return rf(ctx, pm) } if rf, ok := ret.Get(0).(func(context.Context, clients.Page) clients.ClientsPage); ok { @@ -110,17 +118,19 @@ func (_m *Repository) RetrieveAllBasicInfo(ctx context.Context, pm clients.Page) r0 = ret.Get(0).(clients.ClientsPage) } - if rf, ok := ret.Get(1).(func(context.Context, clients.Page) error); ok { + if rf, ok := ret.Get(1).(func(context.Context, clients.Page) errors.Error); ok { r1 = rf(ctx, pm) } else { - r1 = ret.Error(1) + if ret.Get(1) != nil { + r1 = ret.Get(1).(errors.Error) + } } return r0, r1 } // RetrieveAllByIDs provides a mock function with given fields: ctx, pm -func (_m *Repository) RetrieveAllByIDs(ctx context.Context, pm clients.Page) (clients.ClientsPage, error) { +func (_m *Repository) RetrieveAllByIDs(ctx context.Context, pm clients.Page) (clients.ClientsPage, errors.Error) { ret := _m.Called(ctx, pm) if len(ret) == 0 { @@ -128,8 +138,8 @@ func (_m *Repository) RetrieveAllByIDs(ctx context.Context, pm clients.Page) (cl } var r0 clients.ClientsPage - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, clients.Page) (clients.ClientsPage, error)); ok { + var r1 errors.Error + if rf, ok := ret.Get(0).(func(context.Context, clients.Page) (clients.ClientsPage, errors.Error)); ok { return rf(ctx, pm) } if rf, ok := ret.Get(0).(func(context.Context, clients.Page) clients.ClientsPage); ok { @@ -138,17 +148,19 @@ func (_m *Repository) RetrieveAllByIDs(ctx context.Context, pm clients.Page) (cl r0 = ret.Get(0).(clients.ClientsPage) } - if rf, ok := ret.Get(1).(func(context.Context, clients.Page) error); ok { + if rf, ok := ret.Get(1).(func(context.Context, clients.Page) errors.Error); ok { r1 = rf(ctx, pm) } else { - r1 = ret.Error(1) + if ret.Get(1) != nil { + r1 = ret.Get(1).(errors.Error) + } } return r0, r1 } // RetrieveByID provides a mock function with given fields: ctx, id -func (_m *Repository) RetrieveByID(ctx context.Context, id string) (clients.Client, error) { +func (_m *Repository) RetrieveByID(ctx context.Context, id string) (clients.Client, errors.Error) { ret := _m.Called(ctx, id) if len(ret) == 0 { @@ -156,8 +168,8 @@ func (_m *Repository) RetrieveByID(ctx context.Context, id string) (clients.Clie } var r0 clients.Client - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, string) (clients.Client, error)); ok { + var r1 errors.Error + if rf, ok := ret.Get(0).(func(context.Context, string) (clients.Client, errors.Error)); ok { return rf(ctx, id) } if rf, ok := ret.Get(0).(func(context.Context, string) clients.Client); ok { @@ -166,17 +178,19 @@ func (_m *Repository) RetrieveByID(ctx context.Context, id string) (clients.Clie r0 = ret.Get(0).(clients.Client) } - if rf, ok := ret.Get(1).(func(context.Context, string) error); ok { + if rf, ok := ret.Get(1).(func(context.Context, string) errors.Error); ok { r1 = rf(ctx, id) } else { - r1 = ret.Error(1) + if ret.Get(1) != nil { + r1 = ret.Get(1).(errors.Error) + } } return r0, r1 } // RetrieveByIdentity provides a mock function with given fields: ctx, identity -func (_m *Repository) RetrieveByIdentity(ctx context.Context, identity string) (clients.Client, error) { +func (_m *Repository) RetrieveByIdentity(ctx context.Context, identity string) (clients.Client, errors.Error) { ret := _m.Called(ctx, identity) if len(ret) == 0 { @@ -184,8 +198,8 @@ func (_m *Repository) RetrieveByIdentity(ctx context.Context, identity string) ( } var r0 clients.Client - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, string) (clients.Client, error)); ok { + var r1 errors.Error + if rf, ok := ret.Get(0).(func(context.Context, string) (clients.Client, errors.Error)); ok { return rf(ctx, identity) } if rf, ok := ret.Get(0).(func(context.Context, string) clients.Client); ok { @@ -194,17 +208,19 @@ func (_m *Repository) RetrieveByIdentity(ctx context.Context, identity string) ( r0 = ret.Get(0).(clients.Client) } - if rf, ok := ret.Get(1).(func(context.Context, string) error); ok { + if rf, ok := ret.Get(1).(func(context.Context, string) errors.Error); ok { r1 = rf(ctx, identity) } else { - r1 = ret.Error(1) + if ret.Get(1) != nil { + r1 = ret.Get(1).(errors.Error) + } } return r0, r1 } // Save provides a mock function with given fields: ctx, client -func (_m *Repository) Save(ctx context.Context, client clients.Client) (clients.Client, error) { +func (_m *Repository) Save(ctx context.Context, client clients.Client) (clients.Client, errors.Error) { ret := _m.Called(ctx, client) if len(ret) == 0 { @@ -212,8 +228,8 @@ func (_m *Repository) Save(ctx context.Context, client clients.Client) (clients. } var r0 clients.Client - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, clients.Client) (clients.Client, error)); ok { + var r1 errors.Error + if rf, ok := ret.Get(0).(func(context.Context, clients.Client) (clients.Client, errors.Error)); ok { return rf(ctx, client) } if rf, ok := ret.Get(0).(func(context.Context, clients.Client) clients.Client); ok { @@ -222,17 +238,19 @@ func (_m *Repository) Save(ctx context.Context, client clients.Client) (clients. r0 = ret.Get(0).(clients.Client) } - if rf, ok := ret.Get(1).(func(context.Context, clients.Client) error); ok { + if rf, ok := ret.Get(1).(func(context.Context, clients.Client) errors.Error); ok { r1 = rf(ctx, client) } else { - r1 = ret.Error(1) + if ret.Get(1) != nil { + r1 = ret.Get(1).(errors.Error) + } } return r0, r1 } // Update provides a mock function with given fields: ctx, client -func (_m *Repository) Update(ctx context.Context, client clients.Client) (clients.Client, error) { +func (_m *Repository) Update(ctx context.Context, client clients.Client) (clients.Client, errors.Error) { ret := _m.Called(ctx, client) if len(ret) == 0 { @@ -240,8 +258,8 @@ func (_m *Repository) Update(ctx context.Context, client clients.Client) (client } var r0 clients.Client - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, clients.Client) (clients.Client, error)); ok { + var r1 errors.Error + if rf, ok := ret.Get(0).(func(context.Context, clients.Client) (clients.Client, errors.Error)); ok { return rf(ctx, client) } if rf, ok := ret.Get(0).(func(context.Context, clients.Client) clients.Client); ok { @@ -250,17 +268,19 @@ func (_m *Repository) Update(ctx context.Context, client clients.Client) (client r0 = ret.Get(0).(clients.Client) } - if rf, ok := ret.Get(1).(func(context.Context, clients.Client) error); ok { + if rf, ok := ret.Get(1).(func(context.Context, clients.Client) errors.Error); ok { r1 = rf(ctx, client) } else { - r1 = ret.Error(1) + if ret.Get(1) != nil { + r1 = ret.Get(1).(errors.Error) + } } return r0, r1 } // UpdateIdentity provides a mock function with given fields: ctx, client -func (_m *Repository) UpdateIdentity(ctx context.Context, client clients.Client) (clients.Client, error) { +func (_m *Repository) UpdateIdentity(ctx context.Context, client clients.Client) (clients.Client, errors.Error) { ret := _m.Called(ctx, client) if len(ret) == 0 { @@ -268,8 +288,8 @@ func (_m *Repository) UpdateIdentity(ctx context.Context, client clients.Client) } var r0 clients.Client - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, clients.Client) (clients.Client, error)); ok { + var r1 errors.Error + if rf, ok := ret.Get(0).(func(context.Context, clients.Client) (clients.Client, errors.Error)); ok { return rf(ctx, client) } if rf, ok := ret.Get(0).(func(context.Context, clients.Client) clients.Client); ok { @@ -278,17 +298,19 @@ func (_m *Repository) UpdateIdentity(ctx context.Context, client clients.Client) r0 = ret.Get(0).(clients.Client) } - if rf, ok := ret.Get(1).(func(context.Context, clients.Client) error); ok { + if rf, ok := ret.Get(1).(func(context.Context, clients.Client) errors.Error); ok { r1 = rf(ctx, client) } else { - r1 = ret.Error(1) + if ret.Get(1) != nil { + r1 = ret.Get(1).(errors.Error) + } } return r0, r1 } // UpdateRole provides a mock function with given fields: ctx, client -func (_m *Repository) UpdateRole(ctx context.Context, client clients.Client) (clients.Client, error) { +func (_m *Repository) UpdateRole(ctx context.Context, client clients.Client) (clients.Client, errors.Error) { ret := _m.Called(ctx, client) if len(ret) == 0 { @@ -296,8 +318,8 @@ func (_m *Repository) UpdateRole(ctx context.Context, client clients.Client) (cl } var r0 clients.Client - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, clients.Client) (clients.Client, error)); ok { + var r1 errors.Error + if rf, ok := ret.Get(0).(func(context.Context, clients.Client) (clients.Client, errors.Error)); ok { return rf(ctx, client) } if rf, ok := ret.Get(0).(func(context.Context, clients.Client) clients.Client); ok { @@ -306,17 +328,19 @@ func (_m *Repository) UpdateRole(ctx context.Context, client clients.Client) (cl r0 = ret.Get(0).(clients.Client) } - if rf, ok := ret.Get(1).(func(context.Context, clients.Client) error); ok { + if rf, ok := ret.Get(1).(func(context.Context, clients.Client) errors.Error); ok { r1 = rf(ctx, client) } else { - r1 = ret.Error(1) + if ret.Get(1) != nil { + r1 = ret.Get(1).(errors.Error) + } } return r0, r1 } // UpdateSecret provides a mock function with given fields: ctx, client -func (_m *Repository) UpdateSecret(ctx context.Context, client clients.Client) (clients.Client, error) { +func (_m *Repository) UpdateSecret(ctx context.Context, client clients.Client) (clients.Client, errors.Error) { ret := _m.Called(ctx, client) if len(ret) == 0 { @@ -324,8 +348,8 @@ func (_m *Repository) UpdateSecret(ctx context.Context, client clients.Client) ( } var r0 clients.Client - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, clients.Client) (clients.Client, error)); ok { + var r1 errors.Error + if rf, ok := ret.Get(0).(func(context.Context, clients.Client) (clients.Client, errors.Error)); ok { return rf(ctx, client) } if rf, ok := ret.Get(0).(func(context.Context, clients.Client) clients.Client); ok { @@ -334,17 +358,19 @@ func (_m *Repository) UpdateSecret(ctx context.Context, client clients.Client) ( r0 = ret.Get(0).(clients.Client) } - if rf, ok := ret.Get(1).(func(context.Context, clients.Client) error); ok { + if rf, ok := ret.Get(1).(func(context.Context, clients.Client) errors.Error); ok { r1 = rf(ctx, client) } else { - r1 = ret.Error(1) + if ret.Get(1) != nil { + r1 = ret.Get(1).(errors.Error) + } } return r0, r1 } // UpdateTags provides a mock function with given fields: ctx, client -func (_m *Repository) UpdateTags(ctx context.Context, client clients.Client) (clients.Client, error) { +func (_m *Repository) UpdateTags(ctx context.Context, client clients.Client) (clients.Client, errors.Error) { ret := _m.Called(ctx, client) if len(ret) == 0 { @@ -352,8 +378,8 @@ func (_m *Repository) UpdateTags(ctx context.Context, client clients.Client) (cl } var r0 clients.Client - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, clients.Client) (clients.Client, error)); ok { + var r1 errors.Error + if rf, ok := ret.Get(0).(func(context.Context, clients.Client) (clients.Client, errors.Error)); ok { return rf(ctx, client) } if rf, ok := ret.Get(0).(func(context.Context, clients.Client) clients.Client); ok { @@ -362,10 +388,12 @@ func (_m *Repository) UpdateTags(ctx context.Context, client clients.Client) (cl r0 = ret.Get(0).(clients.Client) } - if rf, ok := ret.Get(1).(func(context.Context, clients.Client) error); ok { + if rf, ok := ret.Get(1).(func(context.Context, clients.Client) errors.Error); ok { r1 = rf(ctx, client) } else { - r1 = ret.Error(1) + if ret.Get(1) != nil { + r1 = ret.Get(1).(errors.Error) + } } return r0, r1 diff --git a/users/mocks/service.go b/users/mocks/service.go index 4c2f6b13f2e..2b73711cfb2 100644 --- a/users/mocks/service.go +++ b/users/mocks/service.go @@ -9,6 +9,8 @@ import ( clients "github.com/absmach/magistrala/pkg/clients" + errors "github.com/absmach/magistrala/pkg/errors" + magistrala "github.com/absmach/magistrala" mock "github.com/stretchr/testify/mock" @@ -20,7 +22,7 @@ type Service struct { } // DisableClient provides a mock function with given fields: ctx, token, id -func (_m *Service) DisableClient(ctx context.Context, token string, id string) (clients.Client, error) { +func (_m *Service) DisableClient(ctx context.Context, token string, id string) (clients.Client, errors.Error) { ret := _m.Called(ctx, token, id) if len(ret) == 0 { @@ -28,8 +30,8 @@ func (_m *Service) DisableClient(ctx context.Context, token string, id string) ( } var r0 clients.Client - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, string, string) (clients.Client, error)); ok { + var r1 errors.Error + if rf, ok := ret.Get(0).(func(context.Context, string, string) (clients.Client, errors.Error)); ok { return rf(ctx, token, id) } if rf, ok := ret.Get(0).(func(context.Context, string, string) clients.Client); ok { @@ -38,17 +40,19 @@ func (_m *Service) DisableClient(ctx context.Context, token string, id string) ( r0 = ret.Get(0).(clients.Client) } - if rf, ok := ret.Get(1).(func(context.Context, string, string) error); ok { + if rf, ok := ret.Get(1).(func(context.Context, string, string) errors.Error); ok { r1 = rf(ctx, token, id) } else { - r1 = ret.Error(1) + if ret.Get(1) != nil { + r1 = ret.Get(1).(errors.Error) + } } return r0, r1 } // EnableClient provides a mock function with given fields: ctx, token, id -func (_m *Service) EnableClient(ctx context.Context, token string, id string) (clients.Client, error) { +func (_m *Service) EnableClient(ctx context.Context, token string, id string) (clients.Client, errors.Error) { ret := _m.Called(ctx, token, id) if len(ret) == 0 { @@ -56,8 +60,8 @@ func (_m *Service) EnableClient(ctx context.Context, token string, id string) (c } var r0 clients.Client - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, string, string) (clients.Client, error)); ok { + var r1 errors.Error + if rf, ok := ret.Get(0).(func(context.Context, string, string) (clients.Client, errors.Error)); ok { return rf(ctx, token, id) } if rf, ok := ret.Get(0).(func(context.Context, string, string) clients.Client); ok { @@ -66,35 +70,39 @@ func (_m *Service) EnableClient(ctx context.Context, token string, id string) (c r0 = ret.Get(0).(clients.Client) } - if rf, ok := ret.Get(1).(func(context.Context, string, string) error); ok { + if rf, ok := ret.Get(1).(func(context.Context, string, string) errors.Error); ok { r1 = rf(ctx, token, id) } else { - r1 = ret.Error(1) + if ret.Get(1) != nil { + r1 = ret.Get(1).(errors.Error) + } } return r0, r1 } // GenerateResetToken provides a mock function with given fields: ctx, email, host -func (_m *Service) GenerateResetToken(ctx context.Context, email string, host string) error { +func (_m *Service) GenerateResetToken(ctx context.Context, email string, host string) errors.Error { ret := _m.Called(ctx, email, host) if len(ret) == 0 { panic("no return value specified for GenerateResetToken") } - var r0 error - if rf, ok := ret.Get(0).(func(context.Context, string, string) error); ok { + var r0 errors.Error + if rf, ok := ret.Get(0).(func(context.Context, string, string) errors.Error); ok { r0 = rf(ctx, email, host) } else { - r0 = ret.Error(0) + if ret.Get(0) != nil { + r0 = ret.Get(0).(errors.Error) + } } return r0 } // Identify provides a mock function with given fields: ctx, tkn -func (_m *Service) Identify(ctx context.Context, tkn string) (string, error) { +func (_m *Service) Identify(ctx context.Context, tkn string) (string, errors.Error) { ret := _m.Called(ctx, tkn) if len(ret) == 0 { @@ -102,8 +110,8 @@ func (_m *Service) Identify(ctx context.Context, tkn string) (string, error) { } var r0 string - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, string) (string, error)); ok { + var r1 errors.Error + if rf, ok := ret.Get(0).(func(context.Context, string) (string, errors.Error)); ok { return rf(ctx, tkn) } if rf, ok := ret.Get(0).(func(context.Context, string) string); ok { @@ -112,17 +120,19 @@ func (_m *Service) Identify(ctx context.Context, tkn string) (string, error) { r0 = ret.Get(0).(string) } - if rf, ok := ret.Get(1).(func(context.Context, string) error); ok { + if rf, ok := ret.Get(1).(func(context.Context, string) errors.Error); ok { r1 = rf(ctx, tkn) } else { - r1 = ret.Error(1) + if ret.Get(1) != nil { + r1 = ret.Get(1).(errors.Error) + } } return r0, r1 } // IssueToken provides a mock function with given fields: ctx, identity, secret, domainID -func (_m *Service) IssueToken(ctx context.Context, identity string, secret string, domainID string) (*magistrala.Token, error) { +func (_m *Service) IssueToken(ctx context.Context, identity string, secret string, domainID string) (*magistrala.Token, errors.Error) { ret := _m.Called(ctx, identity, secret, domainID) if len(ret) == 0 { @@ -130,8 +140,8 @@ func (_m *Service) IssueToken(ctx context.Context, identity string, secret strin } var r0 *magistrala.Token - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, string, string, string) (*magistrala.Token, error)); ok { + var r1 errors.Error + if rf, ok := ret.Get(0).(func(context.Context, string, string, string) (*magistrala.Token, errors.Error)); ok { return rf(ctx, identity, secret, domainID) } if rf, ok := ret.Get(0).(func(context.Context, string, string, string) *magistrala.Token); ok { @@ -142,17 +152,19 @@ func (_m *Service) IssueToken(ctx context.Context, identity string, secret strin } } - if rf, ok := ret.Get(1).(func(context.Context, string, string, string) error); ok { + if rf, ok := ret.Get(1).(func(context.Context, string, string, string) errors.Error); ok { r1 = rf(ctx, identity, secret, domainID) } else { - r1 = ret.Error(1) + if ret.Get(1) != nil { + r1 = ret.Get(1).(errors.Error) + } } return r0, r1 } // ListClients provides a mock function with given fields: ctx, token, pm -func (_m *Service) ListClients(ctx context.Context, token string, pm clients.Page) (clients.ClientsPage, error) { +func (_m *Service) ListClients(ctx context.Context, token string, pm clients.Page) (clients.ClientsPage, errors.Error) { ret := _m.Called(ctx, token, pm) if len(ret) == 0 { @@ -160,8 +172,8 @@ func (_m *Service) ListClients(ctx context.Context, token string, pm clients.Pag } var r0 clients.ClientsPage - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, string, clients.Page) (clients.ClientsPage, error)); ok { + var r1 errors.Error + if rf, ok := ret.Get(0).(func(context.Context, string, clients.Page) (clients.ClientsPage, errors.Error)); ok { return rf(ctx, token, pm) } if rf, ok := ret.Get(0).(func(context.Context, string, clients.Page) clients.ClientsPage); ok { @@ -170,17 +182,19 @@ func (_m *Service) ListClients(ctx context.Context, token string, pm clients.Pag r0 = ret.Get(0).(clients.ClientsPage) } - if rf, ok := ret.Get(1).(func(context.Context, string, clients.Page) error); ok { + if rf, ok := ret.Get(1).(func(context.Context, string, clients.Page) errors.Error); ok { r1 = rf(ctx, token, pm) } else { - r1 = ret.Error(1) + if ret.Get(1) != nil { + r1 = ret.Get(1).(errors.Error) + } } return r0, r1 } // ListMembers provides a mock function with given fields: ctx, token, objectKind, objectID, pm -func (_m *Service) ListMembers(ctx context.Context, token string, objectKind string, objectID string, pm clients.Page) (clients.MembersPage, error) { +func (_m *Service) ListMembers(ctx context.Context, token string, objectKind string, objectID string, pm clients.Page) (clients.MembersPage, errors.Error) { ret := _m.Called(ctx, token, objectKind, objectID, pm) if len(ret) == 0 { @@ -188,8 +202,8 @@ func (_m *Service) ListMembers(ctx context.Context, token string, objectKind str } var r0 clients.MembersPage - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, string, string, string, clients.Page) (clients.MembersPage, error)); ok { + var r1 errors.Error + if rf, ok := ret.Get(0).(func(context.Context, string, string, string, clients.Page) (clients.MembersPage, errors.Error)); ok { return rf(ctx, token, objectKind, objectID, pm) } if rf, ok := ret.Get(0).(func(context.Context, string, string, string, clients.Page) clients.MembersPage); ok { @@ -198,17 +212,19 @@ func (_m *Service) ListMembers(ctx context.Context, token string, objectKind str r0 = ret.Get(0).(clients.MembersPage) } - if rf, ok := ret.Get(1).(func(context.Context, string, string, string, clients.Page) error); ok { + if rf, ok := ret.Get(1).(func(context.Context, string, string, string, clients.Page) errors.Error); ok { r1 = rf(ctx, token, objectKind, objectID, pm) } else { - r1 = ret.Error(1) + if ret.Get(1) != nil { + r1 = ret.Get(1).(errors.Error) + } } return r0, r1 } // OAuthCallback provides a mock function with given fields: ctx, client -func (_m *Service) OAuthCallback(ctx context.Context, client clients.Client) (*magistrala.Token, error) { +func (_m *Service) OAuthCallback(ctx context.Context, client clients.Client) (*magistrala.Token, errors.Error) { ret := _m.Called(ctx, client) if len(ret) == 0 { @@ -216,8 +232,8 @@ func (_m *Service) OAuthCallback(ctx context.Context, client clients.Client) (*m } var r0 *magistrala.Token - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, clients.Client) (*magistrala.Token, error)); ok { + var r1 errors.Error + if rf, ok := ret.Get(0).(func(context.Context, clients.Client) (*magistrala.Token, errors.Error)); ok { return rf(ctx, client) } if rf, ok := ret.Get(0).(func(context.Context, clients.Client) *magistrala.Token); ok { @@ -228,17 +244,19 @@ func (_m *Service) OAuthCallback(ctx context.Context, client clients.Client) (*m } } - if rf, ok := ret.Get(1).(func(context.Context, clients.Client) error); ok { + if rf, ok := ret.Get(1).(func(context.Context, clients.Client) errors.Error); ok { r1 = rf(ctx, client) } else { - r1 = ret.Error(1) + if ret.Get(1) != nil { + r1 = ret.Get(1).(errors.Error) + } } return r0, r1 } // RefreshToken provides a mock function with given fields: ctx, accessToken, domainID -func (_m *Service) RefreshToken(ctx context.Context, accessToken string, domainID string) (*magistrala.Token, error) { +func (_m *Service) RefreshToken(ctx context.Context, accessToken string, domainID string) (*magistrala.Token, errors.Error) { ret := _m.Called(ctx, accessToken, domainID) if len(ret) == 0 { @@ -246,8 +264,8 @@ func (_m *Service) RefreshToken(ctx context.Context, accessToken string, domainI } var r0 *magistrala.Token - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, string, string) (*magistrala.Token, error)); ok { + var r1 errors.Error + if rf, ok := ret.Get(0).(func(context.Context, string, string) (*magistrala.Token, errors.Error)); ok { return rf(ctx, accessToken, domainID) } if rf, ok := ret.Get(0).(func(context.Context, string, string) *magistrala.Token); ok { @@ -258,17 +276,19 @@ func (_m *Service) RefreshToken(ctx context.Context, accessToken string, domainI } } - if rf, ok := ret.Get(1).(func(context.Context, string, string) error); ok { + if rf, ok := ret.Get(1).(func(context.Context, string, string) errors.Error); ok { r1 = rf(ctx, accessToken, domainID) } else { - r1 = ret.Error(1) + if ret.Get(1) != nil { + r1 = ret.Get(1).(errors.Error) + } } return r0, r1 } // RegisterClient provides a mock function with given fields: ctx, token, client -func (_m *Service) RegisterClient(ctx context.Context, token string, client clients.Client) (clients.Client, error) { +func (_m *Service) RegisterClient(ctx context.Context, token string, client clients.Client) (clients.Client, errors.Error) { ret := _m.Called(ctx, token, client) if len(ret) == 0 { @@ -276,8 +296,8 @@ func (_m *Service) RegisterClient(ctx context.Context, token string, client clie } var r0 clients.Client - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, string, clients.Client) (clients.Client, error)); ok { + var r1 errors.Error + if rf, ok := ret.Get(0).(func(context.Context, string, clients.Client) (clients.Client, errors.Error)); ok { return rf(ctx, token, client) } if rf, ok := ret.Get(0).(func(context.Context, string, clients.Client) clients.Client); ok { @@ -286,53 +306,59 @@ func (_m *Service) RegisterClient(ctx context.Context, token string, client clie r0 = ret.Get(0).(clients.Client) } - if rf, ok := ret.Get(1).(func(context.Context, string, clients.Client) error); ok { + if rf, ok := ret.Get(1).(func(context.Context, string, clients.Client) errors.Error); ok { r1 = rf(ctx, token, client) } else { - r1 = ret.Error(1) + if ret.Get(1) != nil { + r1 = ret.Get(1).(errors.Error) + } } return r0, r1 } // ResetSecret provides a mock function with given fields: ctx, resetToken, secret -func (_m *Service) ResetSecret(ctx context.Context, resetToken string, secret string) error { +func (_m *Service) ResetSecret(ctx context.Context, resetToken string, secret string) errors.Error { ret := _m.Called(ctx, resetToken, secret) if len(ret) == 0 { panic("no return value specified for ResetSecret") } - var r0 error - if rf, ok := ret.Get(0).(func(context.Context, string, string) error); ok { + var r0 errors.Error + if rf, ok := ret.Get(0).(func(context.Context, string, string) errors.Error); ok { r0 = rf(ctx, resetToken, secret) } else { - r0 = ret.Error(0) + if ret.Get(0) != nil { + r0 = ret.Get(0).(errors.Error) + } } return r0 } // SendPasswordReset provides a mock function with given fields: ctx, host, email, user, token -func (_m *Service) SendPasswordReset(ctx context.Context, host string, email string, user string, token string) error { +func (_m *Service) SendPasswordReset(ctx context.Context, host string, email string, user string, token string) errors.Error { ret := _m.Called(ctx, host, email, user, token) if len(ret) == 0 { panic("no return value specified for SendPasswordReset") } - var r0 error - if rf, ok := ret.Get(0).(func(context.Context, string, string, string, string) error); ok { + var r0 errors.Error + if rf, ok := ret.Get(0).(func(context.Context, string, string, string, string) errors.Error); ok { r0 = rf(ctx, host, email, user, token) } else { - r0 = ret.Error(0) + if ret.Get(0) != nil { + r0 = ret.Get(0).(errors.Error) + } } return r0 } // UpdateClient provides a mock function with given fields: ctx, token, client -func (_m *Service) UpdateClient(ctx context.Context, token string, client clients.Client) (clients.Client, error) { +func (_m *Service) UpdateClient(ctx context.Context, token string, client clients.Client) (clients.Client, errors.Error) { ret := _m.Called(ctx, token, client) if len(ret) == 0 { @@ -340,8 +366,8 @@ func (_m *Service) UpdateClient(ctx context.Context, token string, client client } var r0 clients.Client - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, string, clients.Client) (clients.Client, error)); ok { + var r1 errors.Error + if rf, ok := ret.Get(0).(func(context.Context, string, clients.Client) (clients.Client, errors.Error)); ok { return rf(ctx, token, client) } if rf, ok := ret.Get(0).(func(context.Context, string, clients.Client) clients.Client); ok { @@ -350,17 +376,19 @@ func (_m *Service) UpdateClient(ctx context.Context, token string, client client r0 = ret.Get(0).(clients.Client) } - if rf, ok := ret.Get(1).(func(context.Context, string, clients.Client) error); ok { + if rf, ok := ret.Get(1).(func(context.Context, string, clients.Client) errors.Error); ok { r1 = rf(ctx, token, client) } else { - r1 = ret.Error(1) + if ret.Get(1) != nil { + r1 = ret.Get(1).(errors.Error) + } } return r0, r1 } // UpdateClientIdentity provides a mock function with given fields: ctx, token, id, identity -func (_m *Service) UpdateClientIdentity(ctx context.Context, token string, id string, identity string) (clients.Client, error) { +func (_m *Service) UpdateClientIdentity(ctx context.Context, token string, id string, identity string) (clients.Client, errors.Error) { ret := _m.Called(ctx, token, id, identity) if len(ret) == 0 { @@ -368,8 +396,8 @@ func (_m *Service) UpdateClientIdentity(ctx context.Context, token string, id st } var r0 clients.Client - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, string, string, string) (clients.Client, error)); ok { + var r1 errors.Error + if rf, ok := ret.Get(0).(func(context.Context, string, string, string) (clients.Client, errors.Error)); ok { return rf(ctx, token, id, identity) } if rf, ok := ret.Get(0).(func(context.Context, string, string, string) clients.Client); ok { @@ -378,17 +406,19 @@ func (_m *Service) UpdateClientIdentity(ctx context.Context, token string, id st r0 = ret.Get(0).(clients.Client) } - if rf, ok := ret.Get(1).(func(context.Context, string, string, string) error); ok { + if rf, ok := ret.Get(1).(func(context.Context, string, string, string) errors.Error); ok { r1 = rf(ctx, token, id, identity) } else { - r1 = ret.Error(1) + if ret.Get(1) != nil { + r1 = ret.Get(1).(errors.Error) + } } return r0, r1 } // UpdateClientRole provides a mock function with given fields: ctx, token, client -func (_m *Service) UpdateClientRole(ctx context.Context, token string, client clients.Client) (clients.Client, error) { +func (_m *Service) UpdateClientRole(ctx context.Context, token string, client clients.Client) (clients.Client, errors.Error) { ret := _m.Called(ctx, token, client) if len(ret) == 0 { @@ -396,8 +426,8 @@ func (_m *Service) UpdateClientRole(ctx context.Context, token string, client cl } var r0 clients.Client - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, string, clients.Client) (clients.Client, error)); ok { + var r1 errors.Error + if rf, ok := ret.Get(0).(func(context.Context, string, clients.Client) (clients.Client, errors.Error)); ok { return rf(ctx, token, client) } if rf, ok := ret.Get(0).(func(context.Context, string, clients.Client) clients.Client); ok { @@ -406,17 +436,19 @@ func (_m *Service) UpdateClientRole(ctx context.Context, token string, client cl r0 = ret.Get(0).(clients.Client) } - if rf, ok := ret.Get(1).(func(context.Context, string, clients.Client) error); ok { + if rf, ok := ret.Get(1).(func(context.Context, string, clients.Client) errors.Error); ok { r1 = rf(ctx, token, client) } else { - r1 = ret.Error(1) + if ret.Get(1) != nil { + r1 = ret.Get(1).(errors.Error) + } } return r0, r1 } // UpdateClientSecret provides a mock function with given fields: ctx, token, oldSecret, newSecret -func (_m *Service) UpdateClientSecret(ctx context.Context, token string, oldSecret string, newSecret string) (clients.Client, error) { +func (_m *Service) UpdateClientSecret(ctx context.Context, token string, oldSecret string, newSecret string) (clients.Client, errors.Error) { ret := _m.Called(ctx, token, oldSecret, newSecret) if len(ret) == 0 { @@ -424,8 +456,8 @@ func (_m *Service) UpdateClientSecret(ctx context.Context, token string, oldSecr } var r0 clients.Client - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, string, string, string) (clients.Client, error)); ok { + var r1 errors.Error + if rf, ok := ret.Get(0).(func(context.Context, string, string, string) (clients.Client, errors.Error)); ok { return rf(ctx, token, oldSecret, newSecret) } if rf, ok := ret.Get(0).(func(context.Context, string, string, string) clients.Client); ok { @@ -434,17 +466,19 @@ func (_m *Service) UpdateClientSecret(ctx context.Context, token string, oldSecr r0 = ret.Get(0).(clients.Client) } - if rf, ok := ret.Get(1).(func(context.Context, string, string, string) error); ok { + if rf, ok := ret.Get(1).(func(context.Context, string, string, string) errors.Error); ok { r1 = rf(ctx, token, oldSecret, newSecret) } else { - r1 = ret.Error(1) + if ret.Get(1) != nil { + r1 = ret.Get(1).(errors.Error) + } } return r0, r1 } // UpdateClientTags provides a mock function with given fields: ctx, token, client -func (_m *Service) UpdateClientTags(ctx context.Context, token string, client clients.Client) (clients.Client, error) { +func (_m *Service) UpdateClientTags(ctx context.Context, token string, client clients.Client) (clients.Client, errors.Error) { ret := _m.Called(ctx, token, client) if len(ret) == 0 { @@ -452,8 +486,8 @@ func (_m *Service) UpdateClientTags(ctx context.Context, token string, client cl } var r0 clients.Client - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, string, clients.Client) (clients.Client, error)); ok { + var r1 errors.Error + if rf, ok := ret.Get(0).(func(context.Context, string, clients.Client) (clients.Client, errors.Error)); ok { return rf(ctx, token, client) } if rf, ok := ret.Get(0).(func(context.Context, string, clients.Client) clients.Client); ok { @@ -462,17 +496,19 @@ func (_m *Service) UpdateClientTags(ctx context.Context, token string, client cl r0 = ret.Get(0).(clients.Client) } - if rf, ok := ret.Get(1).(func(context.Context, string, clients.Client) error); ok { + if rf, ok := ret.Get(1).(func(context.Context, string, clients.Client) errors.Error); ok { r1 = rf(ctx, token, client) } else { - r1 = ret.Error(1) + if ret.Get(1) != nil { + r1 = ret.Get(1).(errors.Error) + } } return r0, r1 } // ViewClient provides a mock function with given fields: ctx, token, id -func (_m *Service) ViewClient(ctx context.Context, token string, id string) (clients.Client, error) { +func (_m *Service) ViewClient(ctx context.Context, token string, id string) (clients.Client, errors.Error) { ret := _m.Called(ctx, token, id) if len(ret) == 0 { @@ -480,8 +516,8 @@ func (_m *Service) ViewClient(ctx context.Context, token string, id string) (cli } var r0 clients.Client - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, string, string) (clients.Client, error)); ok { + var r1 errors.Error + if rf, ok := ret.Get(0).(func(context.Context, string, string) (clients.Client, errors.Error)); ok { return rf(ctx, token, id) } if rf, ok := ret.Get(0).(func(context.Context, string, string) clients.Client); ok { @@ -490,17 +526,19 @@ func (_m *Service) ViewClient(ctx context.Context, token string, id string) (cli r0 = ret.Get(0).(clients.Client) } - if rf, ok := ret.Get(1).(func(context.Context, string, string) error); ok { + if rf, ok := ret.Get(1).(func(context.Context, string, string) errors.Error); ok { r1 = rf(ctx, token, id) } else { - r1 = ret.Error(1) + if ret.Get(1) != nil { + r1 = ret.Get(1).(errors.Error) + } } return r0, r1 } // ViewProfile provides a mock function with given fields: ctx, token -func (_m *Service) ViewProfile(ctx context.Context, token string) (clients.Client, error) { +func (_m *Service) ViewProfile(ctx context.Context, token string) (clients.Client, errors.Error) { ret := _m.Called(ctx, token) if len(ret) == 0 { @@ -508,8 +546,8 @@ func (_m *Service) ViewProfile(ctx context.Context, token string) (clients.Clien } var r0 clients.Client - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, string) (clients.Client, error)); ok { + var r1 errors.Error + if rf, ok := ret.Get(0).(func(context.Context, string) (clients.Client, errors.Error)); ok { return rf(ctx, token) } if rf, ok := ret.Get(0).(func(context.Context, string) clients.Client); ok { @@ -518,10 +556,12 @@ func (_m *Service) ViewProfile(ctx context.Context, token string) (clients.Clien r0 = ret.Get(0).(clients.Client) } - if rf, ok := ret.Get(1).(func(context.Context, string) error); ok { + if rf, ok := ret.Get(1).(func(context.Context, string) errors.Error); ok { r1 = rf(ctx, token) } else { - r1 = ret.Error(1) + if ret.Get(1) != nil { + r1 = ret.Get(1).(errors.Error) + } } return r0, r1 diff --git a/users/postgres/clients.go b/users/postgres/clients.go index 8ce544eb0df..8f1121aecb4 100644 --- a/users/postgres/clients.go +++ b/users/postgres/clients.go @@ -28,13 +28,13 @@ type Repository interface { // Save persists the client account. A non-nil error is returned to indicate // operation failure. - Save(ctx context.Context, client mgclients.Client) (mgclients.Client, error) + Save(ctx context.Context, client mgclients.Client) (mgclients.Client, errors.Error) - RetrieveByID(ctx context.Context, id string) (mgclients.Client, error) + RetrieveByID(ctx context.Context, id string) (mgclients.Client, errors.Error) - UpdateRole(ctx context.Context, client mgclients.Client) (mgclients.Client, error) + UpdateRole(ctx context.Context, client mgclients.Client) (mgclients.Client, errors.Error) - CheckSuperAdmin(ctx context.Context, adminID string) error + CheckSuperAdmin(ctx context.Context, adminID string) errors.Error } // NewRepository instantiates a PostgreSQL @@ -45,7 +45,7 @@ func NewRepository(db postgres.Database) Repository { } } -func (repo clientRepo) Save(ctx context.Context, c mgclients.Client) (mgclients.Client, error) { +func (repo clientRepo) Save(ctx context.Context, c mgclients.Client) (mgclients.Client, errors.Error) { q := `INSERT INTO clients (id, name, tags, identity, secret, metadata, created_at, status, role) VALUES (:id, :name, :tags, :identity, :secret, :metadata, :created_at, :status, :role) RETURNING id, name, tags, identity, metadata, status, created_at` @@ -54,9 +54,9 @@ func (repo clientRepo) Save(ctx context.Context, c mgclients.Client) (mgclients. return mgclients.Client{}, errors.Wrap(repoerr.ErrCreateEntity, err) } - row, err := repo.DB.NamedQueryContext(ctx, q, dbc) - if err != nil { - return mgclients.Client{}, postgres.HandleError(repoerr.ErrCreateEntity, err) + row, Err := repo.DB.NamedQueryContext(ctx, q, dbc) + if Err != nil { + return mgclients.Client{}, errors.Cast(postgres.HandleError(repoerr.ErrCreateEntity, Err)) } defer row.Close() @@ -74,17 +74,17 @@ func (repo clientRepo) Save(ctx context.Context, c mgclients.Client) (mgclients. return client, nil } -func (repo clientRepo) CheckSuperAdmin(ctx context.Context, adminID string) error { +func (repo clientRepo) CheckSuperAdmin(ctx context.Context, adminID string) errors.Error { q := "SELECT 1 FROM clients WHERE id = $1 AND role = $2" rows, err := repo.DB.QueryContext(ctx, q, adminID, mgclients.AdminRole) if err != nil { - return postgres.HandleError(repoerr.ErrViewEntity, err) + return errors.Cast(postgres.HandleError(repoerr.ErrViewEntity, err)) } defer rows.Close() if rows.Next() { if err := rows.Err(); err != nil { - return postgres.HandleError(repoerr.ErrViewEntity, err) + return errors.Cast(postgres.HandleError(repoerr.ErrViewEntity, err)) } return nil } @@ -92,7 +92,7 @@ func (repo clientRepo) CheckSuperAdmin(ctx context.Context, adminID string) erro return repoerr.ErrNotFound } -func (repo clientRepo) RetrieveByID(ctx context.Context, id string) (mgclients.Client, error) { +func (repo clientRepo) RetrieveByID(ctx context.Context, id string) (mgclients.Client, errors.Error) { q := `SELECT id, name, tags, identity, secret, metadata, created_at, updated_at, updated_by, status, role FROM clients WHERE id = :id` @@ -102,14 +102,14 @@ func (repo clientRepo) RetrieveByID(ctx context.Context, id string) (mgclients.C rows, err := repo.DB.NamedQueryContext(ctx, q, dbc) if err != nil { - return mgclients.Client{}, postgres.HandleError(repoerr.ErrViewEntity, err) + return mgclients.Client{}, errors.Cast(postgres.HandleError(repoerr.ErrViewEntity, err)) } defer rows.Close() dbc = pgclients.DBClient{} if rows.Next() { if err = rows.StructScan(&dbc); err != nil { - return mgclients.Client{}, postgres.HandleError(repoerr.ErrViewEntity, err) + return mgclients.Client{}, errors.Cast(postgres.HandleError(repoerr.ErrViewEntity, err)) } client, err := pgclients.ToClient(dbc) @@ -123,7 +123,7 @@ func (repo clientRepo) RetrieveByID(ctx context.Context, id string) (mgclients.C return mgclients.Client{}, repoerr.ErrNotFound } -func (repo clientRepo) RetrieveAll(ctx context.Context, pm mgclients.Page) (mgclients.ClientsPage, error) { +func (repo clientRepo) RetrieveAll(ctx context.Context, pm mgclients.Page) (mgclients.ClientsPage, errors.Error) { query, err := pgclients.PageQuery(pm) if err != nil { return mgclients.ClientsPage{}, errors.Wrap(repoerr.ErrViewEntity, err) @@ -136,9 +136,9 @@ func (repo clientRepo) RetrieveAll(ctx context.Context, pm mgclients.Page) (mgcl if err != nil { return mgclients.ClientsPage{}, errors.Wrap(repoerr.ErrFailedToRetrieveAllGroups, err) } - rows, err := repo.DB.NamedQueryContext(ctx, q, dbPage) - if err != nil { - return mgclients.ClientsPage{}, errors.Wrap(repoerr.ErrFailedToRetrieveAllGroups, err) + rows, Err := repo.DB.NamedQueryContext(ctx, q, dbPage) + if Err != nil { + return mgclients.ClientsPage{}, errors.Wrap(repoerr.ErrFailedToRetrieveAllGroups, Err) } defer rows.Close() @@ -151,16 +151,16 @@ func (repo clientRepo) RetrieveAll(ctx context.Context, pm mgclients.Page) (mgcl c, err := pgclients.ToClient(dbc) if err != nil { - return mgclients.ClientsPage{}, err + return mgclients.ClientsPage{}, errors.Cast(err) } items = append(items, c) } cq := fmt.Sprintf(`SELECT COUNT(*) FROM clients c %s;`, query) - total, err := postgres.Total(ctx, repo.DB, cq, dbPage) - if err != nil { - return mgclients.ClientsPage{}, errors.Wrap(repoerr.ErrViewEntity, err) + total, Err := postgres.Total(ctx, repo.DB, cq, dbPage) + if Err != nil { + return mgclients.ClientsPage{}, errors.Wrap(repoerr.ErrViewEntity, Err) } page := mgclients.ClientsPage{ @@ -175,7 +175,7 @@ func (repo clientRepo) RetrieveAll(ctx context.Context, pm mgclients.Page) (mgcl return page, nil } -func (repo clientRepo) UpdateRole(ctx context.Context, client mgclients.Client) (mgclients.Client, error) { +func (repo clientRepo) UpdateRole(ctx context.Context, client mgclients.Client) (mgclients.Client, errors.Error) { query := `UPDATE clients SET role = :role, updated_at = :updated_at, updated_by = :updated_by WHERE id = :id AND status = :status RETURNING id, name, tags, identity, metadata, status, role, created_at, updated_at, updated_by` @@ -185,9 +185,9 @@ func (repo clientRepo) UpdateRole(ctx context.Context, client mgclients.Client) return mgclients.Client{}, errors.Wrap(repoerr.ErrUpdateEntity, err) } - row, err := repo.DB.NamedQueryContext(ctx, query, dbc) - if err != nil { - return mgclients.Client{}, postgres.HandleError(err, repoerr.ErrUpdateEntity) + row, Err := repo.DB.NamedQueryContext(ctx, query, dbc) + if Err != nil { + return mgclients.Client{}, errors.Cast(postgres.HandleError(Err, repoerr.ErrUpdateEntity)) } defer row.Close() @@ -196,8 +196,9 @@ func (repo clientRepo) UpdateRole(ctx context.Context, client mgclients.Client) } dbc = pgclients.DBClient{} if err := row.StructScan(&dbc); err != nil { - return mgclients.Client{}, err + return mgclients.Client{}, errors.Cast(err) } - return pgclients.ToClient(dbc) + cl, err := pgclients.ToClient(dbc) + return cl, errors.Cast(err) } diff --git a/users/service.go b/users/service.go index 586aa49f2c7..dcea9004f00 100644 --- a/users/service.go +++ b/users/service.go @@ -45,7 +45,7 @@ func NewService(crepo postgres.Repository, authClient magistrala.AuthServiceClie } } -func (svc service) RegisterClient(ctx context.Context, token string, cli mgclients.Client) (rc mgclients.Client, err error) { +func (svc service) RegisterClient(ctx context.Context, token string, cli mgclients.Client) (rc mgclients.Client, err errors.Error) { if !svc.selfRegister { userID, err := svc.Identify(ctx, token) if err != nil { @@ -56,9 +56,9 @@ func (svc service) RegisterClient(ctx context.Context, token string, cli mgclien } } - clientID, err := svc.idProvider.ID() - if err != nil { - return mgclients.Client{}, err + clientID, Err := svc.idProvider.ID() + if Err != nil { + return mgclients.Client{}, errors.Cast(Err) } if cli.Credentials.Secret != "" { @@ -95,7 +95,7 @@ func (svc service) RegisterClient(ctx context.Context, token string, cli mgclien return client, nil } -func (svc service) IssueToken(ctx context.Context, identity, secret, domainID string) (*magistrala.Token, error) { +func (svc service) IssueToken(ctx context.Context, identity, secret, domainID string) (*magistrala.Token, errors.Error) { dbUser, err := svc.clients.RetrieveByIdentity(ctx, identity) if err != nil { return &magistrala.Token{}, errors.Wrap(svcerr.ErrAuthentication, err) @@ -109,15 +109,15 @@ func (svc service) IssueToken(ctx context.Context, identity, secret, domainID st d = domainID } - token, err := svc.auth.Issue(ctx, &magistrala.IssueReq{UserId: dbUser.ID, DomainId: &d, Type: uint32(auth.AccessKey)}) - if err != nil { - return &magistrala.Token{}, errors.Wrap(errIssueToken, err) + token, Err := svc.auth.Issue(ctx, &magistrala.IssueReq{UserId: dbUser.ID, DomainId: &d, Type: uint32(auth.AccessKey)}) + if Err != nil { + return &magistrala.Token{}, errors.Wrap(errIssueToken, Err) } - return token, err + return token, errors.Cast(err) } -func (svc service) RefreshToken(ctx context.Context, refreshToken, domainID string) (*magistrala.Token, error) { +func (svc service) RefreshToken(ctx context.Context, refreshToken, domainID string) (*magistrala.Token, errors.Error) { var d string if domainID != "" { d = domainID @@ -136,10 +136,11 @@ func (svc service) RefreshToken(ctx context.Context, refreshToken, domainID stri return &magistrala.Token{}, errors.Wrap(svcerr.ErrAuthentication, errLoginDisableUser) } - return svc.auth.Refresh(ctx, &magistrala.RefreshReq{RefreshToken: refreshToken, DomainId: &d}) + tk, Err := svc.auth.Refresh(ctx, &magistrala.RefreshReq{RefreshToken: refreshToken, DomainId: &d}) + return tk, errors.Cast(Err) } -func (svc service) ViewClient(ctx context.Context, token, id string) (mgclients.Client, error) { +func (svc service) ViewClient(ctx context.Context, token, id string) (mgclients.Client, errors.Error) { tokenUserID, err := svc.Identify(ctx, token) if err != nil { return mgclients.Client{}, err @@ -161,7 +162,7 @@ func (svc service) ViewClient(ctx context.Context, token, id string) (mgclients. return client, nil } -func (svc service) ViewProfile(ctx context.Context, token string) (mgclients.Client, error) { +func (svc service) ViewProfile(ctx context.Context, token string) (mgclients.Client, errors.Error) { id, err := svc.Identify(ctx, token) if err != nil { return mgclients.Client{}, err @@ -175,7 +176,7 @@ func (svc service) ViewProfile(ctx context.Context, token string) (mgclients.Cli return client, nil } -func (svc service) ListClients(ctx context.Context, token string, pm mgclients.Page) (mgclients.ClientsPage, error) { +func (svc service) ListClients(ctx context.Context, token string, pm mgclients.Page) (mgclients.ClientsPage, errors.Error) { userID, err := svc.Identify(ctx, token) if err != nil { return mgclients.ClientsPage{}, err @@ -208,7 +209,7 @@ func (svc service) ListClients(ctx context.Context, token string, pm mgclients.P return pg, nil } -func (svc service) UpdateClient(ctx context.Context, token string, cli mgclients.Client) (mgclients.Client, error) { +func (svc service) UpdateClient(ctx context.Context, token string, cli mgclients.Client) (mgclients.Client, errors.Error) { tokenUserID, err := svc.Identify(ctx, token) if err != nil { return mgclients.Client{}, err @@ -235,7 +236,7 @@ func (svc service) UpdateClient(ctx context.Context, token string, cli mgclients return client, nil } -func (svc service) UpdateClientTags(ctx context.Context, token string, cli mgclients.Client) (mgclients.Client, error) { +func (svc service) UpdateClientTags(ctx context.Context, token string, cli mgclients.Client) (mgclients.Client, errors.Error) { tokenUserID, err := svc.Identify(ctx, token) if err != nil { return mgclients.Client{}, err @@ -261,7 +262,7 @@ func (svc service) UpdateClientTags(ctx context.Context, token string, cli mgcli return client, nil } -func (svc service) UpdateClientIdentity(ctx context.Context, token, clientID, identity string) (mgclients.Client, error) { +func (svc service) UpdateClientIdentity(ctx context.Context, token, clientID, identity string) (mgclients.Client, errors.Error) { tokenUserID, err := svc.Identify(ctx, token) if err != nil { return mgclients.Client{}, err @@ -288,7 +289,7 @@ func (svc service) UpdateClientIdentity(ctx context.Context, token, clientID, id return cli, nil } -func (svc service) GenerateResetToken(ctx context.Context, email, host string) error { +func (svc service) GenerateResetToken(ctx context.Context, email, host string) errors.Error { client, err := svc.clients.RetrieveByIdentity(ctx, email) if err != nil { return errors.Wrap(svcerr.ErrViewEntity, err) @@ -297,15 +298,15 @@ func (svc service) GenerateResetToken(ctx context.Context, email, host string) e UserId: client.ID, Type: uint32(auth.RecoveryKey), } - token, err := svc.auth.Issue(ctx, issueReq) - if err != nil { - return errors.Wrap(errRecoveryToken, err) + token, Err := svc.auth.Issue(ctx, issueReq) + if Err != nil { + return errors.Wrap(errRecoveryToken, Err) } return svc.SendPasswordReset(ctx, host, email, client.Name, token.AccessToken) } -func (svc service) ResetSecret(ctx context.Context, resetToken, secret string) error { +func (svc service) ResetSecret(ctx context.Context, resetToken, secret string) errors.Error { id, err := svc.Identify(ctx, resetToken) if err != nil { return err @@ -334,7 +335,7 @@ func (svc service) ResetSecret(ctx context.Context, resetToken, secret string) e return nil } -func (svc service) UpdateClientSecret(ctx context.Context, token, oldSecret, newSecret string) (mgclients.Client, error) { +func (svc service) UpdateClientSecret(ctx context.Context, token, oldSecret, newSecret string) (mgclients.Client, errors.Error) { id, err := svc.Identify(ctx, token) if err != nil { return mgclients.Client{}, err @@ -362,12 +363,12 @@ func (svc service) UpdateClientSecret(ctx context.Context, token, oldSecret, new return dbClient, nil } -func (svc service) SendPasswordReset(_ context.Context, host, email, user, token string) error { +func (svc service) SendPasswordReset(_ context.Context, host, email, user, token string) errors.Error { to := []string{email} return svc.email.SendPasswordReset(to, host, user, token) } -func (svc service) UpdateClientRole(ctx context.Context, token string, cli mgclients.Client) (mgclients.Client, error) { +func (svc service) UpdateClientRole(ctx context.Context, token string, cli mgclients.Client) (mgclients.Client, errors.Error) { tokenUserID, err := svc.Identify(ctx, token) if err != nil { return mgclients.Client{}, err @@ -397,7 +398,7 @@ func (svc service) UpdateClientRole(ctx context.Context, token string, cli mgcli return client, nil } -func (svc service) EnableClient(ctx context.Context, token, id string) (mgclients.Client, error) { +func (svc service) EnableClient(ctx context.Context, token, id string) (mgclients.Client, errors.Error) { client := mgclients.Client{ ID: id, UpdatedAt: time.Now(), @@ -411,7 +412,7 @@ func (svc service) EnableClient(ctx context.Context, token, id string) (mgclient return client, nil } -func (svc service) DisableClient(ctx context.Context, token, id string) (mgclients.Client, error) { +func (svc service) DisableClient(ctx context.Context, token, id string) (mgclients.Client, errors.Error) { client := mgclients.Client{ ID: id, UpdatedAt: time.Now(), @@ -425,7 +426,7 @@ func (svc service) DisableClient(ctx context.Context, token, id string) (mgclien return client, nil } -func (svc service) changeClientStatus(ctx context.Context, token string, client mgclients.Client) (mgclients.Client, error) { +func (svc service) changeClientStatus(ctx context.Context, token string, client mgclients.Client) (mgclients.Client, errors.Error) { tokenUserID, err := svc.Identify(ctx, token) if err != nil { return mgclients.Client{}, err @@ -449,7 +450,7 @@ func (svc service) changeClientStatus(ctx context.Context, token string, client return client, nil } -func (svc service) ListMembers(ctx context.Context, token, objectKind, objectID string, pm mgclients.Page) (mgclients.MembersPage, error) { +func (svc service) ListMembers(ctx context.Context, token, objectKind, objectID string, pm mgclients.Page) (mgclients.MembersPage, errors.Error) { res, err := svc.identify(ctx, token) if err != nil { return mgclients.MembersPage{}, err @@ -473,14 +474,14 @@ func (svc service) ListMembers(ctx context.Context, token, objectKind, objectID if _, err := svc.authorize(ctx, auth.UserType, auth.TokenKind, token, authzPerm, objectType, objectID); err != nil { return mgclients.MembersPage{}, errors.Wrap(svcerr.ErrAuthorization, err) } - duids, err := svc.auth.ListAllSubjects(ctx, &magistrala.ListSubjectsReq{ + duids, Err := svc.auth.ListAllSubjects(ctx, &magistrala.ListSubjectsReq{ SubjectType: auth.UserType, Permission: pm.Permission, Object: objectID, ObjectType: objectType, }) - if err != nil { - return mgclients.MembersPage{}, errors.Wrap(svcerr.ErrNotFound, err) + if Err != nil { + return mgclients.MembersPage{}, errors.Wrap(svcerr.ErrNotFound, Err) } if len(duids.Policies) == 0 { return mgclients.MembersPage{ @@ -517,7 +518,7 @@ func (svc service) ListMembers(ctx context.Context, token, objectKind, objectID } if err := g.Wait(); err != nil { - return mgclients.MembersPage{}, err + return mgclients.MembersPage{}, errors.Cast(err) } } @@ -527,7 +528,7 @@ func (svc service) ListMembers(ctx context.Context, token, objectKind, objectID }, nil } -func (svc service) retrieveObjectUsersPermissions(ctx context.Context, domainID, objectType, objectID string, client *mgclients.Client) error { +func (svc service) retrieveObjectUsersPermissions(ctx context.Context, domainID, objectType, objectID string, client *mgclients.Client) errors.Error { userID := auth.EncodeDomainUserID(domainID, client.ID) permissions, err := svc.listObjectUserPermission(ctx, userID, objectType, objectID) if err != nil { @@ -537,7 +538,7 @@ func (svc service) retrieveObjectUsersPermissions(ctx context.Context, domainID, return nil } -func (svc service) listObjectUserPermission(ctx context.Context, userID, objectType, objectID string) ([]string, error) { +func (svc service) listObjectUserPermission(ctx context.Context, userID, objectType, objectID string) ([]string, errors.Error) { lp, err := svc.auth.ListPermissions(ctx, &magistrala.ListPermissionsReq{ SubjectType: auth.UserType, Subject: userID, @@ -550,7 +551,7 @@ func (svc service) listObjectUserPermission(ctx context.Context, userID, objectT return lp.GetPermissions(), nil } -func (svc *service) checkSuperAdmin(ctx context.Context, adminID string) error { +func (svc *service) checkSuperAdmin(ctx context.Context, adminID string) errors.Error { if _, err := svc.authorize(ctx, auth.UserType, auth.UsersKind, adminID, auth.AdminPermission, auth.PlatformType, auth.MagistralaObject); err != nil { if err := svc.clients.CheckSuperAdmin(ctx, adminID); err != nil { return errors.Wrap(svcerr.ErrAuthorization, err) @@ -561,7 +562,7 @@ func (svc *service) checkSuperAdmin(ctx context.Context, adminID string) error { return nil } -func (svc service) identify(ctx context.Context, token string) (*magistrala.IdentityRes, error) { +func (svc service) identify(ctx context.Context, token string) (*magistrala.IdentityRes, errors.Error) { res, err := svc.auth.Identify(ctx, &magistrala.IdentityReq{Token: token}) if err != nil { return &magistrala.IdentityRes{}, errors.Wrap(svcerr.ErrAuthentication, err) @@ -569,7 +570,7 @@ func (svc service) identify(ctx context.Context, token string) (*magistrala.Iden return res, nil } -func (svc *service) authorize(ctx context.Context, subjType, subjKind, subj, perm, objType, obj string) (string, error) { +func (svc *service) authorize(ctx context.Context, subjType, subjKind, subj, perm, objType, obj string) (string, errors.Error) { req := &magistrala.AuthorizeReq{ SubjectType: subjType, SubjectKind: subjKind, @@ -589,7 +590,7 @@ func (svc *service) authorize(ctx context.Context, subjType, subjKind, subj, per return res.GetId(), nil } -func (svc service) OAuthCallback(ctx context.Context, client mgclients.Client) (*magistrala.Token, error) { +func (svc service) OAuthCallback(ctx context.Context, client mgclients.Client) (*magistrala.Token, errors.Error) { rclient, err := svc.clients.RetrieveByIdentity(ctx, client.Credentials.Identity) if err != nil { switch errors.Contains(err, repoerr.ErrNotFound) { @@ -614,10 +615,11 @@ func (svc service) OAuthCallback(ctx context.Context, client mgclients.Client) ( Type: uint32(auth.AccessKey), } - return svc.auth.Issue(ctx, claims) + tk, Err := svc.auth.Issue(ctx, claims) + return tk, errors.Cast(Err) } -func (svc service) Identify(ctx context.Context, token string) (string, error) { +func (svc service) Identify(ctx context.Context, token string) (string, errors.Error) { user, err := svc.auth.Identify(ctx, &magistrala.IdentityReq{Token: token}) if err != nil { return "", errors.Wrap(svcerr.ErrAuthentication, err) @@ -625,7 +627,7 @@ func (svc service) Identify(ctx context.Context, token string) (string, error) { return user.GetUserId(), nil } -func (svc service) addClientPolicy(ctx context.Context, userID string, role mgclients.Role) error { +func (svc service) addClientPolicy(ctx context.Context, userID string, role mgclients.Role) errors.Error { var policies magistrala.AddPoliciesReq policies.AddPoliciesReq = append(policies.AddPoliciesReq, &magistrala.AddPolicyReq{ @@ -655,7 +657,7 @@ func (svc service) addClientPolicy(ctx context.Context, userID string, role mgcl return nil } -func (svc service) addClientPolicyRollback(ctx context.Context, userID string, role mgclients.Role) error { +func (svc service) addClientPolicyRollback(ctx context.Context, userID string, role mgclients.Role) errors.Error { var policies magistrala.DeletePoliciesReq policies.DeletePoliciesReq = append(policies.DeletePoliciesReq, &magistrala.DeletePolicyReq{ @@ -685,7 +687,7 @@ func (svc service) addClientPolicyRollback(ctx context.Context, userID string, r return nil } -func (svc service) updateClientPolicy(ctx context.Context, userID string, role mgclients.Role) error { +func (svc service) updateClientPolicy(ctx context.Context, userID string, role mgclients.Role) errors.Error { switch role { case mgclients.AdminRole: resp, err := svc.auth.AddPolicy(ctx, &magistrala.AddPolicyReq{ diff --git a/users/tracing/tracing.go b/users/tracing/tracing.go index d9777fc98aa..9dd15eec784 100644 --- a/users/tracing/tracing.go +++ b/users/tracing/tracing.go @@ -8,6 +8,7 @@ import ( "github.com/absmach/magistrala" mgclients "github.com/absmach/magistrala/pkg/clients" + "github.com/absmach/magistrala/pkg/errors" "github.com/absmach/magistrala/users" "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/trace" @@ -26,7 +27,7 @@ func New(svc users.Service, tracer trace.Tracer) users.Service { } // RegisterClient traces the "RegisterClient" operation of the wrapped clients.Service. -func (tm *tracingMiddleware) RegisterClient(ctx context.Context, token string, client mgclients.Client) (mgclients.Client, error) { +func (tm *tracingMiddleware) RegisterClient(ctx context.Context, token string, client mgclients.Client) (mgclients.Client, errors.Error) { ctx, span := tm.tracer.Start(ctx, "svc_register_client", trace.WithAttributes(attribute.String("identity", client.Credentials.Identity))) defer span.End() @@ -34,7 +35,7 @@ func (tm *tracingMiddleware) RegisterClient(ctx context.Context, token string, c } // IssueToken traces the "IssueToken" operation of the wrapped clients.Service. -func (tm *tracingMiddleware) IssueToken(ctx context.Context, identity, secret, domainID string) (*magistrala.Token, error) { +func (tm *tracingMiddleware) IssueToken(ctx context.Context, identity, secret, domainID string) (*magistrala.Token, errors.Error) { ctx, span := tm.tracer.Start(ctx, "svc_issue_token", trace.WithAttributes(attribute.String("identity", identity))) defer span.End() @@ -42,7 +43,7 @@ func (tm *tracingMiddleware) IssueToken(ctx context.Context, identity, secret, d } // RefreshToken traces the "RefreshToken" operation of the wrapped clients.Service. -func (tm *tracingMiddleware) RefreshToken(ctx context.Context, accessToken, domainID string) (*magistrala.Token, error) { +func (tm *tracingMiddleware) RefreshToken(ctx context.Context, accessToken, domainID string) (*magistrala.Token, errors.Error) { ctx, span := tm.tracer.Start(ctx, "svc_refresh_token", trace.WithAttributes(attribute.String("access_token", accessToken))) defer span.End() @@ -50,7 +51,7 @@ func (tm *tracingMiddleware) RefreshToken(ctx context.Context, accessToken, doma } // ViewClient traces the "ViewClient" operation of the wrapped clients.Service. -func (tm *tracingMiddleware) ViewClient(ctx context.Context, token, id string) (mgclients.Client, error) { +func (tm *tracingMiddleware) ViewClient(ctx context.Context, token, id string) (mgclients.Client, errors.Error) { ctx, span := tm.tracer.Start(ctx, "svc_view_client", trace.WithAttributes(attribute.String("id", id))) defer span.End() @@ -58,7 +59,7 @@ func (tm *tracingMiddleware) ViewClient(ctx context.Context, token, id string) ( } // ListClients traces the "ListClients" operation of the wrapped clients.Service. -func (tm *tracingMiddleware) ListClients(ctx context.Context, token string, pm mgclients.Page) (mgclients.ClientsPage, error) { +func (tm *tracingMiddleware) ListClients(ctx context.Context, token string, pm mgclients.Page) (mgclients.ClientsPage, errors.Error) { ctx, span := tm.tracer.Start(ctx, "svc_list_clients", trace.WithAttributes( attribute.Int64("offset", int64(pm.Offset)), attribute.Int64("limit", int64(pm.Limit)), @@ -72,7 +73,7 @@ func (tm *tracingMiddleware) ListClients(ctx context.Context, token string, pm m } // UpdateClient traces the "UpdateClient" operation of the wrapped clients.Service. -func (tm *tracingMiddleware) UpdateClient(ctx context.Context, token string, cli mgclients.Client) (mgclients.Client, error) { +func (tm *tracingMiddleware) UpdateClient(ctx context.Context, token string, cli mgclients.Client) (mgclients.Client, errors.Error) { ctx, span := tm.tracer.Start(ctx, "svc_update_client_name_and_metadata", trace.WithAttributes( attribute.String("id", cli.ID), attribute.String("name", cli.Name), @@ -83,7 +84,7 @@ func (tm *tracingMiddleware) UpdateClient(ctx context.Context, token string, cli } // UpdateClientTags traces the "UpdateClientTags" operation of the wrapped clients.Service. -func (tm *tracingMiddleware) UpdateClientTags(ctx context.Context, token string, cli mgclients.Client) (mgclients.Client, error) { +func (tm *tracingMiddleware) UpdateClientTags(ctx context.Context, token string, cli mgclients.Client) (mgclients.Client, errors.Error) { ctx, span := tm.tracer.Start(ctx, "svc_update_client_tags", trace.WithAttributes( attribute.String("id", cli.ID), attribute.StringSlice("tags", cli.Tags), @@ -94,7 +95,7 @@ func (tm *tracingMiddleware) UpdateClientTags(ctx context.Context, token string, } // UpdateClientIdentity traces the "UpdateClientIdentity" operation of the wrapped clients.Service. -func (tm *tracingMiddleware) UpdateClientIdentity(ctx context.Context, token, id, identity string) (mgclients.Client, error) { +func (tm *tracingMiddleware) UpdateClientIdentity(ctx context.Context, token, id, identity string) (mgclients.Client, errors.Error) { ctx, span := tm.tracer.Start(ctx, "svc_update_client_identity", trace.WithAttributes( attribute.String("id", id), attribute.String("identity", identity), @@ -105,7 +106,7 @@ func (tm *tracingMiddleware) UpdateClientIdentity(ctx context.Context, token, id } // UpdateClientSecret traces the "UpdateClientSecret" operation of the wrapped clients.Service. -func (tm *tracingMiddleware) UpdateClientSecret(ctx context.Context, token, oldSecret, newSecret string) (mgclients.Client, error) { +func (tm *tracingMiddleware) UpdateClientSecret(ctx context.Context, token, oldSecret, newSecret string) (mgclients.Client, errors.Error) { ctx, span := tm.tracer.Start(ctx, "svc_update_client_secret") defer span.End() @@ -113,7 +114,7 @@ func (tm *tracingMiddleware) UpdateClientSecret(ctx context.Context, token, oldS } // GenerateResetToken traces the "GenerateResetToken" operation of the wrapped clients.Service. -func (tm *tracingMiddleware) GenerateResetToken(ctx context.Context, email, host string) error { +func (tm *tracingMiddleware) GenerateResetToken(ctx context.Context, email, host string) errors.Error { ctx, span := tm.tracer.Start(ctx, "svc_generate_reset_token", trace.WithAttributes( attribute.String("email", email), attribute.String("host", host), @@ -124,7 +125,7 @@ func (tm *tracingMiddleware) GenerateResetToken(ctx context.Context, email, host } // ResetSecret traces the "ResetSecret" operation of the wrapped clients.Service. -func (tm *tracingMiddleware) ResetSecret(ctx context.Context, token, secret string) error { +func (tm *tracingMiddleware) ResetSecret(ctx context.Context, token, secret string) errors.Error { ctx, span := tm.tracer.Start(ctx, "svc_reset_secret") defer span.End() @@ -132,7 +133,7 @@ func (tm *tracingMiddleware) ResetSecret(ctx context.Context, token, secret stri } // SendPasswordReset traces the "SendPasswordReset" operation of the wrapped clients.Service. -func (tm *tracingMiddleware) SendPasswordReset(ctx context.Context, host, email, user, token string) error { +func (tm *tracingMiddleware) SendPasswordReset(ctx context.Context, host, email, user, token string) errors.Error { ctx, span := tm.tracer.Start(ctx, "svc_send_password_reset", trace.WithAttributes( attribute.String("email", email), attribute.String("user", user), @@ -143,7 +144,7 @@ func (tm *tracingMiddleware) SendPasswordReset(ctx context.Context, host, email, } // ViewProfile traces the "ViewProfile" operation of the wrapped clients.Service. -func (tm *tracingMiddleware) ViewProfile(ctx context.Context, token string) (mgclients.Client, error) { +func (tm *tracingMiddleware) ViewProfile(ctx context.Context, token string) (mgclients.Client, errors.Error) { ctx, span := tm.tracer.Start(ctx, "svc_view_profile") defer span.End() @@ -151,7 +152,7 @@ func (tm *tracingMiddleware) ViewProfile(ctx context.Context, token string) (mgc } // UpdateClientRole traces the "UpdateClientRole" operation of the wrapped clients.Service. -func (tm *tracingMiddleware) UpdateClientRole(ctx context.Context, token string, cli mgclients.Client) (mgclients.Client, error) { +func (tm *tracingMiddleware) UpdateClientRole(ctx context.Context, token string, cli mgclients.Client) (mgclients.Client, errors.Error) { ctx, span := tm.tracer.Start(ctx, "svc_update_client_role", trace.WithAttributes( attribute.String("id", cli.ID), attribute.StringSlice("tags", cli.Tags), @@ -162,7 +163,7 @@ func (tm *tracingMiddleware) UpdateClientRole(ctx context.Context, token string, } // EnableClient traces the "EnableClient" operation of the wrapped clients.Service. -func (tm *tracingMiddleware) EnableClient(ctx context.Context, token, id string) (mgclients.Client, error) { +func (tm *tracingMiddleware) EnableClient(ctx context.Context, token, id string) (mgclients.Client, errors.Error) { ctx, span := tm.tracer.Start(ctx, "svc_enable_client", trace.WithAttributes(attribute.String("id", id))) defer span.End() @@ -170,7 +171,7 @@ func (tm *tracingMiddleware) EnableClient(ctx context.Context, token, id string) } // DisableClient traces the "DisableClient" operation of the wrapped clients.Service. -func (tm *tracingMiddleware) DisableClient(ctx context.Context, token, id string) (mgclients.Client, error) { +func (tm *tracingMiddleware) DisableClient(ctx context.Context, token, id string) (mgclients.Client, errors.Error) { ctx, span := tm.tracer.Start(ctx, "svc_disable_client", trace.WithAttributes(attribute.String("id", id))) defer span.End() @@ -178,7 +179,7 @@ func (tm *tracingMiddleware) DisableClient(ctx context.Context, token, id string } // ListMembers traces the "ListMembers" operation of the wrapped clients.Service. -func (tm *tracingMiddleware) ListMembers(ctx context.Context, token, objectKind, objectID string, pm mgclients.Page) (mgclients.MembersPage, error) { +func (tm *tracingMiddleware) ListMembers(ctx context.Context, token, objectKind, objectID string, pm mgclients.Page) (mgclients.MembersPage, errors.Error) { ctx, span := tm.tracer.Start(ctx, "svc_list_members", trace.WithAttributes(attribute.String("object_kind", objectKind)), trace.WithAttributes(attribute.String("object_id", objectID))) defer span.End() @@ -186,7 +187,7 @@ func (tm *tracingMiddleware) ListMembers(ctx context.Context, token, objectKind, } // Identify traces the "Identify" operation of the wrapped clients.Service. -func (tm *tracingMiddleware) Identify(ctx context.Context, token string) (string, error) { +func (tm *tracingMiddleware) Identify(ctx context.Context, token string) (string, errors.Error) { ctx, span := tm.tracer.Start(ctx, "svc_identify", trace.WithAttributes(attribute.String("token", token))) defer span.End() @@ -194,7 +195,7 @@ func (tm *tracingMiddleware) Identify(ctx context.Context, token string) (string } // OAuthCallback traces the "OAuthCallback" operation of the wrapped clients.Service. -func (tm *tracingMiddleware) OAuthCallback(ctx context.Context, client mgclients.Client) (*magistrala.Token, error) { +func (tm *tracingMiddleware) OAuthCallback(ctx context.Context, client mgclients.Client) (*magistrala.Token, errors.Error) { ctx, span := tm.tracer.Start(ctx, "svc_oauth_callback", trace.WithAttributes( attribute.String("client_id", client.ID), ))