Documentation
¶
Overview ¶
Package client provides typed clients for PlatformKit-style CRUD APIs.
Index ¶
- type APIError
- type BulkCreateInput
- type BulkDeleteInput
- type BulkError
- type BulkMetadata
- type BulkResponse
- type BulkUpdateInput
- type CRUDTransport
- type Client
- func (c *Client[T]) BulkCreate(ctx context.Context, input BulkCreateInput[T]) (*BulkResponse[T], error)
- func (c *Client[T]) BulkDelete(ctx context.Context, ids []string) error
- func (c *Client[T]) BulkUpdate(ctx context.Context, input BulkUpdateInput[T]) (*BulkResponse[T], error)
- func (c *Client[T]) Create(ctx context.Context, input CreateInput[T]) (*ItemResponse[T], error)
- func (c *Client[T]) Delete(ctx context.Context, id string) error
- func (c *Client[T]) Export(ctx context.Context, params ExportParams) ([]byte, error)
- func (c *Client[T]) GetByID(ctx context.Context, id string) (*ItemResponse[T], error)
- func (c *Client[T]) Import(ctx context.Context, data []byte, format string) (*ImportResponse, error)
- func (c *Client[T]) List(ctx context.Context, params ListParams) (*ListResponse[T], error)
- func (c *Client[T]) PartialUpdate(ctx context.Context, id string, input PartialUpdateInput) (*ItemResponse[T], error)
- func (c *Client[T]) Transport() CRUDTransport[T]
- func (c *Client[T]) Update(ctx context.Context, id string, input UpdateInput[T]) (*ItemResponse[T], error)
- func (c *Client[T]) WithTransport(transport CRUDTransport[T]) *Client[T]
- type Config
- type CreateInput
- type ExportParams
- type Filter
- type HTTPConfig
- func (c *HTTPConfig) GetType() TransportType
- func (c *HTTPConfig) Validate() error
- func (c *HTTPConfig) WithBearerToken(token string) *HTTPConfig
- func (c *HTTPConfig) WithHTTPClient(client *http.Client) *HTTPConfig
- func (c *HTTPConfig) WithHeader(key, value string) *HTTPConfig
- func (c *HTTPConfig) WithQueryParam(key, value string) *HTTPConfig
- type HTTPTransport
- func (t *HTTPTransport[T]) BulkCreate(ctx context.Context, input *BulkCreateInput[T]) (*BulkResponse[T], error)
- func (t *HTTPTransport[T]) BulkDelete(ctx context.Context, ids []string) error
- func (t *HTTPTransport[T]) BulkUpdate(ctx context.Context, input *BulkUpdateInput[T]) (*BulkResponse[T], error)
- func (t *HTTPTransport[T]) Create(ctx context.Context, input *CreateInput[T]) (*ItemResponse[T], error)
- func (t *HTTPTransport[T]) Delete(ctx context.Context, id string) error
- func (t *HTTPTransport[T]) Export(ctx context.Context, params ExportParams) ([]byte, error)
- func (t *HTTPTransport[T]) GetByID(ctx context.Context, id string) (*ItemResponse[T], error)
- func (t *HTTPTransport[T]) Import(ctx context.Context, data []byte, format string) (*ImportResponse, error)
- func (t *HTTPTransport[T]) List(ctx context.Context, params *ListParams) (*ListResponse[T], error)
- func (t *HTTPTransport[T]) Name() string
- func (t *HTTPTransport[T]) PartialUpdate(ctx context.Context, id string, input *PartialUpdateInput) (*ItemResponse[T], error)
- func (t *HTTPTransport[T]) Type() TransportType
- func (t *HTTPTransport[T]) Update(ctx context.Context, id string, input *UpdateInput[T]) (*ItemResponse[T], error)
- type ImportResponse
- type ItemResponse
- type ListMetadata
- type ListParams
- type ListResponse
- type Option
- type PartialUpdateInput
- type Transport
- type TransportType
- type UpdateInput
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type APIError ¶
type BulkCreateInput ¶
type BulkCreateInput[T any] struct { Items []T `json:"items"` }
type BulkDeleteInput ¶
type BulkDeleteInput struct {
IDs []string `json:"ids"`
}
type BulkMetadata ¶
type BulkResponse ¶
type BulkResponse[T any] struct { Succeeded []T `json:"succeeded"` Failed []BulkError `json:"failed"` Metadata *BulkMetadata `json:"metadata,omitempty"` }
type BulkUpdateInput ¶
type BulkUpdateInput[T any] struct { Items []T `json:"items"` }
type CRUDTransport ¶
type CRUDTransport[T any] interface { Transport Create(ctx context.Context, input *CreateInput[T]) (*ItemResponse[T], error) GetByID(ctx context.Context, id string) (*ItemResponse[T], error) List(ctx context.Context, params *ListParams) (*ListResponse[T], error) Update(ctx context.Context, id string, input *UpdateInput[T]) (*ItemResponse[T], error) PartialUpdate(ctx context.Context, id string, input *PartialUpdateInput) (*ItemResponse[T], error) Delete(ctx context.Context, id string) error BulkCreate(ctx context.Context, input *BulkCreateInput[T]) (*BulkResponse[T], error) BulkUpdate(ctx context.Context, input *BulkUpdateInput[T]) (*BulkResponse[T], error) BulkDelete(ctx context.Context, ids []string) error Export(ctx context.Context, params ExportParams) ([]byte, error) Import(ctx context.Context, data []byte, format string) (*ImportResponse, error) }
CRUDTransport defines the transport-safe CRUD surface exposed by PlatformKit.
type Client ¶
type Client[T any] struct { // contains filtered or unexported fields }
Client provides transport-agnostic CRUD operations for PlatformKit APIs.
func New ¶
func New[T any](transport CRUDTransport[T]) *Client[T]
func (*Client[T]) BulkCreate ¶
func (c *Client[T]) BulkCreate(ctx context.Context, input BulkCreateInput[T]) (*BulkResponse[T], error)
func (*Client[T]) BulkDelete ¶
func (*Client[T]) BulkUpdate ¶
func (c *Client[T]) BulkUpdate(ctx context.Context, input BulkUpdateInput[T]) (*BulkResponse[T], error)
func (*Client[T]) Create ¶
func (c *Client[T]) Create(ctx context.Context, input CreateInput[T]) (*ItemResponse[T], error)
func (*Client[T]) List ¶
func (c *Client[T]) List(ctx context.Context, params ListParams) (*ListResponse[T], error)
func (*Client[T]) PartialUpdate ¶
func (c *Client[T]) PartialUpdate(ctx context.Context, id string, input PartialUpdateInput) (*ItemResponse[T], error)
func (*Client[T]) Transport ¶
func (c *Client[T]) Transport() CRUDTransport[T]
func (*Client[T]) Update ¶
func (c *Client[T]) Update(ctx context.Context, id string, input UpdateInput[T]) (*ItemResponse[T], error)
func (*Client[T]) WithTransport ¶
func (c *Client[T]) WithTransport(transport CRUDTransport[T]) *Client[T]
type Config ¶
type Config interface {
Validate() error
GetType() TransportType
}
Config validates transport-specific configuration.
type CreateInput ¶
type CreateInput[T any] struct { Body T `json:"body"` }
type ExportParams ¶
type HTTPConfig ¶
type HTTPConfig struct {
BaseURL string `json:"base_url"`
EntityPath string `json:"entity_path"`
APIKey string `json:"api_key,omitempty"`
Timeout time.Duration `json:"timeout"`
Headers map[string]string `json:"headers,omitempty"`
QueryParams map[string]string `json:"query_params,omitempty"`
HTTPClient *http.Client `json:"-"`
}
func NewHTTPConfig ¶
func NewHTTPConfig(baseURL, entityPath string, options ...Option) *HTTPConfig
func (*HTTPConfig) GetType ¶
func (c *HTTPConfig) GetType() TransportType
func (*HTTPConfig) Validate ¶
func (c *HTTPConfig) Validate() error
func (*HTTPConfig) WithBearerToken ¶
func (c *HTTPConfig) WithBearerToken(token string) *HTTPConfig
func (*HTTPConfig) WithHTTPClient ¶
func (c *HTTPConfig) WithHTTPClient(client *http.Client) *HTTPConfig
func (*HTTPConfig) WithHeader ¶
func (c *HTTPConfig) WithHeader(key, value string) *HTTPConfig
func (*HTTPConfig) WithQueryParam ¶
func (c *HTTPConfig) WithQueryParam(key, value string) *HTTPConfig
type HTTPTransport ¶
type HTTPTransport[T any] struct { // contains filtered or unexported fields }
func NewHTTPTransport ¶
func NewHTTPTransport[T any](config *HTTPConfig) (*HTTPTransport[T], error)
func (*HTTPTransport[T]) BulkCreate ¶
func (t *HTTPTransport[T]) BulkCreate(ctx context.Context, input *BulkCreateInput[T]) (*BulkResponse[T], error)
func (*HTTPTransport[T]) BulkDelete ¶
func (t *HTTPTransport[T]) BulkDelete(ctx context.Context, ids []string) error
func (*HTTPTransport[T]) BulkUpdate ¶
func (t *HTTPTransport[T]) BulkUpdate(ctx context.Context, input *BulkUpdateInput[T]) (*BulkResponse[T], error)
func (*HTTPTransport[T]) Create ¶
func (t *HTTPTransport[T]) Create(ctx context.Context, input *CreateInput[T]) (*ItemResponse[T], error)
func (*HTTPTransport[T]) Delete ¶
func (t *HTTPTransport[T]) Delete(ctx context.Context, id string) error
func (*HTTPTransport[T]) Export ¶
func (t *HTTPTransport[T]) Export(ctx context.Context, params ExportParams) ([]byte, error)
func (*HTTPTransport[T]) GetByID ¶
func (t *HTTPTransport[T]) GetByID(ctx context.Context, id string) (*ItemResponse[T], error)
func (*HTTPTransport[T]) Import ¶
func (t *HTTPTransport[T]) Import(ctx context.Context, data []byte, format string) (*ImportResponse, error)
func (*HTTPTransport[T]) List ¶
func (t *HTTPTransport[T]) List(ctx context.Context, params *ListParams) (*ListResponse[T], error)
func (*HTTPTransport[T]) Name ¶
func (t *HTTPTransport[T]) Name() string
func (*HTTPTransport[T]) PartialUpdate ¶
func (t *HTTPTransport[T]) PartialUpdate(ctx context.Context, id string, input *PartialUpdateInput) (*ItemResponse[T], error)
func (*HTTPTransport[T]) Type ¶
func (t *HTTPTransport[T]) Type() TransportType
func (*HTTPTransport[T]) Update ¶
func (t *HTTPTransport[T]) Update(ctx context.Context, id string, input *UpdateInput[T]) (*ItemResponse[T], error)
type ImportResponse ¶
type ItemResponse ¶
type ListMetadata ¶
type ListParams ¶
type ListParams struct {
Page int `json:"page,omitempty"`
PageSize int `json:"page_size,omitempty"`
Offset int `json:"offset,omitempty"`
Search string `json:"search,omitempty"`
Sort string `json:"sort,omitempty"`
Order string `json:"order,omitempty"`
Filter *Filter `json:"filter,omitempty"`
Fields []string `json:"fields,omitempty"`
Embed []string `json:"embed,omitempty"`
IncludeDeleted bool `json:"include_deleted,omitempty"`
}
type ListResponse ¶
type ListResponse[T any] struct { Data []T `json:"data"` Metadata *ListMetadata `json:"metadata,omitempty"` }
type Option ¶
type Option func(*HTTPConfig)
func WithAPIKey ¶
func WithBearerToken ¶
func WithHeader ¶
func WithQueryParam ¶
func WithTimeout ¶
type PartialUpdateInput ¶
type Transport ¶
type Transport interface {
Type() TransportType
Name() string
}
Transport is the base contract shared by all client transports.
type TransportType ¶
type TransportType string
TransportType identifies a client transport implementation.
const (
TransportTypeHTTP TransportType = "http"
)
type UpdateInput ¶
Click to show internal directories.
Click to hide internal directories.