mirror of
https://github.com/matrix-org/dendrite.git
synced 2025-12-27 00:33:10 -06:00
* - Implement Cosmos for the devices_table - Use the ConnectionString in the YAML to include the Tenant - Revert all other non implemented tables back to use SQLLite3 * - Change the Config to use "test.criticicalarc.com" Container - Add generic function GetDocumentOrNil to standardize GetDocument - Add func to return CrossPartition queries for Aggregates - Add func GetNextSequence() as generic seq generator for AutoIncrement - Add cosmosdbutil.ErrNoRows to return (emulate) sql.ErrNoRows - Add a "fake" ExclusiveWriterFake - Add standard "getXX", "setXX" and "queryXX" to all TABLE class files - Add specific Table SEQ for the Events table - Add specific Table SEQ for the Rooms table - Add specific Table SEQ for the StateSnapshot table
36 lines
802 B
Go
36 lines
802 B
Go
package cosmosdbapi
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
)
|
|
|
|
func GetDocumentId(tenantName string, collectionName string, id string) string {
|
|
return fmt.Sprintf("%s,%s,%s", collectionName, tenantName, id)
|
|
}
|
|
|
|
func GetPartitionKey(tenantName string, collectionName string) string {
|
|
return fmt.Sprintf("%s,%s", collectionName, tenantName)
|
|
}
|
|
|
|
func GetDocumentOrNil(connection CosmosConnection, config CosmosConfig, ctx context.Context, partitionKey string, cosmosDocId string, dbData interface{}) error {
|
|
var _, err = GetClient(connection).GetDocument(
|
|
ctx,
|
|
config.DatabaseName,
|
|
config.ContainerName,
|
|
cosmosDocId,
|
|
GetGetDocumentOptions(partitionKey),
|
|
&dbData,
|
|
)
|
|
|
|
if err != nil {
|
|
if err.Error() == "Resource that no longer exists" {
|
|
dbData = nil
|
|
return nil
|
|
}
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|