mirror of
https://github.com/matrix-org/dendrite.git
synced 2025-12-28 09:13:09 -06:00
* - Implement Naffka storage in CosmosDB - Add Topic SEQ - Add Topic tables in Cosmos - Update the Yaml for Naffka to use a CosmosDB dsn * - Fix TableName for Messages
50 lines
1.3 KiB
Go
50 lines
1.3 KiB
Go
package naffkacosmosdb
|
|
|
|
import (
|
|
"github.com/matrix-org/dendrite/setup/config"
|
|
|
|
"github.com/matrix-org/dendrite/internal/cosmosdbapi"
|
|
"github.com/matrix-org/dendrite/internal/cosmosdbutil"
|
|
"github.com/matrix-org/gomatrixserverlib"
|
|
|
|
"github.com/matrix-org/naffka/storage/shared"
|
|
)
|
|
|
|
// Database stores information needed by the federation sender
|
|
type Database struct {
|
|
shared.Database
|
|
writer cosmosdbutil.Writer
|
|
connection cosmosdbapi.CosmosConnection
|
|
databaseName string
|
|
cosmosConfig cosmosdbapi.CosmosConfig
|
|
serverName gomatrixserverlib.ServerName
|
|
}
|
|
|
|
// NewDatabase opens a new database
|
|
func NewDatabase(dsn string) (*Database, error) {
|
|
datasource := config.DatabaseOptions{}
|
|
datasource.ConnectionString = config.DataSource(dsn)
|
|
conn := cosmosdbutil.GetCosmosConnection(&datasource.ConnectionString)
|
|
configConsmos := cosmosdbutil.GetCosmosConfig(&datasource.ConnectionString)
|
|
var d Database
|
|
// var err error
|
|
// if d.db, err = sql.Open("sqlite3", dsn); err != nil {
|
|
// return nil, err
|
|
// }
|
|
d.connection = conn
|
|
d.cosmosConfig = configConsmos
|
|
d.writer = cosmosdbutil.NewExclusiveWriterFake()
|
|
topics, err := NewCosmosDBTopicsTable(&d)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
d.Database = shared.Database{
|
|
DB: nil,
|
|
Writer: d.writer,
|
|
TopicsTable: topics,
|
|
}
|
|
d.Database.CreateCache()
|
|
d.databaseName = "naffka"
|
|
return &d, nil
|
|
}
|