Add tenant-id to all docs and cross-tenant queries (#14)

* Add tenant-id to all docs and cross-tenant queries

* Use TenantName in doc ids too

* Space

* - Rename variables and ensure code compiles

* - Fix error handling for GroupBy query

* - Fix typo

Co-authored-by: Alex Flatow <alexf@criticalarc.com>
This commit is contained in:
jahmai-ca 2021-07-27 14:10:35 +10:00 committed by GitHub
parent ae2eea039e
commit 199c4c3cd1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
52 changed files with 379 additions and 267 deletions

View file

@ -59,6 +59,7 @@ type EventNumberCosmosData struct {
type EventCosmosData struct { type EventCosmosData struct {
Id string `json:"id"` Id string `json:"id"`
Pk string `json:"_pk"` Pk string `json:"_pk"`
Tn string `json:"_sid"`
Cn string `json:"_cn"` Cn string `json:"_cn"`
ETag string `json:"_etag"` ETag string `json:"_etag"`
Timestamp int64 `json:"_ts"` Timestamp int64 `json:"_ts"`
@ -125,7 +126,7 @@ func (s *eventsStatements) prepare(db *Database, writer sqlutil.Writer) (err err
func queryEvent(s *eventsStatements, ctx context.Context, qry string, params map[string]interface{}) ([]EventCosmosData, error) { func queryEvent(s *eventsStatements, ctx context.Context, qry string, params map[string]interface{}) ([]EventCosmosData, error) {
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var response []EventCosmosData var response []EventCosmosData
var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk) var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk)
@ -146,7 +147,7 @@ func queryEvent(s *eventsStatements, ctx context.Context, qry string, params map
func queryEventEventNumber(s *eventsStatements, ctx context.Context, qry string, params map[string]interface{}) ([]EventNumberCosmosData, error) { func queryEventEventNumber(s *eventsStatements, ctx context.Context, qry string, params map[string]interface{}) ([]EventNumberCosmosData, error) {
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var response []EventNumberCosmosData var response []EventNumberCosmosData
var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk) var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk)
@ -345,8 +346,8 @@ func (s *eventsStatements) insertEvent(
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
docId := fmt.Sprintf("%d", idSeq) docId := fmt.Sprintf("%d", idSeq)
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
// appServiceID, // appServiceID,
// eventJSON, // eventJSON,
@ -360,6 +361,7 @@ func (s *eventsStatements) insertEvent(
dbData := &EventCosmosData{ dbData := &EventCosmosData{
Id: cosmosDocId, Id: cosmosDocId,
Tn: s.db.cosmosConfig.TenantName,
Cn: dbCollectionName, Cn: dbCollectionName,
Pk: pk, Pk: pk,
Timestamp: time.Now().Unix(), Timestamp: time.Now().Unix(),

View file

@ -90,7 +90,7 @@ global:
# Naffka database options. Not required when using Kafka. # Naffka database options. Not required when using Kafka.
naffka_database: naffka_database:
connection_string: "cosmosdb:AccountEndpoint=https://localhost:8081/;AccountKey=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==;DatabaseName=safezone_local;ContainerName=test.criticalarc.com;" connection_string: "cosmosdb:AccountEndpoint=https://localhost:8081/;AccountKey=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==;DatabaseName=safezone_local;ContainerName=test.criticalarc.com;TenantName=test.criticalarc.com;"
max_open_conns: 10 max_open_conns: 10
max_idle_conns: 2 max_idle_conns: 2
conn_max_lifetime: -1 conn_max_lifetime: -1
@ -122,7 +122,7 @@ app_service_api:
listen: http://localhost:7777 listen: http://localhost:7777
connect: http://localhost:7777 connect: http://localhost:7777
database: database:
connection_string: "cosmosdb:AccountEndpoint=https://localhost:8081/;AccountKey=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==;DatabaseName=safezone_local;ContainerName=test.criticalarc.com;" connection_string: "cosmosdb:AccountEndpoint=https://localhost:8081/;AccountKey=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==;DatabaseName=safezone_local;ContainerName=test.criticalarc.com;TenantName=test.criticalarc.com;"
max_open_conns: 10 max_open_conns: 10
max_idle_conns: 2 max_idle_conns: 2
conn_max_lifetime: -1 conn_max_lifetime: -1
@ -202,7 +202,7 @@ federation_sender:
listen: http://localhost:7775 listen: http://localhost:7775
connect: http://localhost:7775 connect: http://localhost:7775
database: database:
connection_string: "cosmosdb:AccountEndpoint=https://localhost:8081/;AccountKey=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==;DatabaseName=safezone_local;ContainerName=test.criticalarc.com;" connection_string: "cosmosdb:AccountEndpoint=https://localhost:8081/;AccountKey=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==;DatabaseName=safezone_local;ContainerName=test.criticalarc.com;TenantName=test.criticalarc.com;"
max_open_conns: 10 max_open_conns: 10
max_idle_conns: 2 max_idle_conns: 2
conn_max_lifetime: -1 conn_max_lifetime: -1
@ -228,7 +228,7 @@ key_server:
listen: http://localhost:7779 listen: http://localhost:7779
connect: http://localhost:7779 connect: http://localhost:7779
database: database:
connection_string: "cosmosdb:AccountEndpoint=https://localhost:8081/;AccountKey=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==;DatabaseName=safezone_local;ContainerName=test.criticalarc.com;" connection_string: "cosmosdb:AccountEndpoint=https://localhost:8081/;AccountKey=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==;DatabaseName=safezone_local;ContainerName=test.criticalarc.com;TenantName=test.criticalarc.com;"
max_open_conns: 10 max_open_conns: 10
max_idle_conns: 2 max_idle_conns: 2
conn_max_lifetime: -1 conn_max_lifetime: -1
@ -241,7 +241,7 @@ media_api:
external_api: external_api:
listen: http://[::]:8074 listen: http://[::]:8074
database: database:
connection_string: "cosmosdb:AccountEndpoint=https://localhost:8081/;AccountKey=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==;DatabaseName=safezone_local;ContainerName=test.criticalarc.com;" connection_string: "cosmosdb:AccountEndpoint=https://localhost:8081/;AccountKey=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==;DatabaseName=safezone_local;ContainerName=test.criticalarc.com;TenantName=test.criticalarc.com;"
max_open_conns: 5 max_open_conns: 5
max_idle_conns: 2 max_idle_conns: 2
conn_max_lifetime: -1 conn_max_lifetime: -1
@ -291,7 +291,7 @@ room_server:
listen: http://localhost:7770 listen: http://localhost:7770
connect: http://localhost:7770 connect: http://localhost:7770
database: database:
connection_string: "cosmosdb:AccountEndpoint=https://localhost:8081/;AccountKey=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==;DatabaseName=safezone_local;ContainerName=test.criticalarc.com;" connection_string: "cosmosdb:AccountEndpoint=https://localhost:8081/;AccountKey=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==;DatabaseName=safezone_local;ContainerName=test.criticalarc.com;TenantName=test.criticalarc.com;"
max_open_conns: 10 max_open_conns: 10
max_idle_conns: 2 max_idle_conns: 2
conn_max_lifetime: -1 conn_max_lifetime: -1
@ -302,7 +302,7 @@ signing_key_server:
listen: http://localhost:7780 listen: http://localhost:7780
connect: http://localhost:7780 connect: http://localhost:7780
database: database:
connection_string: "cosmosdb:AccountEndpoint=https://localhost:8081/;AccountKey=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==;DatabaseName=safezone_local;ContainerName=test.criticalarc.com;" connection_string: "cosmosdb:AccountEndpoint=https://localhost:8081/;AccountKey=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==;DatabaseName=safezone_local;ContainerName=test.criticalarc.com;TenantName=test.criticalarc.com;"
max_open_conns: 10 max_open_conns: 10
max_idle_conns: 2 max_idle_conns: 2
conn_max_lifetime: -1 conn_max_lifetime: -1
@ -331,7 +331,7 @@ sync_api:
external_api: external_api:
listen: http://[::]:8073 listen: http://[::]:8073
database: database:
connection_string: "cosmosdb:AccountEndpoint=https://localhost:8081/;AccountKey=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==;DatabaseName=safezone_local;ContainerName=test.criticalarc.com;" connection_string: "cosmosdb:AccountEndpoint=https://localhost:8081/;AccountKey=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==;DatabaseName=safezone_local;ContainerName=test.criticalarc.com;TenantName=test.criticalarc.com;"
max_open_conns: 10 max_open_conns: 10
max_idle_conns: 2 max_idle_conns: 2
conn_max_lifetime: -1 conn_max_lifetime: -1
@ -354,12 +354,12 @@ user_api:
listen: http://localhost:7781 listen: http://localhost:7781
connect: http://localhost:7781 connect: http://localhost:7781
account_database: account_database:
connection_string: "cosmosdb:AccountEndpoint=https://localhost:8081/;AccountKey=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==;DatabaseName=safezone_local;ContainerName=test.criticalarc.com;" connection_string: "cosmosdb:AccountEndpoint=https://localhost:8081/;AccountKey=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==;DatabaseName=safezone_local;ContainerName=test.criticalarc.com;TenantName=test.criticalarc.com;"
max_open_conns: 10 max_open_conns: 10
max_idle_conns: 2 max_idle_conns: 2
conn_max_lifetime: -1 conn_max_lifetime: -1
device_database: device_database:
connection_string: "cosmosdb:AccountEndpoint=https://localhost:8081/;AccountKey=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==;DatabaseName=safezone_local;ContainerName=test.criticalarc.com;" connection_string: "cosmosdb:AccountEndpoint=https://localhost:8081/;AccountKey=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==;DatabaseName=safezone_local;ContainerName=test.criticalarc.com;TenantName=test.criticalarc.com;"
max_open_conns: 10 max_open_conns: 10
max_idle_conns: 2 max_idle_conns: 2
conn_max_lifetime: -1 conn_max_lifetime: -1

View file

@ -40,6 +40,7 @@ type BlacklistCosmos struct {
type BlacklistCosmosData struct { type BlacklistCosmosData struct {
Id string `json:"id"` Id string `json:"id"`
Pk string `json:"_pk"` Pk string `json:"_pk"`
Tn string `json:"_sid"`
Cn string `json:"_cn"` Cn string `json:"_cn"`
ETag string `json:"_etag"` ETag string `json:"_etag"`
Timestamp int64 `json:"_ts"` Timestamp int64 `json:"_ts"`
@ -118,8 +119,8 @@ func (s *blacklistStatements) InsertBlacklist(
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
// UNIQUE (server_name) // UNIQUE (server_name)
docId := fmt.Sprintf("%s", serverName) docId := fmt.Sprintf("%s", serverName)
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
data := BlacklistCosmos{ data := BlacklistCosmos{
ServerName: string(serverName), ServerName: string(serverName),
@ -127,6 +128,7 @@ func (s *blacklistStatements) InsertBlacklist(
dbData := &BlacklistCosmosData{ dbData := &BlacklistCosmosData{
Id: cosmosDocId, Id: cosmosDocId,
Tn: s.db.cosmosConfig.TenantName,
Cn: dbCollectionName, Cn: dbCollectionName,
Pk: pk, Pk: pk,
Timestamp: time.Now().Unix(), Timestamp: time.Now().Unix(),
@ -159,8 +161,8 @@ func (s *blacklistStatements) SelectBlacklist(
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
// UNIQUE (server_name) // UNIQUE (server_name)
docId := fmt.Sprintf("%s", serverName) docId := fmt.Sprintf("%s", serverName)
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
// res, err := stmt.QueryContext(ctx, serverName) // res, err := stmt.QueryContext(ctx, serverName)
res, err := getBlacklist(s, ctx, pk, cosmosDocId) res, err := getBlacklist(s, ctx, pk, cosmosDocId)
if err != nil { if err != nil {
@ -183,8 +185,8 @@ func (s *blacklistStatements) DeleteBlacklist(
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
// UNIQUE (server_name) // UNIQUE (server_name)
docId := fmt.Sprintf("%s", serverName) docId := fmt.Sprintf("%s", serverName)
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
// _, err := stmt.ExecContext(ctx, serverName) // _, err := stmt.ExecContext(ctx, serverName)
res, err := getBlacklist(s, ctx, pk, cosmosDocId) res, err := getBlacklist(s, ctx, pk, cosmosDocId)
if(res != nil) { if(res != nil) {

View file

@ -50,6 +50,7 @@ type InboundPeekCosmos struct {
type InboundPeekCosmosData struct { type InboundPeekCosmosData struct {
Id string `json:"id"` Id string `json:"id"`
Pk string `json:"_pk"` Pk string `json:"_pk"`
Tn string `json:"_sid"`
Cn string `json:"_cn"` Cn string `json:"_cn"`
ETag string `json:"_etag"` ETag string `json:"_etag"`
Timestamp int64 `json:"_ts"` Timestamp int64 `json:"_ts"`
@ -94,7 +95,7 @@ type inboundPeeksStatements struct {
func queryInboundPeek(s *inboundPeeksStatements, ctx context.Context, qry string, params map[string]interface{}) ([]InboundPeekCosmosData, error) { func queryInboundPeek(s *inboundPeeksStatements, ctx context.Context, qry string, params map[string]interface{}) ([]InboundPeekCosmosData, error) {
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var response []InboundPeekCosmosData var response []InboundPeekCosmosData
var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk) var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk)
@ -179,8 +180,8 @@ func (s *inboundPeeksStatements) InsertInboundPeek(
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
// UNIQUE (room_id, server_name, peek_id) // UNIQUE (room_id, server_name, peek_id)
docId := fmt.Sprintf("%s_%s_%s", roomID, serverName, peekID) docId := fmt.Sprintf("%s_%s_%s", roomID, serverName, peekID)
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
data := InboundPeekCosmos{ data := InboundPeekCosmos{
RoomID: roomID, RoomID: roomID,
@ -193,6 +194,7 @@ func (s *inboundPeeksStatements) InsertInboundPeek(
dbData := &InboundPeekCosmosData{ dbData := &InboundPeekCosmosData{
Id: cosmosDocId, Id: cosmosDocId,
Tn: s.db.cosmosConfig.TenantName,
Cn: dbCollectionName, Cn: dbCollectionName,
Pk: pk, Pk: pk,
Timestamp: time.Now().Unix(), Timestamp: time.Now().Unix(),
@ -222,8 +224,8 @@ func (s *inboundPeeksStatements) RenewInboundPeek(
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
// UNIQUE (room_id, server_name, peek_id) // UNIQUE (room_id, server_name, peek_id)
docId := fmt.Sprintf("%s_%s_%s", roomID, serverName, peekID) docId := fmt.Sprintf("%s_%s_%s", roomID, serverName, peekID)
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
// _, err = sqlutil.TxStmt(txn, s.renewInboundPeekStmt).ExecContext(ctx, nowMilli, renewalInterval, roomID, serverName, peekID) // _, err = sqlutil.TxStmt(txn, s.renewInboundPeekStmt).ExecContext(ctx, nowMilli, renewalInterval, roomID, serverName, peekID)
res, err := getInboundPeek(s, ctx, pk, cosmosDocId) res, err := getInboundPeek(s, ctx, pk, cosmosDocId)
@ -252,8 +254,8 @@ func (s *inboundPeeksStatements) SelectInboundPeek(
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
// UNIQUE (room_id, server_name, peek_id) // UNIQUE (room_id, server_name, peek_id)
docId := fmt.Sprintf("%s_%s_%s", roomID, serverName, peekID) docId := fmt.Sprintf("%s_%s_%s", roomID, serverName, peekID)
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
// row := sqlutil.TxStmt(txn, s.selectInboundPeeksStmt).QueryRowContext(ctx, roomID) // row := sqlutil.TxStmt(txn, s.selectInboundPeeksStmt).QueryRowContext(ctx, roomID)
row, err := getInboundPeek(s, ctx, pk, cosmosDocId) row, err := getInboundPeek(s, ctx, pk, cosmosDocId)

View file

@ -55,6 +55,7 @@ type JoinedHostCosmos struct {
type JoinedHostCosmosData struct { type JoinedHostCosmosData struct {
Id string `json:"id"` Id string `json:"id"`
Pk string `json:"_pk"` Pk string `json:"_pk"`
Tn string `json:"_sid"`
Cn string `json:"_cn"` Cn string `json:"_cn"`
ETag string `json:"_etag"` ETag string `json:"_etag"`
Timestamp int64 `json:"_ts"` Timestamp int64 `json:"_ts"`
@ -103,7 +104,7 @@ type joinedHostsStatements struct {
func queryJoinedHostDistinct(s *joinedHostsStatements, ctx context.Context, qry string, params map[string]interface{}) ([]JoinedHostCosmos, error) { func queryJoinedHostDistinct(s *joinedHostsStatements, ctx context.Context, qry string, params map[string]interface{}) ([]JoinedHostCosmos, error) {
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var response []JoinedHostCosmos var response []JoinedHostCosmos
var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk) var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk)
@ -124,7 +125,7 @@ func queryJoinedHostDistinct(s *joinedHostsStatements, ctx context.Context, qry
func queryJoinedHost(s *joinedHostsStatements, ctx context.Context, qry string, params map[string]interface{}) ([]JoinedHostCosmosData, error) { func queryJoinedHost(s *joinedHostsStatements, ctx context.Context, qry string, params map[string]interface{}) ([]JoinedHostCosmosData, error) {
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var response []JoinedHostCosmosData var response []JoinedHostCosmosData
var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk) var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk)
@ -186,8 +187,8 @@ func (s *joinedHostsStatements) InsertJoinedHosts(
// CREATE UNIQUE INDEX IF NOT EXISTS federatonsender_joined_hosts_event_id_idx // CREATE UNIQUE INDEX IF NOT EXISTS federatonsender_joined_hosts_event_id_idx
// ON federationsender_joined_hosts (event_id); // ON federationsender_joined_hosts (event_id);
docId := fmt.Sprintf("%s", eventID) docId := fmt.Sprintf("%s", eventID)
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
data := JoinedHostCosmos{ data := JoinedHostCosmos{
EventID: eventID, EventID: eventID,
@ -197,6 +198,7 @@ func (s *joinedHostsStatements) InsertJoinedHosts(
dbData := &JoinedHostCosmosData{ dbData := &JoinedHostCosmosData{
Id: cosmosDocId, Id: cosmosDocId,
Tn: s.db.cosmosConfig.TenantName,
Cn: dbCollectionName, Cn: dbCollectionName,
Pk: pk, Pk: pk,
Timestamp: time.Now().Unix(), Timestamp: time.Now().Unix(),

View file

@ -50,6 +50,7 @@ type OutboundPeekCosmos struct {
type OutboundPeekCosmosData struct { type OutboundPeekCosmosData struct {
Id string `json:"id"` Id string `json:"id"`
Pk string `json:"_pk"` Pk string `json:"_pk"`
Tn string `json:"_sid"`
Cn string `json:"_cn"` Cn string `json:"_cn"`
ETag string `json:"_etag"` ETag string `json:"_etag"`
Timestamp int64 `json:"_ts"` Timestamp int64 `json:"_ts"`
@ -91,7 +92,7 @@ type outboundPeeksStatements struct {
func queryOutboundPeek(s *outboundPeeksStatements, ctx context.Context, qry string, params map[string]interface{}) ([]OutboundPeekCosmosData, error) { func queryOutboundPeek(s *outboundPeeksStatements, ctx context.Context, qry string, params map[string]interface{}) ([]OutboundPeekCosmosData, error) {
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var response []OutboundPeekCosmosData var response []OutboundPeekCosmosData
var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk) var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk)
@ -175,8 +176,8 @@ func (s *outboundPeeksStatements) InsertOutboundPeek(
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
// UNIQUE (room_id, server_name, peek_id) // UNIQUE (room_id, server_name, peek_id)
docId := fmt.Sprintf("%s_%s_%s", roomID, serverName, peekID) docId := fmt.Sprintf("%s_%s_%s", roomID, serverName, peekID)
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
data := OutboundPeekCosmos{ data := OutboundPeekCosmos{
RoomID: roomID, RoomID: roomID,
@ -189,6 +190,7 @@ func (s *outboundPeeksStatements) InsertOutboundPeek(
dbData := &OutboundPeekCosmosData{ dbData := &OutboundPeekCosmosData{
Id: cosmosDocId, Id: cosmosDocId,
Tn: s.db.cosmosConfig.TenantName,
Cn: dbCollectionName, Cn: dbCollectionName,
Pk: pk, Pk: pk,
Timestamp: time.Now().Unix(), Timestamp: time.Now().Unix(),
@ -217,8 +219,8 @@ func (s *outboundPeeksStatements) RenewOutboundPeek(
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
// UNIQUE (room_id, server_name, peek_id) // UNIQUE (room_id, server_name, peek_id)
docId := fmt.Sprintf("%s_%s_%s", roomID, serverName, peekID) docId := fmt.Sprintf("%s_%s_%s", roomID, serverName, peekID)
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
// _, err = sqlutil.TxStmt(txn, s.renewOutboundPeekStmt).ExecContext(ctx, nowMilli, renewalInterval, roomID, serverName, peekID) // _, err = sqlutil.TxStmt(txn, s.renewOutboundPeekStmt).ExecContext(ctx, nowMilli, renewalInterval, roomID, serverName, peekID)
res, err := getOutboundPeek(s, ctx, pk, cosmosDocId) res, err := getOutboundPeek(s, ctx, pk, cosmosDocId)
@ -247,8 +249,8 @@ func (s *outboundPeeksStatements) SelectOutboundPeek(
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
// UNIQUE (room_id, server_name, peek_id) // UNIQUE (room_id, server_name, peek_id)
docId := fmt.Sprintf("%s_%s_%s", roomID, serverName, peekID) docId := fmt.Sprintf("%s_%s_%s", roomID, serverName, peekID)
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
// row := sqlutil.TxStmt(txn, s.selectOutboundPeeksStmt).QueryRowContext(ctx, roomID) // row := sqlutil.TxStmt(txn, s.selectOutboundPeeksStmt).QueryRowContext(ctx, roomID)
row, err := getOutboundPeek(s, ctx, pk, cosmosDocId) row, err := getOutboundPeek(s, ctx, pk, cosmosDocId)

View file

@ -52,6 +52,7 @@ type QueueEDUCosmosNumber struct {
type QueueEDUCosmosData struct { type QueueEDUCosmosData struct {
Id string `json:"id"` Id string `json:"id"`
Pk string `json:"_pk"` Pk string `json:"_pk"`
Tn string `json:"_sid"`
Cn string `json:"_cn"` Cn string `json:"_cn"`
ETag string `json:"_etag"` ETag string `json:"_etag"`
Timestamp int64 `json:"_ts"` Timestamp int64 `json:"_ts"`
@ -103,7 +104,7 @@ type queueEDUsStatements struct {
func queryQueueEDUC(s *queueEDUsStatements, ctx context.Context, qry string, params map[string]interface{}) ([]QueueEDUCosmosData, error) { func queryQueueEDUC(s *queueEDUsStatements, ctx context.Context, qry string, params map[string]interface{}) ([]QueueEDUCosmosData, error) {
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var response []QueueEDUCosmosData var response []QueueEDUCosmosData
var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk) var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk)
@ -124,7 +125,7 @@ func queryQueueEDUC(s *queueEDUsStatements, ctx context.Context, qry string, par
func queryQueueEDUCDistinct(s *queueEDUsStatements, ctx context.Context, qry string, params map[string]interface{}) ([]QueueEDUCosmos, error) { func queryQueueEDUCDistinct(s *queueEDUsStatements, ctx context.Context, qry string, params map[string]interface{}) ([]QueueEDUCosmos, error) {
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var response []QueueEDUCosmos var response []QueueEDUCosmos
var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk) var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk)
@ -145,7 +146,7 @@ func queryQueueEDUCDistinct(s *queueEDUsStatements, ctx context.Context, qry str
func queryQueueEDUCNumber(s *queueEDUsStatements, ctx context.Context, qry string, params map[string]interface{}) ([]QueueEDUCosmosNumber, error) { func queryQueueEDUCNumber(s *queueEDUsStatements, ctx context.Context, qry string, params map[string]interface{}) ([]QueueEDUCosmosNumber, error) {
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var response []QueueEDUCosmosNumber var response []QueueEDUCosmosNumber
var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk) var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk)
@ -207,8 +208,8 @@ func (s *queueEDUsStatements) InsertQueueEDU(
// CREATE UNIQUE INDEX IF NOT EXISTS federationsender_queue_edus_json_nid_idx // CREATE UNIQUE INDEX IF NOT EXISTS federationsender_queue_edus_json_nid_idx
// ON federationsender_queue_edus (json_nid, server_name); // ON federationsender_queue_edus (json_nid, server_name);
docId := fmt.Sprintf("%d_%s", nid, eduType) docId := fmt.Sprintf("%d_%s", nid, eduType)
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
data := QueueEDUCosmos{ data := QueueEDUCosmos{
EDUType: eduType, EDUType: eduType,
@ -218,6 +219,7 @@ func (s *queueEDUsStatements) InsertQueueEDU(
dbData := &QueueEDUCosmosData{ dbData := &QueueEDUCosmosData{
Id: cosmosDocId, Id: cosmosDocId,
Tn: s.db.cosmosConfig.TenantName,
Cn: dbCollectionName, Cn: dbCollectionName,
Pk: pk, Pk: pk,
Timestamp: time.Now().Unix(), Timestamp: time.Now().Unix(),

View file

@ -44,6 +44,7 @@ type QueueJSONCosmos struct {
type QueueJSONCosmosData struct { type QueueJSONCosmosData struct {
Id string `json:"id"` Id string `json:"id"`
Pk string `json:"_pk"` Pk string `json:"_pk"`
Tn string `json:"_sid"`
Cn string `json:"_cn"` Cn string `json:"_cn"`
ETag string `json:"_etag"` ETag string `json:"_etag"`
Timestamp int64 `json:"_ts"` Timestamp int64 `json:"_ts"`
@ -75,7 +76,7 @@ type queueJSONStatements struct {
func queryQueueJSON(s *queueJSONStatements, ctx context.Context, qry string, params map[string]interface{}) ([]QueueJSONCosmosData, error) { func queryQueueJSON(s *queueJSONStatements, ctx context.Context, qry string, params map[string]interface{}) ([]QueueJSONCosmosData, error) {
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var response []QueueJSONCosmosData var response []QueueJSONCosmosData
var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk) var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk)
@ -130,8 +131,8 @@ func (s *queueJSONStatements) InsertQueueJSON(
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
// json_nid INTEGER PRIMARY KEY AUTOINCREMENT, // json_nid INTEGER PRIMARY KEY AUTOINCREMENT,
docId := fmt.Sprintf("%d", idSeq) docId := fmt.Sprintf("%d", idSeq)
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
//Convert to byte //Convert to byte
jsonData := []byte(json) jsonData := []byte(json)
@ -143,6 +144,7 @@ func (s *queueJSONStatements) InsertQueueJSON(
dbData := &QueueJSONCosmosData{ dbData := &QueueJSONCosmosData{
Id: cosmosDocId, Id: cosmosDocId,
Tn: s.db.cosmosConfig.TenantName,
Cn: dbCollectionName, Cn: dbCollectionName,
Pk: pk, Pk: pk,
Timestamp: time.Now().Unix(), Timestamp: time.Now().Unix(),

View file

@ -53,6 +53,7 @@ type QueuePDUCosmosNumber struct {
type QueuePDUCosmosData struct { type QueuePDUCosmosData struct {
Id string `json:"id"` Id string `json:"id"`
Pk string `json:"_pk"` Pk string `json:"_pk"`
Tn string `json:"_sid"`
Cn string `json:"_cn"` Cn string `json:"_cn"`
ETag string `json:"_etag"` ETag string `json:"_etag"`
Timestamp int64 `json:"_ts"` Timestamp int64 `json:"_ts"`
@ -115,7 +116,7 @@ type queuePDUsStatements struct {
func queryQueuePDU(s *queuePDUsStatements, ctx context.Context, qry string, params map[string]interface{}) ([]QueuePDUCosmosData, error) { func queryQueuePDU(s *queuePDUsStatements, ctx context.Context, qry string, params map[string]interface{}) ([]QueuePDUCosmosData, error) {
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var response []QueuePDUCosmosData var response []QueuePDUCosmosData
var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk) var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk)
@ -136,7 +137,7 @@ func queryQueuePDU(s *queuePDUsStatements, ctx context.Context, qry string, para
func queryQueuePDUDistinct(s *queuePDUsStatements, ctx context.Context, qry string, params map[string]interface{}) ([]QueuePDUCosmos, error) { func queryQueuePDUDistinct(s *queuePDUsStatements, ctx context.Context, qry string, params map[string]interface{}) ([]QueuePDUCosmos, error) {
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var response []QueuePDUCosmos var response []QueuePDUCosmos
var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk) var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk)
@ -157,7 +158,7 @@ func queryQueuePDUDistinct(s *queuePDUsStatements, ctx context.Context, qry stri
func queryQueuePDUNumber(s *queuePDUsStatements, ctx context.Context, qry string, params map[string]interface{}) ([]QueuePDUCosmosNumber, error) { func queryQueuePDUNumber(s *queuePDUsStatements, ctx context.Context, qry string, params map[string]interface{}) ([]QueuePDUCosmosNumber, error) {
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var response []QueuePDUCosmosNumber var response []QueuePDUCosmosNumber
var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk) var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk)
@ -219,8 +220,8 @@ func (s *queuePDUsStatements) InsertQueuePDU(
// CREATE UNIQUE INDEX IF NOT EXISTS federationsender_queue_pdus_pdus_json_nid_idx // CREATE UNIQUE INDEX IF NOT EXISTS federationsender_queue_pdus_pdus_json_nid_idx
// ON federationsender_queue_pdus (json_nid, server_name); // ON federationsender_queue_pdus (json_nid, server_name);
docId := fmt.Sprintf("%d_%s", nid, serverName) docId := fmt.Sprintf("%d_%s", nid, serverName)
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
data := QueuePDUCosmos{ data := QueuePDUCosmos{
JSONNID: nid, JSONNID: nid,
@ -230,6 +231,7 @@ func (s *queuePDUsStatements) InsertQueuePDU(
dbData := &QueuePDUCosmosData{ dbData := &QueuePDUCosmosData{
Id: cosmosDocId, Id: cosmosDocId,
Tn: s.db.cosmosConfig.TenantName,
Cn: dbCollectionName, Cn: dbCollectionName,
Pk: pk, Pk: pk,
Timestamp: time.Now().Unix(), Timestamp: time.Now().Unix(),

View file

@ -3,4 +3,5 @@ package cosmosdbapi
type CosmosConfig struct { type CosmosConfig struct {
DatabaseName string DatabaseName string
ContainerName string ContainerName string
TenantName string
} }

View file

@ -11,6 +11,7 @@ const accountEndpointName = "AccountEndpoint"
const accountKeyName = "AccountKey" const accountKeyName = "AccountKey"
const databaseName = "DatabaseName" const databaseName = "DatabaseName"
const containerName = "ContainerName" const containerName = "ContainerName"
const tenantName = "TenantName"
func getConnectionString(d *config.DataSource) config.DataSource { func getConnectionString(d *config.DataSource) config.DataSource {
var connString string var connString string
@ -43,8 +44,10 @@ func GetCosmosConfig(d *config.DataSource) cosmosdbapi.CosmosConfig {
connMap := getConnectionProperties(string(connString)) connMap := getConnectionProperties(string(connString))
database := connMap[databaseName] database := connMap[databaseName]
container := connMap[containerName] container := connMap[containerName]
tenant := connMap[tenantName]
return cosmosdbapi.CosmosConfig{ return cosmosdbapi.CosmosConfig{
DatabaseName: database, DatabaseName: database,
ContainerName: container, ContainerName: container,
TenantName: tenant,
} }
} }

View file

@ -10,6 +10,7 @@ import (
type SequenceCosmosData struct { type SequenceCosmosData struct {
Id string `json:"id"` Id string `json:"id"`
Pk string `json:"_pk"` Pk string `json:"_pk"`
Tn string `json:"_sid"`
Cn string `json:"_cn"` Cn string `json:"_cn"`
ETag string `json:"_etag"` ETag string `json:"_etag"`
Timestamp int64 `json:"_ts"` Timestamp int64 `json:"_ts"`
@ -44,6 +45,7 @@ func GetNextSequence(
dbData = SequenceCosmosData{} dbData = SequenceCosmosData{}
dbData.Id = cosmosDocId dbData.Id = cosmosDocId
dbData.Pk = pk dbData.Pk = pk
dbData.Tn = config.TenantName
dbData.Cn = dbCollectionName dbData.Cn = dbCollectionName
dbData.Value = initial dbData.Value = initial
var optionsCreate = cosmosdbapi.GetCreateDocumentOptions(dbData.Pk) var optionsCreate = cosmosdbapi.GetCreateDocumentOptions(dbData.Pk)

View file

@ -56,6 +56,7 @@ type PartitionOffsetCosmos struct {
type PartitionOffsetCosmosData struct { type PartitionOffsetCosmosData struct {
Id string `json:"id"` Id string `json:"id"`
Pk string `json:"_pk"` Pk string `json:"_pk"`
Tn string `json:"_sid"`
Cn string `json:"_cn"` Cn string `json:"_cn"`
ETag string `json:"_etag"` ETag string `json:"_etag"`
Timestamp int64 `json:"_ts"` Timestamp int64 `json:"_ts"`
@ -188,7 +189,7 @@ func (s *PartitionOffsetStatements) upsertPartitionOffset(
dbCollectionName := getCollectionName(*s) dbCollectionName := getCollectionName(*s)
// UNIQUE (topic, partition) // UNIQUE (topic, partition)
docId := fmt.Sprintf("%s_%d", topic, partition) docId := fmt.Sprintf("%s_%d", topic, partition)
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.CosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.CosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.CosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.CosmosConfig.ContainerName, dbCollectionName)
data := PartitionOffsetCosmos{ data := PartitionOffsetCosmos{
@ -199,6 +200,7 @@ func (s *PartitionOffsetStatements) upsertPartitionOffset(
dbData := &PartitionOffsetCosmosData{ dbData := &PartitionOffsetCosmosData{
Id: cosmosDocId, Id: cosmosDocId,
Tn: s.db.CosmosConfig.TenantName,
Cn: dbCollectionName, Cn: dbCollectionName,
Pk: pk, Pk: pk,
// nowMilli := time.Now().UnixNano() / int64(time.Millisecond) // nowMilli := time.Now().UnixNano() / int64(time.Millisecond)

View file

@ -40,6 +40,7 @@ type TopicCosmosNumber struct {
type TopicCosmosData struct { type TopicCosmosData struct {
Id string `json:"id"` Id string `json:"id"`
Pk string `json:"_pk"` Pk string `json:"_pk"`
Tn string `json:"_sid"`
Cn string `json:"_cn"` Cn string `json:"_cn"`
ETag string `json:"_etag"` ETag string `json:"_etag"`
Timestamp int64 `json:"_ts"` Timestamp int64 `json:"_ts"`
@ -57,6 +58,7 @@ type MessageCosmos struct {
type MessageCosmosData struct { type MessageCosmosData struct {
Id string `json:"id"` Id string `json:"id"`
Pk string `json:"_pk"` Pk string `json:"_pk"`
Tn string `json:"_sid"`
Cn string `json:"_cn"` Cn string `json:"_cn"`
ETag string `json:"_etag"` ETag string `json:"_etag"`
Timestamp int64 `json:"_ts"` Timestamp int64 `json:"_ts"`
@ -233,6 +235,7 @@ func (t *topicsStatements) InsertTopic(
dbData := &TopicCosmosData{ dbData := &TopicCosmosData{
Id: cosmosDocId, Id: cosmosDocId,
Tn: t.DB.cosmosConfig.TenantName,
Cn: dbCollectionName, Cn: dbCollectionName,
Pk: pk, Pk: pk,
Timestamp: time.Now().Unix(), Timestamp: time.Now().Unix(),
@ -364,6 +367,7 @@ func (t *topicsStatements) InsertTopics(
dbData := &MessageCosmosData{ dbData := &MessageCosmosData{
Id: cosmosDocId, Id: cosmosDocId,
Tn: t.DB.cosmosConfig.TenantName,
Cn: dbCollectionName, Cn: dbCollectionName,
Pk: pk, Pk: pk,
Timestamp: time.Now().Unix(), Timestamp: time.Now().Unix(),

View file

@ -57,6 +57,7 @@ type DeviceKeyCosmosNumber struct {
type DeviceKeyCosmosData struct { type DeviceKeyCosmosData struct {
Id string `json:"id"` Id string `json:"id"`
Pk string `json:"_pk"` Pk string `json:"_pk"`
Tn string `json:"_sid"`
Cn string `json:"_cn"` Cn string `json:"_cn"`
ETag string `json:"_etag"` ETag string `json:"_etag"`
Timestamp int64 `json:"_ts"` Timestamp int64 `json:"_ts"`
@ -80,14 +81,14 @@ const selectBatchDeviceKeysSQL = "" +
// "SELECT MAX(stream_id) FROM keyserver_device_keys WHERE user_id=$1" // "SELECT MAX(stream_id) FROM keyserver_device_keys WHERE user_id=$1"
const selectMaxStreamForUserSQL = "" + const selectMaxStreamForUserSQL = "" +
"select max(c.mx_keyserver_device_key.stream_id) as number from c where c._cn = @x1 " + "select max(c.mx_keyserver_device_key.stream_id) as number from c where c._sid = @x1 and c._cn = @x2 " +
"and c.mx_keyserver_device_key.user_id = @x2 " "and c.mx_keyserver_device_key.user_id = @x3 "
// "SELECT COUNT(*) FROM keyserver_device_keys WHERE user_id=$1 AND stream_id IN ($2)" // "SELECT COUNT(*) FROM keyserver_device_keys WHERE user_id=$1 AND stream_id IN ($2)"
const countStreamIDsForUserSQL = "" + const countStreamIDsForUserSQL = "" +
"select count(c._ts) as number from c where c._cn = @x1 " + "select count(c._ts) as number from c where c._sid = @x1 and c._cn = @x2 " +
"and c.mx_keyserver_device_key.user_id = @x2 " + "and c.mx_keyserver_device_key.user_id = @x3 " +
"and ARRAY_CONTAINS(@x3, c.mx_keyserver_device_key.stream_id) " "and ARRAY_CONTAINS(@x4, c.mx_keyserver_device_key.stream_id) "
const selectAllDeviceKeysSQL = "" + const selectAllDeviceKeysSQL = "" +
"select * from c where c._cn = @x1 " + "select * from c where c._cn = @x1 " +
@ -98,7 +99,7 @@ const selectAllDeviceKeysSQL = "" +
func queryDeviceKey(s *deviceKeysStatements, ctx context.Context, qry string, params map[string]interface{}) ([]DeviceKeyCosmosData, error) { func queryDeviceKey(s *deviceKeysStatements, ctx context.Context, qry string, params map[string]interface{}) ([]DeviceKeyCosmosData, error) {
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var response []DeviceKeyCosmosData var response []DeviceKeyCosmosData
var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk) var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk)
@ -122,7 +123,7 @@ func queryDeviceKeyNumber(s *deviceKeysStatements, ctx context.Context, qry stri
var optionsQry = cosmosdbapi.GetQueryAllPartitionsDocumentsOptions() var optionsQry = cosmosdbapi.GetQueryAllPartitionsDocumentsOptions()
var query = cosmosdbapi.GetQuery(qry, params) var query = cosmosdbapi.GetQuery(qry, params)
var _, err = cosmosdbapi.GetClient(s.db.connection).QueryDocuments( var _, _ = cosmosdbapi.GetClient(s.db.connection).QueryDocuments(
ctx, ctx,
s.db.cosmosConfig.DatabaseName, s.db.cosmosConfig.DatabaseName,
s.db.cosmosConfig.ContainerName, s.db.cosmosConfig.ContainerName,
@ -130,9 +131,10 @@ func queryDeviceKeyNumber(s *deviceKeysStatements, ctx context.Context, qry stri
&response, &response,
optionsQry) optionsQry)
if err != nil { //WHen there is no data these GroupBy queries return errors
return nil, err // if err != nil {
} // return nil, err
// }
if len(response) == 0 { if len(response) == 0 {
return nil, cosmosdbutil.ErrNoRows return nil, cosmosdbutil.ErrNoRows
@ -301,8 +303,8 @@ func (s *deviceKeysStatements) SelectDeviceKeysJSON(ctx context.Context, keys []
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
// UNIQUE (user_id, device_id) // UNIQUE (user_id, device_id)
docId := fmt.Sprintf("%s_%s", key.UserID, key.DeviceID) docId := fmt.Sprintf("%s_%s", key.UserID, key.DeviceID)
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
response, err := getDeviceKey(s, ctx, pk, cosmosDocId) response, err := getDeviceKey(s, ctx, pk, cosmosDocId)
@ -333,12 +335,13 @@ func (s *deviceKeysStatements) SelectMaxStreamIDForUser(ctx context.Context, txn
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
params := map[string]interface{}{ params := map[string]interface{}{
"@x1": dbCollectionName, "@x1": s.db.cosmosConfig.TenantName,
"@x2": userID, "@x2": dbCollectionName,
"@x3": userID,
} }
// err = sqlutil.TxStmt(txn, s.selectMaxStreamForUserStmt).QueryRowContext(ctx, userID).Scan(&nullStream) // err = sqlutil.TxStmt(txn, s.selectMaxStreamForUserStmt).QueryRowContext(ctx, userID).Scan(&nullStream)
response, err := queryDeviceKeyNumber(s, ctx, countStreamIDsForUserSQL, params) response, err := queryDeviceKeyNumber(s, ctx, selectMaxStreamForUserSQL, params)
if err != nil { if err != nil {
if err == cosmosdbutil.ErrNoRows { if err == cosmosdbutil.ErrNoRows {
@ -370,9 +373,10 @@ func (s *deviceKeysStatements) CountStreamIDsForUser(ctx context.Context, userID
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
params := map[string]interface{}{ params := map[string]interface{}{
"@x1": dbCollectionName, "@x1": s.db.cosmosConfig.TenantName,
"@x2": userID, "@x2": dbCollectionName,
"@x3": iStreamIDs, "@x3": userID,
"@x4": iStreamIDs,
} }
// query := strings.Replace(countStreamIDsForUserSQL, "($2)", sqlutil.QueryVariadicOffset(len(streamIDs), 1), 1) // query := strings.Replace(countStreamIDsForUserSQL, "($2)", sqlutil.QueryVariadicOffset(len(streamIDs), 1), 1)
@ -401,16 +405,17 @@ func (s *deviceKeysStatements) InsertDeviceKeys(ctx context.Context, txn *sql.Tx
// " ON CONFLICT (user_id, device_id)" + // " ON CONFLICT (user_id, device_id)" +
// " DO UPDATE SET key_json = $4, stream_id = $5, display_name = $6" // " DO UPDATE SET key_json = $4, stream_id = $5, display_name = $6"
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
for _, key := range keys { for _, key := range keys {
now := time.Now().Unix() now := time.Now().Unix()
// UNIQUE (user_id, device_id) // UNIQUE (user_id, device_id)
docId := fmt.Sprintf("%s_%s", key.UserID, key.DeviceID) docId := fmt.Sprintf("%s_%s", key.UserID, key.DeviceID)
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
dbData := &DeviceKeyCosmosData{ dbData := &DeviceKeyCosmosData{
Id: cosmosDocId, Id: cosmosDocId,
Tn: s.db.cosmosConfig.TenantName,
Cn: dbCollectionName, Cn: dbCollectionName,
Pk: pk, Pk: pk,
Timestamp: now, Timestamp: now,

View file

@ -50,6 +50,7 @@ type KeyChangeUserMaxCosmosData struct {
type KeyChangeCosmosData struct { type KeyChangeCosmosData struct {
Id string `json:"id"` Id string `json:"id"`
Pk string `json:"_pk"` Pk string `json:"_pk"`
Tn string `json:"_sid"`
Cn string `json:"_cn"` Cn string `json:"_cn"`
ETag string `json:"_etag"` ETag string `json:"_etag"`
Timestamp int64 `json:"_ts"` Timestamp int64 `json:"_ts"`
@ -70,10 +71,10 @@ type KeyChangeCosmosData struct {
// "SELECT user_id, MAX(offset) FROM keyserver_key_changes WHERE partition = $1 AND offset > $2 AND offset <= $3 GROUP BY user_id" // "SELECT user_id, MAX(offset) FROM keyserver_key_changes WHERE partition = $1 AND offset > $2 AND offset <= $3 GROUP BY user_id"
const selectKeyChangesSQL = "" + const selectKeyChangesSQL = "" +
"select c.mx_keyserver_key_change.user_id as user_id, max(c.mx_keyserver_key_change._offset) as max_offset " + "select c.mx_keyserver_key_change.user_id as user_id, max(c.mx_keyserver_key_change._offset) as max_offset " +
"from c where c._cn = @x1 " + "from c where c._sid = @x1 and c._cn = @x2 " +
"and c.mx_keyserver_key_change.partition = @x2 " + "and c.mx_keyserver_key_change.partition = @x3 " +
"and c.mx_keyserver_key_change._offset > @x3 " + "and c.mx_keyserver_key_change._offset > @x4 " +
"and c.mx_keyserver_key_change._offset < @x4 " + "and c.mx_keyserver_key_change._offset < @x5 " +
"group by c.mx_keyserver_key_change.user_id " "group by c.mx_keyserver_key_change.user_id "
type keyChangesStatements struct { type keyChangesStatements struct {
@ -121,10 +122,10 @@ func (s *keyChangesStatements) InsertKeyChange(ctx context.Context, partition in
// " DO UPDATE SET user_id = $3" // " DO UPDATE SET user_id = $3"
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
// UNIQUE (partition, offset) // UNIQUE (partition, offset)
docId := fmt.Sprintf("%d_%d", partition, offset) docId := fmt.Sprintf("%d_%d", partition, offset)
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
data := KeyChangeCosmos{ data := KeyChangeCosmos{
Offset: offset, Offset: offset,
@ -134,6 +135,7 @@ func (s *keyChangesStatements) InsertKeyChange(ctx context.Context, partition in
dbData := KeyChangeCosmosData{ dbData := KeyChangeCosmosData{
Id: cosmosDocId, Id: cosmosDocId,
Tn: s.db.cosmosConfig.TenantName,
Cn: dbCollectionName, Cn: dbCollectionName,
Pk: pk, Pk: pk,
Timestamp: time.Now().Unix(), Timestamp: time.Now().Unix(),
@ -165,10 +167,11 @@ func (s *keyChangesStatements) SelectKeyChanges(
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
params := map[string]interface{}{ params := map[string]interface{}{
"@x1": dbCollectionName, "@x1": s.db.cosmosConfig.TenantName,
"@x2": partition, "@x2": dbCollectionName,
"@x3": fromOffset, "@x3": partition,
"@x4": toOffset, "@x4": fromOffset,
"@x5": toOffset,
} }
response, err := queryKeyChangeUserMax(s, ctx, s.selectKeyChangesStmt, params) response, err := queryKeyChangeUserMax(s, ctx, s.selectKeyChangesStmt, params)

View file

@ -61,6 +61,7 @@ type OneTimeKeyAlgoNumberCosmosData struct {
type OneTimeKeyCosmosData struct { type OneTimeKeyCosmosData struct {
Id string `json:"id"` Id string `json:"id"`
Pk string `json:"_pk"` Pk string `json:"_pk"`
Tn string `json:"_sid"`
Cn string `json:"_cn"` Cn string `json:"_cn"`
ETag string `json:"_etag"` ETag string `json:"_etag"`
Timestamp int64 `json:"_ts"` Timestamp int64 `json:"_ts"`
@ -111,7 +112,7 @@ func queryOneTimeKey(s *oneTimeKeysStatements, ctx context.Context, qry string,
var response []OneTimeKeyCosmosData var response []OneTimeKeyCosmosData
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk) var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk)
var query = cosmosdbapi.GetQuery(qry, params) var query = cosmosdbapi.GetQuery(qry, params)
var _, err = cosmosdbapi.GetClient(s.db.connection).QueryDocuments( var _, err = cosmosdbapi.GetClient(s.db.connection).QueryDocuments(
@ -133,7 +134,7 @@ func queryOneTimeKeyAlgoCount(s *oneTimeKeysStatements, ctx context.Context, qry
var response []OneTimeKeyAlgoNumberCosmosData var response []OneTimeKeyAlgoNumberCosmosData
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk) var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk)
// var optionsQry = cosmosdbapi.GetQueryAllPartitionsDocumentsOptions() // var optionsQry = cosmosdbapi.GetQueryAllPartitionsDocumentsOptions()
var query = cosmosdbapi.GetQuery(qry, params) var query = cosmosdbapi.GetQuery(qry, params)
@ -273,7 +274,7 @@ func (s *oneTimeKeysStatements) InsertOneTimeKeys(
} }
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
for keyIDWithAlgo, keyJSON := range keys.KeyJSON { for keyIDWithAlgo, keyJSON := range keys.KeyJSON {
@ -286,7 +287,7 @@ func (s *oneTimeKeysStatements) InsertOneTimeKeys(
// UNIQUE (user_id, device_id, key_id, algorithm) // UNIQUE (user_id, device_id, key_id, algorithm)
docId := fmt.Sprintf("%s_%s_%s_%s", keys.UserID, keys.DeviceID, keyID, algo) docId := fmt.Sprintf("%s_%s_%s_%s", keys.UserID, keys.DeviceID, keyID, algo)
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
data := OneTimeKeyCosmos{ data := OneTimeKeyCosmos{
Algorithm: algo, Algorithm: algo,
@ -298,6 +299,7 @@ func (s *oneTimeKeysStatements) InsertOneTimeKeys(
dbData := &OneTimeKeyCosmosData{ dbData := &OneTimeKeyCosmosData{
Id: cosmosDocId, Id: cosmosDocId,
Tn: s.db.cosmosConfig.TenantName,
Cn: dbCollectionName, Cn: dbCollectionName,
Pk: pk, Pk: pk,
Timestamp: now, Timestamp: now,

View file

@ -46,6 +46,7 @@ type StaleDeviceListCosmos struct {
type StaleDeviceListCosmosData struct { type StaleDeviceListCosmosData struct {
Id string `json:"id"` Id string `json:"id"`
Pk string `json:"_pk"` Pk string `json:"_pk"`
Tn string `json:"_sid"`
Cn string `json:"_cn"` Cn string `json:"_cn"`
ETag string `json:"_etag"` ETag string `json:"_etag"`
Timestamp int64 `json:"_ts"` Timestamp int64 `json:"_ts"`
@ -60,9 +61,9 @@ type StaleDeviceListCosmosData struct {
// "SELECT user_id FROM keyserver_stale_device_lists WHERE is_stale = $1 AND domain = $2" // "SELECT user_id FROM keyserver_stale_device_lists WHERE is_stale = $1 AND domain = $2"
const selectStaleDeviceListsWithDomainsSQL = "" + const selectStaleDeviceListsWithDomainsSQL = "" +
"select * from c where c._cn = @x1 " + "select * from c where c._sid = @x1 and c._cn = @x2 " +
"and c.mx_keyserver_stale_device_list.is_stale = @x2 " + "and c.mx_keyserver_stale_device_list.is_stale = @x3 " +
"and c.mx_keyserver_stale_device_list.domain = @x3 " "and c.mx_keyserver_stale_device_list.domain = @x4 "
// "SELECT user_id FROM keyserver_stale_device_lists WHERE is_stale = $1" // "SELECT user_id FROM keyserver_stale_device_lists WHERE is_stale = $1"
const selectStaleDeviceListsSQL = "" + const selectStaleDeviceListsSQL = "" +
@ -120,10 +121,10 @@ func (s *staleDeviceListsStatements) InsertStaleDeviceList(ctx context.Context,
} }
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
// user_id TEXT PRIMARY KEY NOT NULL, // user_id TEXT PRIMARY KEY NOT NULL,
docId := userID docId := userID
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
data := StaleDeviceListCosmos{ data := StaleDeviceListCosmos{
Domain: string(domain), Domain: string(domain),
@ -133,6 +134,7 @@ func (s *staleDeviceListsStatements) InsertStaleDeviceList(ctx context.Context,
dbData := StaleDeviceListCosmosData{ dbData := StaleDeviceListCosmosData{
Id: cosmosDocId, Id: cosmosDocId,
Tn: s.db.cosmosConfig.TenantName,
Cn: dbCollectionName, Cn: dbCollectionName,
Pk: pk, Pk: pk,
Timestamp: time.Now().Unix(), Timestamp: time.Now().Unix(),
@ -159,8 +161,9 @@ func (s *staleDeviceListsStatements) SelectUserIDsWithStaleDeviceLists(ctx conte
// "SELECT user_id FROM keyserver_stale_device_lists WHERE is_stale = $1" // "SELECT user_id FROM keyserver_stale_device_lists WHERE is_stale = $1"
// rows, err := s.selectStaleDeviceListsStmt.QueryContext(ctx, true) // rows, err := s.selectStaleDeviceListsStmt.QueryContext(ctx, true)
params := map[string]interface{}{ params := map[string]interface{}{
"@x1": dbCollectionName, "@x1": s.db.cosmosConfig.TenantName,
"@x2": true, "@x2": dbCollectionName,
"@x3": true,
} }
rows, err := queryStaleDeviceList(s, ctx, s.selectStaleDeviceListsWithDomainsStmt, params) rows, err := queryStaleDeviceList(s, ctx, s.selectStaleDeviceListsWithDomainsStmt, params)

View file

@ -68,6 +68,7 @@ type MediaRepositoryCosmos struct {
type MediaRepositoryCosmosData struct { type MediaRepositoryCosmosData struct {
Id string `json:"id"` Id string `json:"id"`
Pk string `json:"_pk"` Pk string `json:"_pk"`
Tn string `json:"_sid"`
Cn string `json:"_cn"` Cn string `json:"_cn"`
ETag string `json:"_etag"` ETag string `json:"_etag"`
Timestamp int64 `json:"_ts"` Timestamp int64 `json:"_ts"`
@ -100,7 +101,7 @@ type mediaStatements struct {
func queryMediaRepository(s *mediaStatements, ctx context.Context, qry string, params map[string]interface{}) ([]MediaRepositoryCosmosData, error) { func queryMediaRepository(s *mediaStatements, ctx context.Context, qry string, params map[string]interface{}) ([]MediaRepositoryCosmosData, error) {
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var response []MediaRepositoryCosmosData var response []MediaRepositoryCosmosData
var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk) var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk)
@ -157,8 +158,8 @@ func (s *mediaStatements) insertMedia(
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
// CREATE UNIQUE INDEX IF NOT EXISTS mediaapi_media_repository_index ON mediaapi_media_repository (media_id, media_origin); // CREATE UNIQUE INDEX IF NOT EXISTS mediaapi_media_repository_index ON mediaapi_media_repository (media_id, media_origin);
docId := fmt.Sprintf("%s_%s", mediaMetadata.MediaID, mediaMetadata.Origin) docId := fmt.Sprintf("%s_%s", mediaMetadata.MediaID, mediaMetadata.Origin)
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
data := MediaRepositoryCosmos{ data := MediaRepositoryCosmos{
MediaID: string(mediaMetadata.MediaID), MediaID: string(mediaMetadata.MediaID),
@ -173,6 +174,7 @@ func (s *mediaStatements) insertMedia(
dbData := &MediaRepositoryCosmosData{ dbData := &MediaRepositoryCosmosData{
Id: cosmosDocId, Id: cosmosDocId,
Tn: s.db.cosmosConfig.TenantName,
Cn: dbCollectionName, Cn: dbCollectionName,
Pk: pk, Pk: pk,
Timestamp: time.Now().Unix(), Timestamp: time.Now().Unix(),
@ -217,8 +219,8 @@ func (s *mediaStatements) selectMedia(
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
// CREATE UNIQUE INDEX IF NOT EXISTS mediaapi_media_repository_index ON mediaapi_media_repository (media_id, media_origin); // CREATE UNIQUE INDEX IF NOT EXISTS mediaapi_media_repository_index ON mediaapi_media_repository (media_id, media_origin);
docId := fmt.Sprintf("%s_%s", mediaMetadata.MediaID, mediaMetadata.Origin) docId := fmt.Sprintf("%s_%s", mediaMetadata.MediaID, mediaMetadata.Origin)
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
// err := s.selectMediaStmt.QueryRowContext( // err := s.selectMediaStmt.QueryRowContext(
// ctx, mediaMetadata.MediaID, mediaMetadata.Origin, // ctx, mediaMetadata.MediaID, mediaMetadata.Origin,

View file

@ -57,6 +57,7 @@ type ThumbnailCosmos struct {
type ThumbnailCosmosData struct { type ThumbnailCosmosData struct {
Id string `json:"id"` Id string `json:"id"`
Pk string `json:"_pk"` Pk string `json:"_pk"`
Tn string `json:"_sid"`
Cn string `json:"_cn"` Cn string `json:"_cn"`
ETag string `json:"_etag"` ETag string `json:"_etag"`
Timestamp int64 `json:"_ts"` Timestamp int64 `json:"_ts"`
@ -91,7 +92,7 @@ type thumbnailStatements struct {
func queryThumbnail(s *thumbnailStatements, ctx context.Context, qry string, params map[string]interface{}) ([]ThumbnailCosmosData, error) { func queryThumbnail(s *thumbnailStatements, ctx context.Context, qry string, params map[string]interface{}) ([]ThumbnailCosmosData, error) {
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var response []ThumbnailCosmosData var response []ThumbnailCosmosData
var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk) var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk)
@ -155,8 +156,8 @@ func (s *thumbnailStatements) insertThumbnail(
thumbnailMetadata.ThumbnailSize.Height, thumbnailMetadata.ThumbnailSize.Height,
thumbnailMetadata.ThumbnailSize.ResizeMethod, thumbnailMetadata.ThumbnailSize.ResizeMethod,
) )
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
// _, err := stmt.ExecContext( // _, err := stmt.ExecContext(
// ctx, // ctx,
@ -183,6 +184,7 @@ func (s *thumbnailStatements) insertThumbnail(
dbData := &ThumbnailCosmosData{ dbData := &ThumbnailCosmosData{
Id: cosmosDocId, Id: cosmosDocId,
Tn: s.db.cosmosConfig.TenantName,
Cn: dbCollectionName, Cn: dbCollectionName,
Pk: pk, Pk: pk,
Timestamp: time.Now().Unix(), Timestamp: time.Now().Unix(),
@ -230,8 +232,8 @@ func (s *thumbnailStatements) selectThumbnail(
height, height,
resizeMethod, resizeMethod,
) )
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
// row := sqlutil.TxStmt(txn, s.selectOutboundPeeksStmt).QueryRowContext(ctx, roomID) // row := sqlutil.TxStmt(txn, s.selectOutboundPeeksStmt).QueryRowContext(ctx, roomID)
row, err := getThumbnail(s, ctx, pk, cosmosDocId) row, err := getThumbnail(s, ctx, pk, cosmosDocId)

View file

@ -42,6 +42,7 @@ type EventJSONCosmos struct {
type EventJSONCosmosData struct { type EventJSONCosmosData struct {
Id string `json:"id"` Id string `json:"id"`
Pk string `json:"_pk"` Pk string `json:"_pk"`
Tn string `json:"_sid"`
Cn string `json:"_cn"` Cn string `json:"_cn"`
ETag string `json:"_etag"` ETag string `json:"_etag"`
Timestamp int64 `json:"_ts"` Timestamp int64 `json:"_ts"`
@ -72,7 +73,7 @@ type eventJSONStatements struct {
func queryEventJSON(s *eventJSONStatements, ctx context.Context, qry string, params map[string]interface{}) ([]EventJSONCosmosData, error) { func queryEventJSON(s *eventJSONStatements, ctx context.Context, qry string, params map[string]interface{}) ([]EventJSONCosmosData, error) {
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var response []EventJSONCosmosData var response []EventJSONCosmosData
var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk) var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk)
@ -117,8 +118,8 @@ func (s *eventJSONStatements) InsertEventJSON(
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
docId := fmt.Sprintf("%d", eventNID) docId := fmt.Sprintf("%d", eventNID)
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
data := EventJSONCosmos{ data := EventJSONCosmos{
EventNID: int64(eventNID), EventNID: int64(eventNID),
@ -127,6 +128,7 @@ func (s *eventJSONStatements) InsertEventJSON(
var dbData = EventJSONCosmosData{ var dbData = EventJSONCosmosData{
Id: cosmosDocId, Id: cosmosDocId,
Tn: s.db.cosmosConfig.TenantName,
Cn: dbCollectionName, Cn: dbCollectionName,
Pk: pk, Pk: pk,
Timestamp: time.Now().Unix(), Timestamp: time.Now().Unix(),

View file

@ -46,6 +46,7 @@ type EventStateKeysCosmos struct {
type EventStateKeysCosmosData struct { type EventStateKeysCosmosData struct {
Id string `json:"id"` Id string `json:"id"`
Pk string `json:"_pk"` Pk string `json:"_pk"`
Tn string `json:"_sid"`
Cn string `json:"_cn"` Cn string `json:"_cn"`
ETag string `json:"_etag"` ETag string `json:"_etag"`
Timestamp int64 `json:"_ts"` Timestamp int64 `json:"_ts"`
@ -91,7 +92,7 @@ type eventStateKeyStatements struct {
func queryEventStateKeys(s *eventStateKeyStatements, ctx context.Context, qry string, params map[string]interface{}) ([]EventStateKeysCosmosData, error) { func queryEventStateKeys(s *eventStateKeyStatements, ctx context.Context, qry string, params map[string]interface{}) ([]EventStateKeysCosmosData, error) {
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var response []EventStateKeysCosmosData var response []EventStateKeysCosmosData
var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk) var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk)
@ -152,8 +153,8 @@ func ensureEventStateKeys(s *eventStateKeyStatements, ctx context.Context) {
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
// event_state_key TEXT NOT NULL UNIQUE // event_state_key TEXT NOT NULL UNIQUE
docId := "" docId := ""
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
data := EventStateKeysCosmos{ data := EventStateKeysCosmos{
EventStateKey: "", EventStateKey: "",
@ -163,6 +164,7 @@ func ensureEventStateKeys(s *eventStateKeyStatements, ctx context.Context) {
// event_state_key_nid INTEGER PRIMARY KEY AUTOINCREMENT, // event_state_key_nid INTEGER PRIMARY KEY AUTOINCREMENT,
dbData := EventStateKeysCosmosData{ dbData := EventStateKeysCosmosData{
Id: cosmosDocId, Id: cosmosDocId,
Tn: s.db.cosmosConfig.TenantName,
Cn: dbCollectionName, Cn: dbCollectionName,
Pk: pk, Pk: pk,
Timestamp: time.Now().Unix(), Timestamp: time.Now().Unix(),
@ -201,8 +203,8 @@ func (s *eventStateKeyStatements) InsertEventStateKeyNID(
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
// event_state_key TEXT NOT NULL UNIQUE // event_state_key TEXT NOT NULL UNIQUE
docId := eventStateKey docId := eventStateKey
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
existing, _ := getEventStateKeys(s, ctx, pk, cosmosDocId) existing, _ := getEventStateKeys(s, ctx, pk, cosmosDocId)
@ -222,6 +224,7 @@ func (s *eventStateKeyStatements) InsertEventStateKeyNID(
// event_state_key_nid INTEGER PRIMARY KEY AUTOINCREMENT, // event_state_key_nid INTEGER PRIMARY KEY AUTOINCREMENT,
dbData = EventStateKeysCosmosData{ dbData = EventStateKeysCosmosData{
Id: cosmosDocId, Id: cosmosDocId,
Tn: s.db.cosmosConfig.TenantName,
Cn: dbCollectionName, Cn: dbCollectionName,
Pk: pk, Pk: pk,
Timestamp: time.Now().Unix(), Timestamp: time.Now().Unix(),

View file

@ -46,6 +46,7 @@ import (
type EventTypeCosmosData struct { type EventTypeCosmosData struct {
Id string `json:"id"` Id string `json:"id"`
Pk string `json:"_pk"` Pk string `json:"_pk"`
Tn string `json:"_sid"`
Cn string `json:"_cn"` Cn string `json:"_cn"`
ETag string `json:"_etag"` ETag string `json:"_etag"`
Timestamp int64 `json:"_ts"` Timestamp int64 `json:"_ts"`
@ -119,7 +120,7 @@ func NewCosmosDBEventTypesTable(db *Database) (tables.EventTypes, error) {
func queryEventTypes(s *eventTypeStatements, ctx context.Context, qry string, params map[string]interface{}) ([]EventTypeCosmosData, error) { func queryEventTypes(s *eventTypeStatements, ctx context.Context, qry string, params map[string]interface{}) ([]EventTypeCosmosData, error) {
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var response []EventTypeCosmosData var response []EventTypeCosmosData
var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk) var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk)
@ -167,11 +168,12 @@ func insertEventTypeCore(s *eventTypeStatements, ctx context.Context, eventType
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
//Unique on eventType //Unique on eventType
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, eventType.EventType) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, eventType.EventType)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var dbData = EventTypeCosmosData{ var dbData = EventTypeCosmosData{
Id: cosmosDocId, Id: cosmosDocId,
Tn: s.db.cosmosConfig.TenantName,
Cn: dbCollectionName, Cn: dbCollectionName,
Pk: pk, Pk: pk,
Timestamp: time.Now().Unix(), Timestamp: time.Now().Unix(),
@ -248,8 +250,8 @@ func ensureEventTypes(s *eventTypeStatements, ctx context.Context) error {
func selectEventTypeCore(s *eventTypeStatements, ctx context.Context, eventType string) (*EventTypeCosmos, error) { func selectEventTypeCore(s *eventTypeStatements, ctx context.Context, eventType string) (*EventTypeCosmos, error) {
var response EventTypeCosmosData var response EventTypeCosmosData
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, eventType) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, eventType)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
err := cosmosdbapi.GetDocumentOrNil( err := cosmosdbapi.GetDocumentOrNil(
s.db.connection, s.db.connection,
s.db.cosmosConfig, s.db.cosmosConfig,

View file

@ -67,6 +67,7 @@ type EventCosmosMaxDepth struct {
type EventCosmosData struct { type EventCosmosData struct {
Id string `json:"id"` Id string `json:"id"`
Pk string `json:"_pk"` Pk string `json:"_pk"`
Tn string `json:"_sid"`
Cn string `json:"_cn"` Cn string `json:"_cn"`
ETag string `json:"_etag"` ETag string `json:"_etag"`
Timestamp int64 `json:"_ts"` Timestamp int64 `json:"_ts"`
@ -143,8 +144,8 @@ const bulkSelectEventNIDSQL = "" +
// "SELECT COALESCE(MAX(depth) + 1, 0) FROM roomserver_events WHERE event_nid IN ($1)" // "SELECT COALESCE(MAX(depth) + 1, 0) FROM roomserver_events WHERE event_nid IN ($1)"
const selectMaxEventDepthSQL = "" + const selectMaxEventDepthSQL = "" +
"select sub.maxinner != null ? sub.maxinner + 1 : 0 as maxdepth from " + "select sub.maxinner != null ? sub.maxinner + 1 : 0 as maxdepth from " +
"(select MAX(c.mx_roomserver_event.depth) maxinner from c where c._cn = @x1 " + "(select MAX(c.mx_roomserver_event.depth) maxinner from c where c._sid = @x1 and c._cn = @x2 " +
" and ARRAY_CONTAINS(@x2, c.mx_roomserver_event.event_nid)) sub" " and ARRAY_CONTAINS(@x3, c.mx_roomserver_event.event_nid)) sub"
// "SELECT event_nid, room_nid FROM roomserver_events WHERE event_nid IN ($1)" // "SELECT event_nid, room_nid FROM roomserver_events WHERE event_nid IN ($1)"
const selectRoomNIDsForEventNIDsSQL = "" + const selectRoomNIDsForEventNIDsSQL = "" +
@ -205,7 +206,7 @@ func mapFromEventNIDArray(eventNIDs []types.EventNID) []int64 {
func queryEvent(s *eventStatements, ctx context.Context, qry string, params map[string]interface{}) ([]EventCosmosData, error) { func queryEvent(s *eventStatements, ctx context.Context, qry string, params map[string]interface{}) ([]EventCosmosData, error) {
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var response []EventCosmosData var response []EventCosmosData
var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk) var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk)
@ -341,8 +342,8 @@ func (s *eventStatements) InsertEvent(
// event_id TEXT NOT NULL UNIQUE, // event_id TEXT NOT NULL UNIQUE,
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
docId := eventID docId := eventID
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
dbData, errGet := getEvent(s, ctx, pk, cosmosDocId) dbData, errGet := getEvent(s, ctx, pk, cosmosDocId)
@ -368,6 +369,7 @@ func (s *eventStatements) InsertEvent(
dbData = &EventCosmosData{ dbData = &EventCosmosData{
Id: cosmosDocId, Id: cosmosDocId,
Tn: s.db.cosmosConfig.TenantName,
Cn: dbCollectionName, Cn: dbCollectionName,
Pk: pk, Pk: pk,
Timestamp: time.Now().Unix(), Timestamp: time.Now().Unix(),
@ -425,9 +427,9 @@ func (s *eventStatements) SelectEvent(
// "SELECT event_nid, state_snapshot_nid FROM roomserver_events WHERE event_id = $1" // "SELECT event_nid, state_snapshot_nid FROM roomserver_events WHERE event_id = $1"
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
docId := eventID docId := eventID
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
var response, err = getEvent(s, ctx, pk, cosmosDocId) var response, err = getEvent(s, ctx, pk, cosmosDocId)
if err != nil { if err != nil {
return 0, 0, err return 0, 0, err
@ -783,8 +785,9 @@ func (s *eventStatements) SelectMaxEventDepth(ctx context.Context, txn *sql.Tx,
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
var response []EventCosmosMaxDepth var response []EventCosmosMaxDepth
params := map[string]interface{}{ params := map[string]interface{}{
"@x1": dbCollectionName, "@x1": s.db.cosmosConfig.TenantName,
"@x2": eventNIDs, "@x2": dbCollectionName,
"@x3": eventNIDs,
} }
var optionsQry = cosmosdbapi.GetQueryAllPartitionsDocumentsOptions() var optionsQry = cosmosdbapi.GetQueryAllPartitionsDocumentsOptions()

View file

@ -53,6 +53,7 @@ type InviteCosmos struct {
type InviteCosmosData struct { type InviteCosmosData struct {
Id string `json:"id"` Id string `json:"id"`
Pk string `json:"_pk"` Pk string `json:"_pk"`
Tn string `json:"_sid"`
Cn string `json:"_cn"` Cn string `json:"_cn"`
ETag string `json:"_etag"` ETag string `json:"_etag"`
Timestamp int64 `json:"_ts"` Timestamp int64 `json:"_ts"`
@ -100,7 +101,7 @@ type inviteStatements struct {
func queryInvite(s *inviteStatements, ctx context.Context, qry string, params map[string]interface{}) ([]InviteCosmosData, error) { func queryInvite(s *inviteStatements, ctx context.Context, qry string, params map[string]interface{}) ([]InviteCosmosData, error) {
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var response []InviteCosmosData var response []InviteCosmosData
var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk) var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk)
@ -186,11 +187,12 @@ func (s *inviteStatements) InsertInviteEvent(
// invite_event_id TEXT PRIMARY KEY, // invite_event_id TEXT PRIMARY KEY,
docId := inviteEventID docId := inviteEventID
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var dbData = InviteCosmosData{ var dbData = InviteCosmosData{
Id: cosmosDocId, Id: cosmosDocId,
Tn: s.db.cosmosConfig.TenantName,
Cn: dbCollectionName, Cn: dbCollectionName,
Pk: pk, Pk: pk,
Timestamp: time.Now().Unix(), Timestamp: time.Now().Unix(),

View file

@ -54,6 +54,7 @@ type MembershipCosmos struct {
type MembershipCosmosData struct { type MembershipCosmosData struct {
Id string `json:"id"` Id string `json:"id"`
Pk string `json:"_pk"` Pk string `json:"_pk"`
Tn string `json:"_sid"`
Cn string `json:"_cn"` Cn string `json:"_cn"`
ETag string `json:"_etag"` ETag string `json:"_etag"`
Timestamp int64 `json:"_ts"` Timestamp int64 `json:"_ts"`
@ -177,7 +178,7 @@ type membershipStatements struct {
func queryMembership(s *membershipStatements, ctx context.Context, qry string, params map[string]interface{}) ([]MembershipCosmosData, error) { func queryMembership(s *membershipStatements, ctx context.Context, qry string, params map[string]interface{}) ([]MembershipCosmosData, error) {
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var response []MembershipCosmosData var response []MembershipCosmosData
var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk) var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk)
@ -262,8 +263,8 @@ func (s *membershipStatements) InsertMembership(
// UNIQUE (room_nid, target_nid) // UNIQUE (room_nid, target_nid)
docId := fmt.Sprintf("%d_%d", roomNID, targetUserNID) docId := fmt.Sprintf("%d_%d", roomNID, targetUserNID)
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
data := MembershipCosmos{ data := MembershipCosmos{
EventNID: 0, EventNID: 0,
@ -277,6 +278,7 @@ func (s *membershipStatements) InsertMembership(
var dbData = MembershipCosmosData{ var dbData = MembershipCosmosData{
Id: cosmosDocId, Id: cosmosDocId,
Tn: s.db.cosmosConfig.TenantName,
Cn: dbCollectionName, Cn: dbCollectionName,
Pk: pk, Pk: pk,
Timestamp: time.Now().Unix(), Timestamp: time.Now().Unix(),
@ -305,8 +307,8 @@ func (s *membershipStatements) SelectMembershipForUpdate(
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
docId := fmt.Sprintf("%d_%d", roomNID, targetUserNID) docId := fmt.Sprintf("%d_%d", roomNID, targetUserNID)
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
response, err := getMembership(s, ctx, pk, cosmosDocId) response, err := getMembership(s, ctx, pk, cosmosDocId)
if response != nil { if response != nil {
membership = tables.MembershipState(response.Membership.MembershipNID) membership = tables.MembershipState(response.Membership.MembershipNID)
@ -324,8 +326,8 @@ func (s *membershipStatements) SelectMembershipFromRoomAndTarget(
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
docId := fmt.Sprintf("%d_%d", roomNID, targetUserNID) docId := fmt.Sprintf("%d_%d", roomNID, targetUserNID)
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
response, err := getMembership(s, ctx, pk, cosmosDocId) response, err := getMembership(s, ctx, pk, cosmosDocId)
if response != nil { if response != nil {
eventNID = types.EventNID(response.Membership.EventNID) eventNID = types.EventNID(response.Membership.EventNID)
@ -412,8 +414,8 @@ func (s *membershipStatements) UpdateMembership(
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
docId := fmt.Sprintf("%d_%d", roomNID, targetUserNID) docId := fmt.Sprintf("%d_%d", roomNID, targetUserNID)
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
dbData, err := getMembership(s, ctx, pk, cosmosDocId) dbData, err := getMembership(s, ctx, pk, cosmosDocId)
if err != nil { if err != nil {
@ -467,7 +469,7 @@ func (s *membershipStatements) SelectJoinedUsersSetForRooms(ctx context.Context,
"@x1": dbCollectionName, "@x1": dbCollectionName,
"@x2": roomNIDs, "@x2": roomNIDs,
} }
var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var response []MembershipJoinedCountCosmosData var response []MembershipJoinedCountCosmosData
var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk) var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk)
@ -506,7 +508,7 @@ func (s *membershipStatements) SelectKnownUsers(ctx context.Context, userID type
"@x4": limit, "@x4": limit,
} }
var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var responseDistinctRoom []MembershipCosmos var responseDistinctRoom []MembershipCosmos
var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk) var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk)
@ -600,8 +602,8 @@ func (s *membershipStatements) UpdateForgetMembership(
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
docId := fmt.Sprintf("%d_%d", roomNID, targetUserNID) docId := fmt.Sprintf("%d_%d", roomNID, targetUserNID)
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
dbData, err := getMembership(s, ctx, pk, cosmosDocId) dbData, err := getMembership(s, ctx, pk, cosmosDocId)
if err != nil { if err != nil {

View file

@ -53,6 +53,7 @@ type PreviousEventCosmos struct {
type PreviousEventCosmosData struct { type PreviousEventCosmosData struct {
Id string `json:"id"` Id string `json:"id"`
Pk string `json:"_pk"` Pk string `json:"_pk"`
Tn string `json:"_sid"`
Cn string `json:"_cn"` Cn string `json:"_cn"`
ETag string `json:"_etag"` ETag string `json:"_etag"`
Timestamp int64 `json:"_ts"` Timestamp int64 `json:"_ts"`
@ -136,8 +137,8 @@ func (s *previousEventStatements) InsertPreviousEvent(
// TODO: Check value // TODO: Check value
// docId := fmt.Sprintf("%s_%s", previousEventID, previousEventReferenceSHA256) // docId := fmt.Sprintf("%s_%s", previousEventID, previousEventReferenceSHA256)
docId := previousEventID docId := previousEventID
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
// SELECT 1 FROM roomserver_previous_events // SELECT 1 FROM roomserver_previous_events
// WHERE previous_event_id = $1 AND previous_reference_sha256 = $2 // WHERE previous_event_id = $1 AND previous_reference_sha256 = $2
@ -160,6 +161,7 @@ func (s *previousEventStatements) InsertPreviousEvent(
dbData = PreviousEventCosmosData{ dbData = PreviousEventCosmosData{
Id: cosmosDocId, Id: cosmosDocId,
Tn: s.db.cosmosConfig.TenantName,
Cn: dbCollectionName, Cn: dbCollectionName,
Pk: pk, Pk: pk,
Timestamp: time.Now().Unix(), Timestamp: time.Now().Unix(),
@ -208,8 +210,8 @@ func (s *previousEventStatements) SelectPreviousEventExists(
// TODO: Check value // TODO: Check value
// docId := fmt.Sprintf("%s_%s", previousEventID, previousEventReferenceSHA256) // docId := fmt.Sprintf("%s_%s", previousEventID, previousEventReferenceSHA256)
docId := eventID docId := eventID
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, string(docId)) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, string(docId))
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
// SELECT 1 FROM roomserver_previous_events // SELECT 1 FROM roomserver_previous_events
// WHERE previous_event_id = $1 AND previous_reference_sha256 = $2 // WHERE previous_event_id = $1 AND previous_reference_sha256 = $2

View file

@ -43,6 +43,7 @@ type PublishCosmos struct {
type PublishCosmosData struct { type PublishCosmosData struct {
Id string `json:"id"` Id string `json:"id"`
Pk string `json:"_pk"` Pk string `json:"_pk"`
Tn string `json:"_sid"`
Cn string `json:"_cn"` Cn string `json:"_cn"`
ETag string `json:"_etag"` ETag string `json:"_etag"`
Timestamp int64 `json:"_ts"` Timestamp int64 `json:"_ts"`
@ -71,7 +72,7 @@ type publishedStatements struct {
func queryPublish(s *publishedStatements, ctx context.Context, qry string, params map[string]interface{}) ([]PublishCosmosData, error) { func queryPublish(s *publishedStatements, ctx context.Context, qry string, params map[string]interface{}) ([]PublishCosmosData, error) {
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var response []PublishCosmosData var response []PublishCosmosData
var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk) var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk)
@ -133,8 +134,8 @@ func (s *publishedStatements) UpsertRoomPublished(
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
// room_id TEXT NOT NULL PRIMARY KEY, // room_id TEXT NOT NULL PRIMARY KEY,
docId := roomID docId := roomID
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
data := PublishCosmos{ data := PublishCosmos{
RoomID: roomID, RoomID: roomID,
@ -143,6 +144,7 @@ func (s *publishedStatements) UpsertRoomPublished(
var dbData = PublishCosmosData{ var dbData = PublishCosmosData{
Id: cosmosDocId, Id: cosmosDocId,
Tn: s.db.cosmosConfig.TenantName,
Cn: dbCollectionName, Cn: dbCollectionName,
Pk: pk, Pk: pk,
Timestamp: time.Now().Unix(), Timestamp: time.Now().Unix(),
@ -169,8 +171,8 @@ func (s *publishedStatements) SelectPublishedFromRoomID(
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
// room_id TEXT NOT NULL PRIMARY KEY, // room_id TEXT NOT NULL PRIMARY KEY,
docId := roomID docId := roomID
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
response, err := getPublish(s, ctx, pk, cosmosDocId) response, err := getPublish(s, ctx, pk, cosmosDocId)
if err != nil { if err != nil {

View file

@ -47,6 +47,7 @@ type RedactionCosmos struct {
type RedactionCosmosData struct { type RedactionCosmosData struct {
Id string `json:"id"` Id string `json:"id"`
Pk string `json:"_pk"` Pk string `json:"_pk"`
Tn string `json:"_sid"`
Cn string `json:"_cn"` Cn string `json:"_cn"`
ETag string `json:"_etag"` ETag string `json:"_etag"`
Timestamp int64 `json:"_ts"` Timestamp int64 `json:"_ts"`
@ -81,7 +82,7 @@ type redactionStatements struct {
func queryRedaction(s *redactionStatements, ctx context.Context, qry string, params map[string]interface{}) ([]RedactionCosmosData, error) { func queryRedaction(s *redactionStatements, ctx context.Context, qry string, params map[string]interface{}) ([]RedactionCosmosData, error) {
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var response []RedactionCosmosData var response []RedactionCosmosData
var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk) var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk)
@ -154,8 +155,8 @@ func (s *redactionStatements) InsertRedaction(
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
// redaction_event_id TEXT PRIMARY KEY, // redaction_event_id TEXT PRIMARY KEY,
docId := info.RedactionEventID docId := info.RedactionEventID
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
data := RedactionCosmos{ data := RedactionCosmos{
RedactionEventID: info.RedactionEventID, RedactionEventID: info.RedactionEventID,
@ -165,6 +166,7 @@ func (s *redactionStatements) InsertRedaction(
var dbData = RedactionCosmosData{ var dbData = RedactionCosmosData{
Id: cosmosDocId, Id: cosmosDocId,
Tn: s.db.cosmosConfig.TenantName,
Cn: dbCollectionName, Cn: dbCollectionName,
Pk: pk, Pk: pk,
Timestamp: time.Now().Unix(), Timestamp: time.Now().Unix(),
@ -199,8 +201,8 @@ func (s *redactionStatements) SelectRedactionInfoByRedactionEventID(
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
// redaction_event_id TEXT PRIMARY KEY, // redaction_event_id TEXT PRIMARY KEY,
docId := redactionEventID docId := redactionEventID
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
response, err := getRedaction(s, ctx, pk, cosmosDocId) response, err := getRedaction(s, ctx, pk, cosmosDocId)
if err != nil { if err != nil {
@ -263,8 +265,8 @@ func (s *redactionStatements) MarkRedactionValidated(
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
// redaction_event_id TEXT PRIMARY KEY, // redaction_event_id TEXT PRIMARY KEY,
docId := redactionEventID docId := redactionEventID
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
response, err := getRedaction(s, ctx, pk, cosmosDocId) response, err := getRedaction(s, ctx, pk, cosmosDocId)
if err != nil { if err != nil {

View file

@ -43,6 +43,7 @@ type RoomAliasCosmos struct {
type RoomAliasCosmosData struct { type RoomAliasCosmosData struct {
Id string `json:"id"` Id string `json:"id"`
Pk string `json:"_pk"` Pk string `json:"_pk"`
Tn string `json:"_sid"`
Cn string `json:"_cn"` Cn string `json:"_cn"`
ETag string `json:"_etag"` ETag string `json:"_etag"`
Timestamp int64 `json:"_ts"` Timestamp int64 `json:"_ts"`
@ -82,7 +83,7 @@ type roomAliasesStatements struct {
func queryRoomAlias(s *roomAliasesStatements, ctx context.Context, qry string, params map[string]interface{}) ([]RoomAliasCosmosData, error) { func queryRoomAlias(s *roomAliasesStatements, ctx context.Context, qry string, params map[string]interface{}) ([]RoomAliasCosmosData, error) {
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var response []RoomAliasCosmosData var response []RoomAliasCosmosData
var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk) var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk)
@ -152,11 +153,12 @@ func (s *roomAliasesStatements) InsertRoomAlias(
// alias TEXT NOT NULL PRIMARY KEY, // alias TEXT NOT NULL PRIMARY KEY,
docId := alias docId := alias
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var dbData = RoomAliasCosmosData{ var dbData = RoomAliasCosmosData{
Id: cosmosDocId, Id: cosmosDocId,
Tn: s.db.cosmosConfig.TenantName,
Cn: dbCollectionName, Cn: dbCollectionName,
Pk: pk, Pk: pk,
Timestamp: time.Now().Unix(), Timestamp: time.Now().Unix(),
@ -184,8 +186,8 @@ func (s *roomAliasesStatements) SelectRoomIDFromAlias(
// alias TEXT NOT NULL PRIMARY KEY, // alias TEXT NOT NULL PRIMARY KEY,
docId := alias docId := alias
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
response, err := getRoomAlias(s, ctx, pk, cosmosDocId) response, err := getRoomAlias(s, ctx, pk, cosmosDocId)
if err != nil { if err != nil {
@ -235,8 +237,8 @@ func (s *roomAliasesStatements) SelectCreatorIDFromAlias(
// alias TEXT NOT NULL PRIMARY KEY, // alias TEXT NOT NULL PRIMARY KEY,
docId := alias docId := alias
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
response, err := getRoomAlias(s, ctx, pk, cosmosDocId) response, err := getRoomAlias(s, ctx, pk, cosmosDocId)
if err != nil { if err != nil {
@ -258,8 +260,8 @@ func (s *roomAliasesStatements) DeleteRoomAlias(
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
docId := alias docId := alias
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var options = cosmosdbapi.GetDeleteDocumentOptions(pk) var options = cosmosdbapi.GetDeleteDocumentOptions(pk)
var _, err = cosmosdbapi.GetClient(s.db.connection).DeleteDocument( var _, err = cosmosdbapi.GetClient(s.db.connection).DeleteDocument(
ctx, ctx,

View file

@ -44,6 +44,7 @@ import (
type RoomCosmosData struct { type RoomCosmosData struct {
Id string `json:"id"` Id string `json:"id"`
Pk string `json:"_pk"` Pk string `json:"_pk"`
Tn string `json:"_sid"`
Cn string `json:"_cn"` Cn string `json:"_cn"`
ETag string `json:"_etag"` ETag string `json:"_etag"`
Timestamp int64 `json:"_ts"` Timestamp int64 `json:"_ts"`
@ -146,7 +147,7 @@ func mapToRoomEventNIDArray(eventNIDs []int64) []types.EventNID {
func queryRoom(s *roomStatements, ctx context.Context, qry string, params map[string]interface{}) ([]RoomCosmosData, error) { func queryRoom(s *roomStatements, ctx context.Context, qry string, params map[string]interface{}) ([]RoomCosmosData, error) {
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var response []RoomCosmosData var response []RoomCosmosData
var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk) var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk)
@ -224,8 +225,8 @@ func (s *roomStatements) SelectRoomInfo(ctx context.Context, roomID string) (*ty
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
// room_id TEXT NOT NULL UNIQUE, // room_id TEXT NOT NULL UNIQUE,
docId := roomID docId := roomID
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
room, err := getRoom(s, ctx, pk, cosmosDocId) room, err := getRoom(s, ctx, pk, cosmosDocId)
if err != nil { if err != nil {
@ -253,8 +254,8 @@ func (s *roomStatements) InsertRoomNID(
// ON CONFLICT DO NOTHING; // ON CONFLICT DO NOTHING;
// room_id TEXT NOT NULL UNIQUE, // room_id TEXT NOT NULL UNIQUE,
docId := roomID docId := roomID
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
dbData, errGet := getRoom(s, ctx, pk, cosmosDocId) dbData, errGet := getRoom(s, ctx, pk, cosmosDocId)
@ -273,6 +274,7 @@ func (s *roomStatements) InsertRoomNID(
dbData = &RoomCosmosData{ dbData = &RoomCosmosData{
Id: cosmosDocId, Id: cosmosDocId,
Tn: s.db.cosmosConfig.TenantName,
Cn: dbCollectionName, Cn: dbCollectionName,
Pk: pk, Pk: pk,
Timestamp: time.Now().Unix(), Timestamp: time.Now().Unix(),
@ -307,8 +309,8 @@ func (s *roomStatements) SelectRoomNID(
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
// room_id TEXT NOT NULL UNIQUE, // room_id TEXT NOT NULL UNIQUE,
docId := roomID docId := roomID
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
room, err := getRoom(s, ctx, pk, cosmosDocId) room, err := getRoom(s, ctx, pk, cosmosDocId)
if err != nil { if err != nil {

View file

@ -53,6 +53,7 @@ type StateBlockCosmosMaxNID struct {
type StateBlockCosmosData struct { type StateBlockCosmosData struct {
Id string `json:"id"` Id string `json:"id"`
Pk string `json:"_pk"` Pk string `json:"_pk"`
Tn string `json:"_sid"`
Cn string `json:"_cn"` Cn string `json:"_cn"`
ETag string `json:"_etag"` ETag string `json:"_etag"`
Timestamp int64 `json:"_ts"` Timestamp int64 `json:"_ts"`
@ -67,7 +68,7 @@ type StateBlockCosmosData struct {
const selectNextStateBlockNIDSQL = "" + const selectNextStateBlockNIDSQL = "" +
"select sub.maxinner != null ? sub.maxinner + 1 : 1 as maxstateblocknid " + "select sub.maxinner != null ? sub.maxinner + 1 : 1 as maxstateblocknid " +
"from " + "from " +
"(select MAX(c.mx_roomserver_state_block.state_block_nid) maxinner from c where c._cn = @x1) as sub" "(select MAX(c.mx_roomserver_state_block.state_block_nid) maxinner from c where c._sid = @x1 and c._cn = @x2) as sub"
// Bulk state lookup by numeric state block ID. // Bulk state lookup by numeric state block ID.
// Sort by the state_block_nid, event_type_nid, event_state_key_nid // Sort by the state_block_nid, event_type_nid, event_state_key_nid
@ -120,7 +121,7 @@ type stateBlockStatements struct {
func queryStateBlock(s *stateBlockStatements, ctx context.Context, qry string, params map[string]interface{}) ([]StateBlockCosmosData, error) { func queryStateBlock(s *stateBlockStatements, ctx context.Context, qry string, params map[string]interface{}) ([]StateBlockCosmosData, error) {
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var response []StateBlockCosmosData var response []StateBlockCosmosData
var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk) var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk)
@ -169,11 +170,12 @@ func inertStateBlockCore(s *stateBlockStatements, ctx context.Context, stateBloc
// UNIQUE (state_block_nid, event_type_nid, event_state_key_nid) // UNIQUE (state_block_nid, event_type_nid, event_state_key_nid)
docId := fmt.Sprintf("%d_%d_%d", data.StateBlockNID, data.EventTypeNID, data.EventStateKeyNID) docId := fmt.Sprintf("%d_%d_%d", data.StateBlockNID, data.EventTypeNID, data.EventStateKeyNID)
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var dbData = StateBlockCosmosData{ var dbData = StateBlockCosmosData{
Id: cosmosDocId, Id: cosmosDocId,
Tn: s.db.cosmosConfig.TenantName,
Cn: dbCollectionName, Cn: dbCollectionName,
Pk: pk, Pk: pk,
Timestamp: time.Now().Unix(), Timestamp: time.Now().Unix(),
@ -196,7 +198,8 @@ func getNextStateBlockNID(s *stateBlockStatements, ctx context.Context) (int64,
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
var stateBlockNext []StateBlockCosmosMaxNID var stateBlockNext []StateBlockCosmosMaxNID
params := map[string]interface{}{ params := map[string]interface{}{
"@x1": dbCollectionName, "@x1": s.db.cosmosConfig.TenantName,
"@x2": dbCollectionName,
} }
var optionsQry = cosmosdbapi.GetQueryAllPartitionsDocumentsOptions() var optionsQry = cosmosdbapi.GetQueryAllPartitionsDocumentsOptions()

View file

@ -43,6 +43,7 @@ type StateSnapshotCosmos struct {
type StateSnapshotCosmosData struct { type StateSnapshotCosmosData struct {
Id string `json:"id"` Id string `json:"id"`
Pk string `json:"_pk"` Pk string `json:"_pk"`
Tn string `json:"_sid"`
Cn string `json:"_cn"` Cn string `json:"_cn"`
ETag string `json:"_etag"` ETag string `json:"_etag"`
Timestamp int64 `json:"_ts"` Timestamp int64 `json:"_ts"`
@ -120,11 +121,12 @@ func (s *stateSnapshotStatements) InsertState(
// state_snapshot_nid INTEGER PRIMARY KEY AUTOINCREMENT, // state_snapshot_nid INTEGER PRIMARY KEY AUTOINCREMENT,
docId := fmt.Sprintf("%d", stateSnapshotNIDSeq) docId := fmt.Sprintf("%d", stateSnapshotNIDSeq)
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var dbData = StateSnapshotCosmosData{ var dbData = StateSnapshotCosmosData{
Id: cosmosDocId, Id: cosmosDocId,
Tn: s.db.cosmosConfig.TenantName,
Cn: dbCollectionName, Cn: dbCollectionName,
Pk: pk, Pk: pk,
Timestamp: time.Now().Unix(), Timestamp: time.Now().Unix(),
@ -154,7 +156,7 @@ func (s *stateSnapshotStatements) BulkSelectStateBlockNIDs(
// "SELECT state_snapshot_nid, state_block_nids FROM roomserver_state_snapshots" + // "SELECT state_snapshot_nid, state_block_nids FROM roomserver_state_snapshots" +
// " WHERE state_snapshot_nid IN ($1) ORDER BY state_snapshot_nid ASC" // " WHERE state_snapshot_nid IN ($1) ORDER BY state_snapshot_nid ASC"
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var response []StateSnapshotCosmosData var response []StateSnapshotCosmosData
params := map[string]interface{}{ params := map[string]interface{}{
"@x1": dbCollectionName, "@x1": dbCollectionName,

View file

@ -46,6 +46,7 @@ type TransactionCosmos struct {
type TransactionCosmosData struct { type TransactionCosmosData struct {
Id string `json:"id"` Id string `json:"id"`
Pk string `json:"_pk"` Pk string `json:"_pk"`
Tn string `json:"_sid"`
Cn string `json:"_cn"` Cn string `json:"_cn"`
ETag string `json:"_etag"` ETag string `json:"_etag"`
Timestamp int64 `json:"_ts"` Timestamp int64 `json:"_ts"`
@ -119,11 +120,12 @@ func (s *transactionStatements) InsertTransaction(
// PRIMARY KEY (transaction_id, session_id, user_id) // PRIMARY KEY (transaction_id, session_id, user_id)
docId := fmt.Sprintf("%s_%d_%s", transactionID, sessionID, userID) docId := fmt.Sprintf("%s_%d_%s", transactionID, sessionID, userID)
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var dbData = TransactionCosmosData{ var dbData = TransactionCosmosData{
Id: cosmosDocId, Id: cosmosDocId,
Tn: s.db.cosmosConfig.TenantName,
Cn: dbCollectionName, Cn: dbCollectionName,
Pk: pk, Pk: pk,
Timestamp: time.Now().Unix(), Timestamp: time.Now().Unix(),
@ -154,8 +156,8 @@ func (s *transactionStatements) SelectTransactionEventID(
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
// PRIMARY KEY (transaction_id, session_id, user_id) // PRIMARY KEY (transaction_id, session_id, user_id)
docId := fmt.Sprintf("%s_%d_%s", transactionID, sessionID, userID) docId := fmt.Sprintf("%s_%d_%s", transactionID, sessionID, userID)
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
response, err := getTransaction(s, ctx, pk, cosmosDocId) response, err := getTransaction(s, ctx, pk, cosmosDocId)

View file

@ -64,6 +64,7 @@ type ServerKeyCosmos struct {
type ServerKeyCosmosData struct { type ServerKeyCosmosData struct {
Id string `json:"id"` Id string `json:"id"`
Pk string `json:"_pk"` Pk string `json:"_pk"`
Tn string `json:"_sid"`
Cn string `json:"_cn"` Cn string `json:"_cn"`
ETag string `json:"_etag"` ETag string `json:"_etag"`
Timestamp int64 `json:"_ts"` Timestamp int64 `json:"_ts"`
@ -94,7 +95,7 @@ type serverKeyStatements struct {
func queryServerKey(s *serverKeyStatements, ctx context.Context, qry string, params map[string]interface{}) ([]ServerKeyCosmosData, error) { func queryServerKey(s *serverKeyStatements, ctx context.Context, qry string, params map[string]interface{}) ([]ServerKeyCosmosData, error) {
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var response []ServerKeyCosmosData var response []ServerKeyCosmosData
var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk) var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk)
@ -204,8 +205,8 @@ func (s *serverKeyStatements) upsertServerKeys(
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
// UNIQUE (server_name, server_key_id) // UNIQUE (server_name, server_key_id)
docId := fmt.Sprintf("%s_%s", string(request.ServerName), string(request.KeyID)) docId := fmt.Sprintf("%s_%s", string(request.ServerName), string(request.KeyID))
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
data := ServerKeyCosmos{ data := ServerKeyCosmos{
ServerName: string(request.ServerName), ServerName: string(request.ServerName),
@ -218,6 +219,7 @@ func (s *serverKeyStatements) upsertServerKeys(
dbData := &ServerKeyCosmosData{ dbData := &ServerKeyCosmosData{
Id: cosmosDocId, Id: cosmosDocId,
Tn: s.db.cosmosConfig.TenantName,
Cn: dbCollectionName, Cn: dbCollectionName,
Pk: pk, Pk: pk,
Timestamp: time.Now().Unix(), Timestamp: time.Now().Unix(),

View file

@ -54,6 +54,7 @@ type AccountDataTypeNumberCosmosData struct {
type AccountDataTypeCosmosData struct { type AccountDataTypeCosmosData struct {
Id string `json:"id"` Id string `json:"id"`
Pk string `json:"_pk"` Pk string `json:"_pk"`
Tn string `json:"_sid"`
Cn string `json:"_cn"` Cn string `json:"_cn"`
ETag string `json:"_etag"` ETag string `json:"_etag"`
Timestamp int64 `json:"_ts"` Timestamp int64 `json:"_ts"`
@ -90,7 +91,7 @@ type accountDataStatements struct {
func queryAccountDataType(s *accountDataStatements, ctx context.Context, qry string, params map[string]interface{}) ([]AccountDataTypeCosmosData, error) { func queryAccountDataType(s *accountDataStatements, ctx context.Context, qry string, params map[string]interface{}) ([]AccountDataTypeCosmosData, error) {
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var response []AccountDataTypeCosmosData var response []AccountDataTypeCosmosData
var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk) var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk)
@ -111,7 +112,7 @@ func queryAccountDataType(s *accountDataStatements, ctx context.Context, qry str
func queryAccountDataTypeNumber(s *accountDataStatements, ctx context.Context, qry string, params map[string]interface{}) ([]AccountDataTypeNumberCosmosData, error) { func queryAccountDataTypeNumber(s *accountDataStatements, ctx context.Context, qry string, params map[string]interface{}) ([]AccountDataTypeNumberCosmosData, error) {
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var response []AccountDataTypeNumberCosmosData var response []AccountDataTypeNumberCosmosData
var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk) var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk)
@ -159,8 +160,8 @@ func (s *accountDataStatements) InsertAccountData(
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
// UNIQUE (user_id, room_id, type) // UNIQUE (user_id, room_id, type)
docId := fmt.Sprintf("%s_%s_%s", userID, roomID, dataType) docId := fmt.Sprintf("%s_%s_%s", userID, roomID, dataType)
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
data := AccountDataTypeCosmos{ data := AccountDataTypeCosmos{
ID: int64(pos), ID: int64(pos),
@ -171,6 +172,7 @@ func (s *accountDataStatements) InsertAccountData(
dbData := &AccountDataTypeCosmosData{ dbData := &AccountDataTypeCosmosData{
Id: cosmosDocId, Id: cosmosDocId,
Tn: s.db.cosmosConfig.TenantName,
Cn: dbCollectionName, Cn: dbCollectionName,
Pk: pk, Pk: pk,
Timestamp: time.Now().Unix(), Timestamp: time.Now().Unix(),

View file

@ -47,6 +47,7 @@ type BackwardExtremityCosmos struct {
type BackwardExtremityCosmosData struct { type BackwardExtremityCosmosData struct {
Id string `json:"id"` Id string `json:"id"`
Pk string `json:"_pk"` Pk string `json:"_pk"`
Tn string `json:"_sid"`
Cn string `json:"_cn"` Cn string `json:"_cn"`
ETag string `json:"_etag"` ETag string `json:"_etag"`
Timestamp int64 `json:"_ts"` Timestamp int64 `json:"_ts"`
@ -85,7 +86,7 @@ type backwardExtremitiesStatements struct {
func queryBackwardExtremity(s *backwardExtremitiesStatements, ctx context.Context, qry string, params map[string]interface{}) ([]BackwardExtremityCosmosData, error) { func queryBackwardExtremity(s *backwardExtremitiesStatements, ctx context.Context, qry string, params map[string]interface{}) ([]BackwardExtremityCosmosData, error) {
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var response []BackwardExtremityCosmosData var response []BackwardExtremityCosmosData
var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk) var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk)
@ -143,8 +144,8 @@ func (s *backwardExtremitiesStatements) InsertsBackwardExtremity(
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
// PRIMARY KEY(room_id, event_id, prev_event_id) // PRIMARY KEY(room_id, event_id, prev_event_id)
docId := fmt.Sprintf("%s_%s_%s", roomID, eventID, prevEventID) docId := fmt.Sprintf("%s_%s_%s", roomID, eventID, prevEventID)
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
data := BackwardExtremityCosmos{ data := BackwardExtremityCosmos{
EventID: eventID, EventID: eventID,
@ -154,6 +155,7 @@ func (s *backwardExtremitiesStatements) InsertsBackwardExtremity(
dbData := &BackwardExtremityCosmosData{ dbData := &BackwardExtremityCosmosData{
Id: cosmosDocId, Id: cosmosDocId,
Tn: s.db.cosmosConfig.TenantName,
Cn: dbCollectionName, Cn: dbCollectionName,
Pk: pk, Pk: pk,
Timestamp: time.Now().Unix(), Timestamp: time.Now().Unix(),

View file

@ -68,6 +68,7 @@ type CurrentRoomStateCosmos struct {
type CurrentRoomStateCosmosData struct { type CurrentRoomStateCosmosData struct {
Id string `json:"id"` Id string `json:"id"`
Pk string `json:"_pk"` Pk string `json:"_pk"`
Tn string `json:"_sid"`
Cn string `json:"_cn"` Cn string `json:"_cn"`
ETag string `json:"_etag"` ETag string `json:"_etag"`
Timestamp int64 `json:"_ts"` Timestamp int64 `json:"_ts"`
@ -139,7 +140,7 @@ type currentRoomStateStatements struct {
func queryCurrentRoomState(s *currentRoomStateStatements, ctx context.Context, qry string, params map[string]interface{}) ([]CurrentRoomStateCosmosData, error) { func queryCurrentRoomState(s *currentRoomStateStatements, ctx context.Context, qry string, params map[string]interface{}) ([]CurrentRoomStateCosmosData, error) {
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var response []CurrentRoomStateCosmosData var response []CurrentRoomStateCosmosData
var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk) var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk)
@ -160,7 +161,7 @@ func queryCurrentRoomState(s *currentRoomStateStatements, ctx context.Context, q
func queryCurrentRoomStateDistinct(s *currentRoomStateStatements, ctx context.Context, qry string, params map[string]interface{}) ([]CurrentRoomStateCosmos, error) { func queryCurrentRoomStateDistinct(s *currentRoomStateStatements, ctx context.Context, qry string, params map[string]interface{}) ([]CurrentRoomStateCosmos, error) {
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var response []CurrentRoomStateCosmos var response []CurrentRoomStateCosmos
var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk) var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk)
@ -415,8 +416,8 @@ func (s *currentRoomStateStatements) UpsertRoomState(
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
// " ON CONFLICT (room_id, type, state_key)" + // " ON CONFLICT (room_id, type, state_key)" +
docId := fmt.Sprintf("%s_%s_%s", event.RoomID(), event.Type(), *event.StateKey()) docId := fmt.Sprintf("%s_%s_%s", event.RoomID(), event.Type(), *event.StateKey())
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
membershipData := "" membershipData := ""
if membership != nil { if membership != nil {
@ -437,6 +438,7 @@ func (s *currentRoomStateStatements) UpsertRoomState(
dbData := &CurrentRoomStateCosmosData{ dbData := &CurrentRoomStateCosmosData{
Id: cosmosDocId, Id: cosmosDocId,
Tn: s.db.cosmosConfig.TenantName,
Cn: dbCollectionName, Cn: dbCollectionName,
Pk: pk, Pk: pk,
Timestamp: time.Now().Unix(), Timestamp: time.Now().Unix(),
@ -570,10 +572,10 @@ func (s *currentRoomStateStatements) SelectStateEvent(
var res []byte var res []byte
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
// " ON CONFLICT (room_id, type, state_key)" + // " ON CONFLICT (room_id, type, state_key)" +
docId := fmt.Sprintf("%s_%s_%s", roomID, evType, stateKey) docId := fmt.Sprintf("%s_%s_%s", roomID, evType, stateKey)
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
var response, err = getEvent(s, ctx, pk, cosmosDocId) var response, err = getEvent(s, ctx, pk, cosmosDocId)
// err := stmt.QueryRowContext(ctx, roomID, evType, stateKey).Scan(&res) // err := stmt.QueryRowContext(ctx, roomID, evType, stateKey).Scan(&res)

View file

@ -51,6 +51,7 @@ type FilterCosmos struct {
type FilterCosmosData struct { type FilterCosmosData struct {
Id string `json:"id"` Id string `json:"id"`
Pk string `json:"_pk"` Pk string `json:"_pk"`
Tn string `json:"_sid"`
Cn string `json:"_cn"` Cn string `json:"_cn"`
ETag string `json:"_etag"` ETag string `json:"_etag"`
Timestamp int64 `json:"_ts"` Timestamp int64 `json:"_ts"`
@ -79,7 +80,7 @@ type filterStatements struct {
func queryFilter(s *filterStatements, ctx context.Context, qry string, params map[string]interface{}) ([]FilterCosmosData, error) { func queryFilter(s *filterStatements, ctx context.Context, qry string, params map[string]interface{}) ([]FilterCosmosData, error) {
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var response []FilterCosmosData var response []FilterCosmosData
var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk) var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk)
@ -142,8 +143,8 @@ func (s *filterStatements) SelectFilter(
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
// UNIQUE (id, localpart) // UNIQUE (id, localpart)
docId := fmt.Sprintf("%s_%s", localpart, filterID) docId := fmt.Sprintf("%s_%s", localpart, filterID)
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var response, err = getFilter(s, ctx, pk, cosmosDocId) var response, err = getFilter(s, ctx, pk, cosmosDocId)
if err != nil { if err != nil {
@ -230,11 +231,12 @@ func (s *filterStatements) InsertFilter(
// UNIQUE (id, localpart) // UNIQUE (id, localpart)
docId := fmt.Sprintf("%s_%d", localpart, seqID) docId := fmt.Sprintf("%s_%d", localpart, seqID)
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var dbData = FilterCosmosData{ var dbData = FilterCosmosData{
Id: cosmosDocId, Id: cosmosDocId,
Tn: s.db.cosmosConfig.TenantName,
Cn: dbCollectionName, Cn: dbCollectionName,
Pk: pk, Pk: pk,
Timestamp: time.Now().Unix(), Timestamp: time.Now().Unix(),

View file

@ -60,6 +60,7 @@ type InviteEventCosmosMaxNumber struct {
type InviteEventCosmosData struct { type InviteEventCosmosData struct {
Id string `json:"id"` Id string `json:"id"`
Pk string `json:"_pk"` Pk string `json:"_pk"`
Tn string `json:"_sid"`
Cn string `json:"_cn"` Cn string `json:"_cn"`
ETag string `json:"_etag"` ETag string `json:"_etag"`
Timestamp int64 `json:"_ts"` Timestamp int64 `json:"_ts"`
@ -102,7 +103,7 @@ type inviteEventsStatements struct {
func queryInviteEvent(s *inviteEventsStatements, ctx context.Context, qry string, params map[string]interface{}) ([]InviteEventCosmosData, error) { func queryInviteEvent(s *inviteEventsStatements, ctx context.Context, qry string, params map[string]interface{}) ([]InviteEventCosmosData, error) {
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var response []InviteEventCosmosData var response []InviteEventCosmosData
var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk) var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk)
@ -123,7 +124,7 @@ func queryInviteEvent(s *inviteEventsStatements, ctx context.Context, qry string
func queryInviteEventMaxNumber(s *inviteEventsStatements, ctx context.Context, qry string, params map[string]interface{}) ([]InviteEventCosmosMaxNumber, error) { func queryInviteEventMaxNumber(s *inviteEventsStatements, ctx context.Context, qry string, params map[string]interface{}) ([]InviteEventCosmosMaxNumber, error) {
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var response []InviteEventCosmosMaxNumber var response []InviteEventCosmosMaxNumber
var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk) var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk)
@ -221,13 +222,14 @@ func (s *inviteEventsStatements) InsertInviteEvent(
} }
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
// id INTEGER PRIMARY KEY, // id INTEGER PRIMARY KEY,
docId := fmt.Sprintf("%d", streamPos) docId := fmt.Sprintf("%d", streamPos)
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
var dbData = InviteEventCosmosData{ var dbData = InviteEventCosmosData{
Id: cosmosDocId, Id: cosmosDocId,
Tn: s.db.cosmosConfig.TenantName,
Cn: dbCollectionName, Cn: dbCollectionName,
Pk: pk, Pk: pk,
Timestamp: time.Now().Unix(), Timestamp: time.Now().Unix(),

View file

@ -64,6 +64,7 @@ type MembershipCosmos struct {
type MembershipCosmosData struct { type MembershipCosmosData struct {
Id string `json:"id"` Id string `json:"id"`
Pk string `json:"_pk"` Pk string `json:"_pk"`
Tn string `json:"_sid"`
Cn string `json:"_cn"` Cn string `json:"_cn"`
ETag string `json:"_etag"` ETag string `json:"_etag"`
Timestamp int64 `json:"_ts"` Timestamp int64 `json:"_ts"`
@ -95,7 +96,7 @@ type membershipsStatements struct {
func queryMembership(s *membershipsStatements, ctx context.Context, qry string, params map[string]interface{}) ([]MembershipCosmosData, error) { func queryMembership(s *membershipsStatements, ctx context.Context, qry string, params map[string]interface{}) ([]MembershipCosmosData, error) {
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var response []MembershipCosmosData var response []MembershipCosmosData
var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk) var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk)
@ -156,13 +157,14 @@ func (s *membershipsStatements) UpsertMembership(
} }
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
// UNIQUE (room_id, user_id, membership) // UNIQUE (room_id, user_id, membership)
docId := fmt.Sprintf("%s_%s_%s", event.RoomID(), *event.StateKey(), membership) docId := fmt.Sprintf("%s_%s_%s", event.RoomID(), *event.StateKey(), membership)
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
var dbData = MembershipCosmosData{ var dbData = MembershipCosmosData{
Id: cosmosDocId, Id: cosmosDocId,
Tn: s.db.cosmosConfig.TenantName,
Cn: dbCollectionName, Cn: dbCollectionName,
Pk: pk, Pk: pk,
Timestamp: time.Now().Unix(), Timestamp: time.Now().Unix(),

View file

@ -75,6 +75,7 @@ type OutputRoomEventCosmosMaxNumber struct {
type OutputRoomEventCosmosData struct { type OutputRoomEventCosmosData struct {
Id string `json:"id"` Id string `json:"id"`
Pk string `json:"_pk"` Pk string `json:"_pk"`
Tn string `json:"_sid"`
Cn string `json:"_cn"` Cn string `json:"_cn"`
ETag string `json:"_etag"` ETag string `json:"_etag"`
Timestamp int64 `json:"_ts"` Timestamp int64 `json:"_ts"`
@ -159,7 +160,7 @@ type outputRoomEventsStatements struct {
func queryOutputRoomEvent(s *outputRoomEventsStatements, ctx context.Context, qry string, params map[string]interface{}) ([]OutputRoomEventCosmosData, error) { func queryOutputRoomEvent(s *outputRoomEventsStatements, ctx context.Context, qry string, params map[string]interface{}) ([]OutputRoomEventCosmosData, error) {
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var response []OutputRoomEventCosmosData var response []OutputRoomEventCosmosData
var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk) var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk)
@ -180,7 +181,7 @@ func queryOutputRoomEvent(s *outputRoomEventsStatements, ctx context.Context, qr
func queryOutputRoomEventNumber(s *outputRoomEventsStatements, ctx context.Context, qry string, params map[string]interface{}) ([]OutputRoomEventCosmosMaxNumber, error) { func queryOutputRoomEventNumber(s *outputRoomEventsStatements, ctx context.Context, qry string, params map[string]interface{}) ([]OutputRoomEventCosmosMaxNumber, error) {
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var response []OutputRoomEventCosmosMaxNumber var response []OutputRoomEventCosmosMaxNumber
var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk) var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk)
@ -488,13 +489,14 @@ func (s *outputRoomEventsStatements) InsertEvent(
} }
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
// id INTEGER PRIMARY KEY, // id INTEGER PRIMARY KEY,
docId := fmt.Sprintf("%d", streamPos) docId := fmt.Sprintf("%d", streamPos)
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
var dbData = OutputRoomEventCosmosData{ var dbData = OutputRoomEventCosmosData{
Id: cosmosDocId, Id: cosmosDocId,
Tn: s.db.cosmosConfig.TenantName,
Cn: dbCollectionName, Cn: dbCollectionName,
Pk: pk, Pk: pk,
Timestamp: time.Now().Unix(), Timestamp: time.Now().Unix(),

View file

@ -50,6 +50,7 @@ type OutputRoomEventTopologyCosmos struct {
type OutputRoomEventTopologyCosmosData struct { type OutputRoomEventTopologyCosmosData struct {
Id string `json:"id"` Id string `json:"id"`
Pk string `json:"_pk"` Pk string `json:"_pk"`
Tn string `json:"_sid"`
Cn string `json:"_cn"` Cn string `json:"_cn"`
ETag string `json:"_etag"` ETag string `json:"_etag"`
Timestamp int64 `json:"_ts"` Timestamp int64 `json:"_ts"`
@ -133,7 +134,7 @@ type outputRoomEventsTopologyStatements struct {
func queryOutputRoomEventTopology(s *outputRoomEventsTopologyStatements, ctx context.Context, qry string, params map[string]interface{}) ([]OutputRoomEventTopologyCosmosData, error) { func queryOutputRoomEventTopology(s *outputRoomEventsTopologyStatements, ctx context.Context, qry string, params map[string]interface{}) ([]OutputRoomEventTopologyCosmosData, error) {
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var response []OutputRoomEventTopologyCosmosData var response []OutputRoomEventTopologyCosmosData
var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk) var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk)
@ -194,8 +195,8 @@ func (s *outputRoomEventsTopologyStatements) InsertEventInTopology(
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
// UNIQUE(topological_position, room_id, stream_position) // UNIQUE(topological_position, room_id, stream_position)
docId := fmt.Sprintf("%d_%s_%d", event.Depth(), event.RoomID(), pos) docId := fmt.Sprintf("%d_%s_%d", event.Depth(), event.RoomID(), pos)
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
data := OutputRoomEventTopologyCosmos{ data := OutputRoomEventTopologyCosmos{
EventID: event.EventID(), EventID: event.EventID(),
@ -206,6 +207,7 @@ func (s *outputRoomEventsTopologyStatements) InsertEventInTopology(
dbData := &OutputRoomEventTopologyCosmosData{ dbData := &OutputRoomEventTopologyCosmosData{
Id: cosmosDocId, Id: cosmosDocId,
Tn: s.db.cosmosConfig.TenantName,
Cn: dbCollectionName, Cn: dbCollectionName,
Pk: pk, Pk: pk,
Timestamp: time.Now().Unix(), Timestamp: time.Now().Unix(),

View file

@ -60,6 +60,7 @@ type PeekCosmosMaxNumber struct {
type PeekCosmosData struct { type PeekCosmosData struct {
Id string `json:"id"` Id string `json:"id"`
Pk string `json:"_pk"` Pk string `json:"_pk"`
Tn string `json:"_sid"`
Cn string `json:"_cn"` Cn string `json:"_cn"`
ETag string `json:"_etag"` ETag string `json:"_etag"`
Timestamp int64 `json:"_ts"` Timestamp int64 `json:"_ts"`
@ -122,7 +123,7 @@ type peekStatements struct {
func queryPeek(s *peekStatements, ctx context.Context, qry string, params map[string]interface{}) ([]PeekCosmosData, error) { func queryPeek(s *peekStatements, ctx context.Context, qry string, params map[string]interface{}) ([]PeekCosmosData, error) {
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var response []PeekCosmosData var response []PeekCosmosData
var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk) var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk)
@ -143,7 +144,7 @@ func queryPeek(s *peekStatements, ctx context.Context, qry string, params map[st
func queryPeekMaxNumber(s *peekStatements, ctx context.Context, qry string, params map[string]interface{}) ([]PeekCosmosMaxNumber, error) { func queryPeekMaxNumber(s *peekStatements, ctx context.Context, qry string, params map[string]interface{}) ([]PeekCosmosMaxNumber, error) {
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var response []PeekCosmosMaxNumber var response []PeekCosmosMaxNumber
var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk) var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk)
@ -204,8 +205,8 @@ func (s *peekStatements) InsertPeek(
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
// UNIQUE(room_id, user_id, device_id) // UNIQUE(room_id, user_id, device_id)
docId := fmt.Sprintf("%d_%s_%d", roomID, userID, deviceID) docId := fmt.Sprintf("%d_%s_%d", roomID, userID, deviceID)
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
data := PeekCosmos{ data := PeekCosmos{
ID: int64(streamPos), ID: int64(streamPos),
@ -216,6 +217,7 @@ func (s *peekStatements) InsertPeek(
dbData := &PeekCosmosData{ dbData := &PeekCosmosData{
Id: cosmosDocId, Id: cosmosDocId,
Tn: s.db.cosmosConfig.TenantName,
Cn: dbCollectionName, Cn: dbCollectionName,
Pk: pk, Pk: pk,
// nowMilli := time.Now().UnixNano() / int64(time.Millisecond) // nowMilli := time.Now().UnixNano() / int64(time.Millisecond)

View file

@ -58,6 +58,7 @@ type ReceiptCosmosMaxNumber struct {
type ReceiptCosmosData struct { type ReceiptCosmosData struct {
Id string `json:"id"` Id string `json:"id"`
Pk string `json:"_pk"` Pk string `json:"_pk"`
Tn string `json:"_sid"`
Cn string `json:"_cn"` Cn string `json:"_cn"`
ETag string `json:"_etag"` ETag string `json:"_etag"`
Timestamp int64 `json:"_ts"` Timestamp int64 `json:"_ts"`
@ -94,7 +95,7 @@ type receiptStatements struct {
func queryReceipt(s *receiptStatements, ctx context.Context, qry string, params map[string]interface{}) ([]ReceiptCosmosData, error) { func queryReceipt(s *receiptStatements, ctx context.Context, qry string, params map[string]interface{}) ([]ReceiptCosmosData, error) {
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var response []ReceiptCosmosData var response []ReceiptCosmosData
var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk) var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk)
@ -115,7 +116,7 @@ func queryReceipt(s *receiptStatements, ctx context.Context, qry string, params
func queryReceiptNumber(s *receiptStatements, ctx context.Context, qry string, params map[string]interface{}) ([]ReceiptCosmosMaxNumber, error) { func queryReceiptNumber(s *receiptStatements, ctx context.Context, qry string, params map[string]interface{}) ([]ReceiptCosmosMaxNumber, error) {
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var response []ReceiptCosmosMaxNumber var response []ReceiptCosmosMaxNumber
var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk) var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk)
@ -174,6 +175,7 @@ func (r *receiptStatements) UpsertReceipt(ctx context.Context, txn *sql.Tx, room
var dbData = ReceiptCosmosData{ var dbData = ReceiptCosmosData{
Id: cosmosDocId, Id: cosmosDocId,
Tn: r.db.cosmosConfig.TenantName,
Cn: dbCollectionName, Cn: dbCollectionName,
Pk: pk, Pk: pk,
Timestamp: time.Now().Unix(), Timestamp: time.Now().Unix(),

View file

@ -56,6 +56,7 @@ type SendToDeviceCosmosMaxNumber struct {
type SendToDeviceCosmosData struct { type SendToDeviceCosmosData struct {
Id string `json:"id"` Id string `json:"id"`
Pk string `json:"_pk"` Pk string `json:"_pk"`
Tn string `json:"_sid"`
Cn string `json:"_cn"` Cn string `json:"_cn"`
ETag string `json:"_etag"` ETag string `json:"_etag"`
Timestamp int64 `json:"_ts"` Timestamp int64 `json:"_ts"`
@ -99,7 +100,7 @@ type sendToDeviceStatements struct {
func querySendToDevice(s *sendToDeviceStatements, ctx context.Context, qry string, params map[string]interface{}) ([]SendToDeviceCosmosData, error) { func querySendToDevice(s *sendToDeviceStatements, ctx context.Context, qry string, params map[string]interface{}) ([]SendToDeviceCosmosData, error) {
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var response []SendToDeviceCosmosData var response []SendToDeviceCosmosData
var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk) var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk)
@ -120,7 +121,7 @@ func querySendToDevice(s *sendToDeviceStatements, ctx context.Context, qry strin
func querySendToDeviceNumber(s *sendToDeviceStatements, ctx context.Context, qry string, params map[string]interface{}) ([]SendToDeviceCosmosMaxNumber, error) { func querySendToDeviceNumber(s *sendToDeviceStatements, ctx context.Context, qry string, params map[string]interface{}) ([]SendToDeviceCosmosMaxNumber, error) {
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var response []SendToDeviceCosmosMaxNumber var response []SendToDeviceCosmosMaxNumber
var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk) var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk)
@ -178,13 +179,14 @@ func (s *sendToDeviceStatements) InsertSendToDeviceMessage(
} }
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
// NO CONSTRAINT // NO CONSTRAINT
docId := fmt.Sprintf("%d", pos) docId := fmt.Sprintf("%d", pos)
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
var dbData = SendToDeviceCosmosData{ var dbData = SendToDeviceCosmosData{
Id: cosmosDocId, Id: cosmosDocId,
Tn: s.db.cosmosConfig.TenantName,
Cn: dbCollectionName, Cn: dbCollectionName,
Pk: pk, Pk: pk,
Timestamp: time.Now().Unix(), Timestamp: time.Now().Unix(),

View file

@ -42,6 +42,7 @@ import (
type AccountDataCosmosData struct { type AccountDataCosmosData struct {
Id string `json:"id"` Id string `json:"id"`
Pk string `json:"_pk"` Pk string `json:"_pk"`
Tn string `json:"_sid"`
Cn string `json:"_cn"` Cn string `json:"_cn"`
ETag string `json:"_etag"` ETag string `json:"_etag"`
Timestamp int64 `json:"_ts"` Timestamp int64 `json:"_ts"`
@ -73,7 +74,7 @@ func (s *accountDataStatements) prepare(db *Database) (err error) {
func queryAccountData(s *accountDataStatements, ctx context.Context, qry string, params map[string]interface{}) ([]AccountDataCosmosData, error) { func queryAccountData(s *accountDataStatements, ctx context.Context, qry string, params map[string]interface{}) ([]AccountDataCosmosData, error) {
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var response []AccountDataCosmosData var response []AccountDataCosmosData
var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk) var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk)
@ -114,11 +115,12 @@ func (s *accountDataStatements) insertAccountData(
} }
docId := id docId := id
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var dbData = AccountDataCosmosData{ var dbData = AccountDataCosmosData{
Id: cosmosDocId, Id: cosmosDocId,
Tn: s.db.cosmosConfig.TenantName,
Cn: dbCollectionName, Cn: dbCollectionName,
Pk: pk, Pk: pk,
Timestamp: time.Now().Unix(), Timestamp: time.Now().Unix(),

View file

@ -59,6 +59,7 @@ type AccountCosmos struct {
type AccountCosmosData struct { type AccountCosmosData struct {
Id string `json:"id"` Id string `json:"id"`
Pk string `json:"_pk"` Pk string `json:"_pk"`
Tn string `json:"_sid"`
Cn string `json:"_cn"` Cn string `json:"_cn"`
ETag string `json:"_etag"` ETag string `json:"_etag"`
Timestamp int64 `json:"_ts"` Timestamp int64 `json:"_ts"`
@ -90,7 +91,7 @@ func (s *accountsStatements) prepare(db *Database, server gomatrixserverlib.Serv
func queryAccount(s *accountsStatements, ctx context.Context, qry string, params map[string]interface{}) ([]AccountCosmosData, error) { func queryAccount(s *accountsStatements, ctx context.Context, qry string, params map[string]interface{}) ([]AccountCosmosData, error) {
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var response []AccountCosmosData var response []AccountCosmosData
var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk) var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk)
@ -182,11 +183,12 @@ func (s *accountsStatements) insertAccount(
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.db.accounts.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.db.accounts.tableName)
docId := result.Localpart docId := result.Localpart
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var dbData = AccountCosmosData{ var dbData = AccountCosmosData{
Id: cosmosDocId, Id: cosmosDocId,
Tn: s.db.cosmosConfig.TenantName,
Cn: dbCollectionName, Cn: dbCollectionName,
Pk: pk, Pk: pk,
Timestamp: time.Now().Unix(), Timestamp: time.Now().Unix(),
@ -215,8 +217,8 @@ func (s *accountsStatements) updatePassword(
// "UPDATE account_accounts SET password_hash = $1 WHERE localpart = $2" // "UPDATE account_accounts SET password_hash = $1 WHERE localpart = $2"
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.db.accounts.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.db.accounts.tableName)
docId := localpart docId := localpart
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var response, exGet = getAccount(s, ctx, pk, cosmosDocId) var response, exGet = getAccount(s, ctx, pk, cosmosDocId)
if exGet != nil { if exGet != nil {
@ -240,8 +242,8 @@ func (s *accountsStatements) deactivateAccount(
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.db.accounts.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.db.accounts.tableName)
docId := localpart docId := localpart
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var response, exGet = getAccount(s, ctx, pk, cosmosDocId) var response, exGet = getAccount(s, ctx, pk, cosmosDocId)
if exGet != nil { if exGet != nil {
@ -320,7 +322,7 @@ func (s *accountsStatements) selectNewNumericLocalpart(
// "SELECT COUNT(localpart) FROM account_accounts" // "SELECT COUNT(localpart) FROM account_accounts"
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.db.accounts.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.db.accounts.tableName)
var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var response []AccountCosmosUserCount var response []AccountCosmosUserCount
params := map[string]interface{}{ params := map[string]interface{}{
"@x1": dbCollectionName, "@x1": dbCollectionName,

View file

@ -32,6 +32,7 @@ type OpenIDTokenCosmos struct {
type OpenIdTokenCosmosData struct { type OpenIdTokenCosmosData struct {
Id string `json:"id"` Id string `json:"id"`
Pk string `json:"_pk"` Pk string `json:"_pk"`
Tn string `json:"_sid"`
Cn string `json:"_cn"` Cn string `json:"_cn"`
ETag string `json:"_etag"` ETag string `json:"_etag"`
Timestamp int64 `json:"_ts"` Timestamp int64 `json:"_ts"`
@ -64,7 +65,7 @@ func mapToToken(api api.OpenIDToken) OpenIDTokenCosmos {
func queryOpenIdToken(s *tokenStatements, ctx context.Context, qry string, params map[string]interface{}) ([]OpenIdTokenCosmosData, error) { func queryOpenIdToken(s *tokenStatements, ctx context.Context, qry string, params map[string]interface{}) ([]OpenIdTokenCosmosData, error) {
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var response []OpenIdTokenCosmosData var response []OpenIdTokenCosmosData
var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk) var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk)
@ -109,11 +110,12 @@ func (s *tokenStatements) insertToken(
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.db.openIDTokens.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.db.openIDTokens.tableName)
docId := result.Token docId := result.Token
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var dbData = OpenIdTokenCosmosData{ var dbData = OpenIdTokenCosmosData{
Id: cosmosDocId, Id: cosmosDocId,
Tn: s.db.cosmosConfig.TenantName,
Cn: dbCollectionName, Cn: dbCollectionName,
Pk: pk, Pk: pk,
Timestamp: time.Now().Unix(), Timestamp: time.Now().Unix(),

View file

@ -48,6 +48,7 @@ type ProfileCosmos struct {
type ProfileCosmosData struct { type ProfileCosmosData struct {
Id string `json:"id"` Id string `json:"id"`
Pk string `json:"_pk"` Pk string `json:"_pk"`
Tn string `json:"_sid"`
Cn string `json:"_cn"` Cn string `json:"_cn"`
ETag string `json:"_etag"` ETag string `json:"_etag"`
Timestamp int64 `json:"_ts"` Timestamp int64 `json:"_ts"`
@ -90,7 +91,7 @@ func (s *profilesStatements) prepare(db *Database) (err error) {
func queryProfile(s *profilesStatements, ctx context.Context, qry string, params map[string]interface{}) ([]ProfileCosmosData, error) { func queryProfile(s *profilesStatements, ctx context.Context, qry string, params map[string]interface{}) ([]ProfileCosmosData, error) {
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var response []ProfileCosmosData var response []ProfileCosmosData
var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk) var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk)
@ -150,11 +151,12 @@ func (s *profilesStatements) insertProfile(
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.db.profiles.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.db.profiles.tableName)
docId := localpart docId := localpart
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var dbData = ProfileCosmosData{ var dbData = ProfileCosmosData{
Id: cosmosDocId, Id: cosmosDocId,
Tn: s.db.cosmosConfig.TenantName,
Cn: dbCollectionName, Cn: dbCollectionName,
Pk: pk, Pk: pk,
Timestamp: time.Now().Unix(), Timestamp: time.Now().Unix(),
@ -208,8 +210,8 @@ func (s *profilesStatements) setAvatarURL(
// "UPDATE account_profiles SET avatar_url = $1 WHERE localpart = $2" // "UPDATE account_profiles SET avatar_url = $1 WHERE localpart = $2"
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.db.profiles.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.db.profiles.tableName)
docId := localpart docId := localpart
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var response, exGet = getProfile(s, ctx, pk, cosmosDocId) var response, exGet = getProfile(s, ctx, pk, cosmosDocId)
if exGet != nil { if exGet != nil {
@ -232,8 +234,8 @@ func (s *profilesStatements) setDisplayName(
// "UPDATE account_profiles SET display_name = $1 WHERE localpart = $2" // "UPDATE account_profiles SET display_name = $1 WHERE localpart = $2"
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.db.profiles.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.db.profiles.tableName)
docId := localpart docId := localpart
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var response, exGet = getProfile(s, ctx, pk, cosmosDocId) var response, exGet = getProfile(s, ctx, pk, cosmosDocId)
if exGet != nil { if exGet != nil {
return exGet return exGet

View file

@ -46,6 +46,7 @@ type ThreePIDCosmos struct {
type ThreePIDCosmosData struct { type ThreePIDCosmosData struct {
Id string `json:"id"` Id string `json:"id"`
Pk string `json:"_pk"` Pk string `json:"_pk"`
Tn string `json:"_sid"`
Cn string `json:"_cn"` Cn string `json:"_cn"`
ETag string `json:"_etag"` ETag string `json:"_etag"`
Timestamp int64 `json:"_ts"` Timestamp int64 `json:"_ts"`
@ -71,7 +72,7 @@ func (s *threepidStatements) prepare(db *Database) (err error) {
func queryThreePID(s *threepidStatements, ctx context.Context, qry string, params map[string]interface{}) ([]ThreePIDCosmosData, error) { func queryThreePID(s *threepidStatements, ctx context.Context, qry string, params map[string]interface{}) ([]ThreePIDCosmosData, error) {
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var response []ThreePIDCosmosData var response []ThreePIDCosmosData
var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk) var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk)
@ -159,10 +160,11 @@ func (s *threepidStatements) insertThreePID(
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.db.accounts.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.db.accounts.tableName)
docId := fmt.Sprintf("%s_%s", threepid, medium) docId := fmt.Sprintf("%s_%s", threepid, medium)
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var dbData = ThreePIDCosmosData{ var dbData = ThreePIDCosmosData{
Id: cosmosDocId, Id: cosmosDocId,
Tn: s.db.cosmosConfig.TenantName,
Cn: dbCollectionName, Cn: dbCollectionName,
Pk: pk, Pk: pk,
Timestamp: time.Now().Unix(), Timestamp: time.Now().Unix(),
@ -189,8 +191,8 @@ func (s *threepidStatements) deleteThreePID(
// "DELETE FROM account_threepid WHERE threepid = $1 AND medium = $2" // "DELETE FROM account_threepid WHERE threepid = $1 AND medium = $2"
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.db.accounts.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.db.accounts.tableName)
docId := fmt.Sprintf("%s_%s", threepid, medium) docId := fmt.Sprintf("%s_%s", threepid, medium)
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var options = cosmosdbapi.GetDeleteDocumentOptions(pk) var options = cosmosdbapi.GetDeleteDocumentOptions(pk)
_, err = cosmosdbapi.GetClient(s.db.connection).DeleteDocument( _, err = cosmosdbapi.GetClient(s.db.connection).DeleteDocument(
ctx, ctx,

View file

@ -72,6 +72,7 @@ type DeviceCosmos struct {
type DeviceCosmosData struct { type DeviceCosmosData struct {
Id string `json:"id"` Id string `json:"id"`
Pk string `json:"_pk"` Pk string `json:"_pk"`
Tn string `json:"_sid"`
Cn string `json:"_cn"` Cn string `json:"_cn"`
ETag string `json:"_etag"` ETag string `json:"_etag"`
Timestamp int64 `json:"_ts"` Timestamp int64 `json:"_ts"`
@ -124,7 +125,7 @@ func mapTodevice(api api.Device, s *devicesStatements) DeviceCosmos {
func queryDevice(s *devicesStatements, ctx context.Context, qry string, params map[string]interface{}) ([]DeviceCosmosData, error) { func queryDevice(s *devicesStatements, ctx context.Context, qry string, params map[string]interface{}) ([]DeviceCosmosData, error) {
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.tableName)
var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var response []DeviceCosmosData var response []DeviceCosmosData
var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk) var optionsQry = cosmosdbapi.GetQueryDocumentsOptions(pk)
@ -196,7 +197,7 @@ func (s *devicesStatements) insertDevice(
// "SELECT COUNT(access_token) FROM device_devices" // "SELECT COUNT(access_token) FROM device_devices"
// HACK: Do we need a Cosmos Table for the sequence? // HACK: Do we need a Cosmos Table for the sequence?
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.db.devices.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.db.devices.tableName)
var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) var pk = cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var response []DeviceCosmosSessionCount var response []DeviceCosmosSessionCount
params := map[string]interface{}{ params := map[string]interface{}{
"@x1": dbCollectionName, "@x1": dbCollectionName,
@ -234,10 +235,11 @@ func (s *devicesStatements) insertDevice(
// UNIQUE (localpart, device_id) // UNIQUE (localpart, device_id)
// HACK: check for duplicate PK as we are using the UNIQUE key for the DocId // HACK: check for duplicate PK as we are using the UNIQUE key for the DocId
docId := fmt.Sprintf("%s_%s", localpart, id) docId := fmt.Sprintf("%s_%s", localpart, id)
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
var dbData = DeviceCosmosData{ var dbData = DeviceCosmosData{
Id: cosmosDocId, Id: cosmosDocId,
Tn: s.db.cosmosConfig.TenantName,
Cn: dbCollectionName, Cn: dbCollectionName,
Pk: pk, Pk: pk,
Timestamp: time.Now().Unix(), Timestamp: time.Now().Unix(),
@ -266,8 +268,8 @@ func (s *devicesStatements) deleteDevice(
// "DELETE FROM device_devices WHERE device_id = $1 AND localpart = $2" // "DELETE FROM device_devices WHERE device_id = $1 AND localpart = $2"
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.db.devices.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.db.devices.tableName)
docId := fmt.Sprintf("%s_%s", localpart, id) docId := fmt.Sprintf("%s_%s", localpart, id)
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var options = cosmosdbapi.GetDeleteDocumentOptions(pk) var options = cosmosdbapi.GetDeleteDocumentOptions(pk)
var _, err = cosmosdbapi.GetClient(s.db.connection).DeleteDocument( var _, err = cosmosdbapi.GetClient(s.db.connection).DeleteDocument(
ctx, ctx,
@ -336,8 +338,8 @@ func (s *devicesStatements) updateDeviceName(
// "UPDATE device_devices SET display_name = $1 WHERE localpart = $2 AND device_id = $3" // "UPDATE device_devices SET display_name = $1 WHERE localpart = $2 AND device_id = $3"
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.db.devices.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.db.devices.tableName)
docId := fmt.Sprintf("%s_%s", localpart, deviceID) docId := fmt.Sprintf("%s_%s", localpart, deviceID)
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var response, exGet = getDevice(s, ctx, pk, cosmosDocId) var response, exGet = getDevice(s, ctx, pk, cosmosDocId)
if exGet != nil { if exGet != nil {
return exGet return exGet
@ -387,8 +389,8 @@ func (s *devicesStatements) selectDeviceByID(
// "SELECT display_name FROM device_devices WHERE localpart = $1 and device_id = $2" // "SELECT display_name FROM device_devices WHERE localpart = $1 and device_id = $2"
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.db.devices.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.db.devices.tableName)
docId := fmt.Sprintf("%s_%s", localpart, deviceID) docId := fmt.Sprintf("%s_%s", localpart, deviceID)
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var response, exGet = getDevice(s, ctx, pk, cosmosDocId) var response, exGet = getDevice(s, ctx, pk, cosmosDocId)
if exGet != nil { if exGet != nil {
return nil, exGet return nil, exGet
@ -452,8 +454,8 @@ func (s *devicesStatements) updateDeviceLastSeen(ctx context.Context, localpart,
// "UPDATE device_devices SET last_seen_ts = $1, ip = $2 WHERE localpart = $3 AND device_id = $4" // "UPDATE device_devices SET last_seen_ts = $1, ip = $2 WHERE localpart = $3 AND device_id = $4"
var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.db.devices.tableName) var dbCollectionName = cosmosdbapi.GetCollectionName(s.db.databaseName, s.db.devices.tableName)
docId := fmt.Sprintf("%s_%s", localpart, deviceID) docId := fmt.Sprintf("%s_%s", localpart, deviceID)
cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.ContainerName, dbCollectionName, docId) cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId)
pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.ContainerName, dbCollectionName) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName)
var response, exGet = getDevice(s, ctx, pk, cosmosDocId) var response, exGet = getDevice(s, ctx, pk, cosmosDocId)
if exGet != nil { if exGet != nil {
return exGet return exGet