tessl install tessl/golang-github-com-azure-azure-sdk-for-go-sdk-data-azcosmos@1.4.1Go SDK client library for interacting with Azure Cosmos DB SQL API
The Azure Cosmos DB Go SDK (azcosmos) provides a comprehensive client library for interacting with Azure Cosmos DB SQL API. It enables Go applications to create and manage databases, containers, and items with support for advanced features like transactional batches, patch operations, hierarchical partition keys, and flexible throughput provisioning.
go get github.com/Azure/azure-sdk-for-go/sdk/data/azcosmos@v1.4.1import (
"github.com/Azure/azure-sdk-for-go/sdk/data/azcosmos"
"github.com/Azure/azure-sdk-for-go/sdk/azcore"
"github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime"
"context"
)import (
"context"
"encoding/json"
"github.com/Azure/azure-sdk-for-go/sdk/data/azcosmos"
)
// Create client with account key
cred, err := azcosmos.NewKeyCredential("myAccountKey")
if err != nil {
panic(err)
}
client, err := azcosmos.NewClientWithKey("https://myaccount.documents.azure.com:443/", cred, nil)
if err != nil {
panic(err)
}
// Create a database
databaseProperties := azcosmos.DatabaseProperties{ID: "myDatabase"}
dbResp, err := client.CreateDatabase(context.Background(), databaseProperties, nil)
if err != nil {
panic(err)
}
// Get database client
database, err := client.NewDatabase("myDatabase")
if err != nil {
panic(err)
}
// Create a container
containerProperties := azcosmos.ContainerProperties{
ID: "myContainer",
PartitionKeyDefinition: azcosmos.PartitionKeyDefinition{
Paths: []string{"/category"},
},
}
containerResp, err := database.CreateContainer(context.Background(), containerProperties, nil)
if err != nil {
panic(err)
}
// Get container client
container, err := database.NewContainer("myContainer")
if err != nil {
panic(err)
}
// Create an item
item := map[string]interface{}{
"id": "item1",
"category": "electronics",
"name": "Laptop",
"price": 999.99,
}
marshalled, err := json.Marshal(item)
if err != nil {
panic(err)
}
pk := azcosmos.NewPartitionKeyString("electronics")
itemResp, err := container.CreateItem(context.Background(), pk, marshalled, nil)
if err != nil {
panic(err)
}Create Cosmos DB clients using Azure AD credentials, account keys, or connection strings.
func NewClient(endpoint string, cred azcore.TokenCredential, o *ClientOptions) (*Client, error)
func NewClientWithKey(endpoint string, cred KeyCredential, o *ClientOptions) (*Client, error)
func NewClientFromConnectionString(connectionString string, o *ClientOptions) (*Client, error)Client Creation & Authentication
Create, read, delete, and query databases, including throughput management.
func (c *Client) CreateDatabase(ctx context.Context, databaseProperties DatabaseProperties, o *CreateDatabaseOptions) (DatabaseResponse, error)
func (c *Client) NewDatabase(id string) (*DatabaseClient, error)
func (db *DatabaseClient) Read(ctx context.Context, o *ReadDatabaseOptions) (DatabaseResponse, error)
func (db *DatabaseClient) Delete(ctx context.Context, o *DeleteDatabaseOptions) (DatabaseResponse, error)
func (c *Client) NewQueryDatabasesPager(query string, o *QueryDatabasesOptions) *runtime.Pager[QueryDatabasesResponse]Create, read, update, delete, and query containers with configuration for indexing, partition keys, and throughput.
func (db *DatabaseClient) CreateContainer(ctx context.Context, containerProperties ContainerProperties, o *CreateContainerOptions) (ContainerResponse, error)
func (c *ContainerClient) Read(ctx context.Context, o *ReadContainerOptions) (ContainerResponse, error)
func (c *ContainerClient) Replace(ctx context.Context, containerProperties ContainerProperties, o *ReplaceContainerOptions) (ContainerResponse, error)
func (c *ContainerClient) Delete(ctx context.Context, o *DeleteContainerOptions) (ContainerResponse, error)Perform CRUD operations on items including create, read, update, delete, upsert, and patch.
func (c *ContainerClient) CreateItem(ctx context.Context, partitionKey PartitionKey, item []byte, o *ItemOptions) (ItemResponse, error)
func (c *ContainerClient) ReadItem(ctx context.Context, partitionKey PartitionKey, itemId string, o *ItemOptions) (ItemResponse, error)
func (c *ContainerClient) ReplaceItem(ctx context.Context, partitionKey PartitionKey, itemId string, item []byte, o *ItemOptions) (ItemResponse, error)
func (c *ContainerClient) UpsertItem(ctx context.Context, partitionKey PartitionKey, item []byte, o *ItemOptions) (ItemResponse, error)
func (c *ContainerClient) DeleteItem(ctx context.Context, partitionKey PartitionKey, itemId string, o *ItemOptions) (ItemResponse, error)
func (c *ContainerClient) PatchItem(ctx context.Context, partitionKey PartitionKey, itemId string, ops PatchOperations, o *ItemOptions) (ItemResponse, error)Execute SQL queries with parameterization, pagination, and limited cross-partition support.
func (c *ContainerClient) NewQueryItemsPager(query string, partitionKey PartitionKey, o *QueryOptions) *runtime.Pager[QueryItemsResponse]
func (c *DatabaseClient) NewQueryContainersPager(query string, o *QueryContainersOptions) *runtime.Pager[QueryContainersResponse]
func (c *Client) NewQueryDatabasesPager(query string, o *QueryDatabasesOptions) *runtime.Pager[QueryDatabasesResponse]Execute multiple operations atomically within a single partition.
func (c *ContainerClient) NewTransactionalBatch(partitionKey PartitionKey) TransactionalBatch
func (c *ContainerClient) ExecuteTransactionalBatch(ctx context.Context, b TransactionalBatch, o *TransactionalBatchOptions) (TransactionalBatchResponse, error)
func (b *TransactionalBatch) CreateItem(item []byte, o *TransactionalBatchItemOptions)
func (b *TransactionalBatch) ReadItem(itemID string, o *TransactionalBatchItemOptions)
func (b *TransactionalBatch) ReplaceItem(itemID string, item []byte, o *TransactionalBatchItemOptions)
func (b *TransactionalBatch) UpsertItem(item []byte, o *TransactionalBatchItemOptions)
func (b *TransactionalBatch) DeleteItem(itemID string, o *TransactionalBatchItemOptions)
func (b *TransactionalBatch) PatchItem(itemID string, p PatchOperations, o *TransactionalBatchItemOptions)Transactional Batch Operations
Create and manage partition keys including hierarchical partition keys.
func NewPartitionKey() PartitionKey
func NewPartitionKeyString(value string) PartitionKey
func NewPartitionKeyNumber(value float64) PartitionKey
func NewPartitionKeyBool(value bool) PartitionKey
func (pk PartitionKey) AppendString(value string) PartitionKey
func (pk PartitionKey) AppendNumber(value float64) PartitionKey
func (pk PartitionKey) AppendBool(value bool) PartitionKey
func (pk PartitionKey) AppendNull() PartitionKeyPerform partial document updates with add, replace, remove, set, and increment operations.
func (p *PatchOperations) AppendAdd(path string, value any)
func (p *PatchOperations) AppendReplace(path string, value any)
func (p *PatchOperations) AppendRemove(path string)
func (p *PatchOperations) AppendSet(path string, value any)
func (p *PatchOperations) AppendIncrement(path string, value int64)
func (p *PatchOperations) SetCondition(condition string)Configure and manage manual and autoscale throughput provisioning for databases and containers.
func NewManualThroughputProperties(throughput int32) ThroughputProperties
func NewAutoscaleThroughputProperties(startingMaxThroughput int32) ThroughputProperties
func NewAutoscaleThroughputPropertiesWithIncrement(startingMaxThroughput int32, incrementPercentage int32) ThroughputProperties
func (db *DatabaseClient) ReadThroughput(ctx context.Context, o *ThroughputOptions) (ThroughputResponse, error)
func (db *DatabaseClient) ReplaceThroughput(ctx context.Context, throughputProperties ThroughputProperties, o *ThroughputOptions) (ThroughputResponse, error)Configure containers with indexing policies, unique keys, conflict resolution, and TTL settings.
type ContainerProperties struct {
ID string
PartitionKeyDefinition PartitionKeyDefinition
IndexingPolicy *IndexingPolicy
DefaultTimeToLive *int32
AnalyticalStoreTimeToLiveInSeconds *int32
UniqueKeyPolicy *UniqueKeyPolicy
ConflictResolutionPolicy *ConflictResolutionPolicy
}Common response types, option structures, and enumerations used throughout the SDK.
type Response struct {
RawResponse *http.Response
RequestCharge float32
ActivityID string
ETag azcore.ETag
}
type ClientOptions struct {
azcore.ClientOptions
EnableContentResponseOnWrite bool
PreferredRegions []string
}