Documentation
¶
Overview ¶
Copyright 2025 SGNL.ai, Inc.
Copyright 2025 SGNL.ai, Inc.
Copyright 2025 SGNL.ai, Inc.
Copyright 2025 SGNL.ai, Inc.
Copyright 2025 SGNL.ai, Inc.
Index ¶
- func AttrExternalIDToColumnName(externalID string) (string, error)
- func BuildQuery(entity *framework.EntityConfig, ordered bool) (string, *framework.Error)
- func ConstructEndpoint(request *Request) (string, *framework.Error)
- func NewAdapter(client Client) framework.Adapter[Config]
- func ParseError(data *DatasourceResponse, endpoint string) *framework.Error
- func ParseResponse(body []byte, request *Request, endpoint string) (objects []map[string]any, nextCursor *pagination.CompositeCursor[int64], ...)
- type Adapter
- func (a *Adapter) GetPage(ctx context.Context, request *framework.Request[Config]) framework.Response
- func (a *Adapter) RequestPageFromDatasource(ctx context.Context, request *framework.Request[Config]) framework.Response
- func (a *Adapter) ValidateGetPageRequest(ctx context.Context, request *framework.Request[Config]) *framework.Error
- type Client
- type Config
- type Datasource
- type DatasourceResponse
- type Entity
- type ErrorInfo
- type Request
- type Response
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func BuildQuery ¶
func ConstructEndpoint ¶
ConstructEndpoint constructs and returns the endpoint to query the datasource.
func NewAdapter ¶
NewAdapter instantiates a new Adapter.
func ParseError ¶
func ParseError(data *DatasourceResponse, endpoint string) *framework.Error
func ParseResponse ¶
func ParseResponse(body []byte, request *Request, endpoint string) ( objects []map[string]any, nextCursor *pagination.CompositeCursor[int64], err *framework.Error, )
Types ¶
type Adapter ¶
type Adapter struct {
WorkdayClient Client
}
Adapter implements the framework.Adapter interface to query pages of objects from datasources.
func (*Adapter) GetPage ¶
func (a *Adapter) GetPage(ctx context.Context, request *framework.Request[Config]) framework.Response
GetPage is called by SGNL's ingestion service to query a page of objects from a datasource.
type Client ¶
type Client interface {
GetPage(ctx context.Context, request *Request) (*Response, *framework.Error)
}
Client is a client that allows querying the datasource which contains JSON objects.
type Config ¶
type Config struct {
// Common configuration
*config.CommonConfig
// APIVersion is the version of the Workday API to use.
APIVersion string `json:"apiVersion,omitempty"`
// OrganizationID is the ID of the organization in Workday.
OrganizationID string `json:"organizationId,omitempty"`
}
Config is the configuration passed in each GetPage calls to the adapter. Workday Adapter configuration example: nolint: godot
{
"requestTimeoutSeconds": 10,
"localTimeZoneOffset": 43200,
"apiVersion": "v1",
"organizationId": "SGNL"
}
type Datasource ¶
Datasource directly implements a Client interface to allow querying an external datasource.
type DatasourceResponse ¶
type DatasourceResponse struct {
Total *int64 `json:"total"`
Objects []map[string]any `json:"data"`
Error *string `json:"error"`
Errors []ErrorInfo `json:"errors"`
}
Workday API response format.
type Entity ¶
type Entity struct {
// TableName is the name of the entity's table in the datasource.
TableName string
// UniqueIDAttrExternalID is the external ID of the entity's uniqueId attribute.
UniqueIDAttrExternalID string
}
Entity contains entity specific information, such as the entity's unique ID attribute and the endpoint path to query that entity.
type Request ¶
type Request struct {
// BaseURL is the Base URL of the datasource to query.
BaseURL string
// Token is the Bearer API token to authenticate a request.
Token string
// APIVersion the API version to use.
APIVersion string
// OrganizationID is the ID of the organization in Workday.
OrganizationID string
// PageSize is the maximum number of objects to return from the entity.
PageSize int64
// Ordered is a flag that indicates if the objects should be ordered.
Ordered bool
// Cursor identifies the first object of the page to return, as returned by
// the last request for the entity.
// nil in the request for the first page.
Cursor *pagination.CompositeCursor[int64]
// EntityConfig contains the attributes that will be used to build the wql query.
EntityConfig *framework.EntityConfig
// RequestTimeoutSeconds is the timeout duration for requests made to datasources.
// This should be set to the number of seconds to wait before timing out.
RequestTimeoutSeconds int
}
Request is a request to the datasource.
type Response ¶
type Response struct {
// StatusCode is an HTTP status code.
StatusCode int
// RetryAfterHeader is the Retry-After response HTTP header, if set.
RetryAfterHeader string
// Objects is the list of items returned by the datasource.
// May be empty.
Objects []map[string]any
// NextCursor is the cursor that identifies the first object of the next page.
// nil if this is the last page in this full sync.
NextCursor *pagination.CompositeCursor[int64]
}
Response is a response returned by the datasource.