short-d/short

View on GitHub
backend/app/adapter/gqlapi/resolver/query.go

Summary

Maintainability
A
0 mins
Test Coverage
package resolver

import (
    "github.com/short-d/app/fw/logger"
    "github.com/short-d/short/backend/app/usecase/authenticator"
    "github.com/short-d/short/backend/app/usecase/changelog"
    "github.com/short-d/short/backend/app/usecase/shortlink"
)

// Query represents GraphQL query resolver
type Query struct {
    logger             logger.Logger
    authenticator      authenticator.Authenticator
    changeLog          changelog.ChangeLog
    shortLinkRetriever shortlink.Retriever
}

// AuthQueryArgs represents possible parameters for AuthQuery endpoint
type AuthQueryArgs struct {
    AuthToken *string
}

// AuthQuery extracts user information from authentication token
func (q Query) AuthQuery(args *AuthQueryArgs) (*AuthQuery, error) {
    authQuery := newAuthQuery(args.AuthToken, q.authenticator, q.changeLog, q.shortLinkRetriever)
    return &authQuery, nil
}

func newQuery(
    logger logger.Logger,
    authenticator authenticator.Authenticator,
    changeLog changelog.ChangeLog,
    shortLinkRetriever shortlink.Retriever,
) Query {
    return Query{
        logger:             logger,
        authenticator:      authenticator,
        changeLog:          changeLog,
        shortLinkRetriever: shortLinkRetriever,
    }
}