mirror of
https://github.com/matrix-org/dendrite.git
synced 2025-12-24 15:23:09 -06:00
60 lines
1.4 KiB
Go
60 lines
1.4 KiB
Go
package msc2836
|
|
|
|
import (
|
|
"context"
|
|
"database/sql"
|
|
|
|
"github.com/matrix-org/dendrite/internal/config"
|
|
"github.com/matrix-org/dendrite/internal/sqlutil"
|
|
"github.com/matrix-org/gomatrixserverlib"
|
|
)
|
|
|
|
type Database interface {
|
|
// StoreRelation stores the parent->child and child->parent relationship for later querying.
|
|
StoreRelation(ctx context.Context, ev *gomatrixserverlib.HeaderedEvent) error
|
|
}
|
|
|
|
type Postgres struct {
|
|
db *sql.DB
|
|
}
|
|
|
|
func NewPostgresDatabase(dbOpts *config.DatabaseOptions) (Database, error) {
|
|
var p Postgres
|
|
var err error
|
|
if p.db, err = sqlutil.Open(dbOpts); err != nil {
|
|
return nil, err
|
|
}
|
|
return &p, nil
|
|
}
|
|
|
|
func (db *Postgres) StoreRelation(ctx context.Context, ev *gomatrixserverlib.HeaderedEvent) error {
|
|
return nil
|
|
}
|
|
|
|
type SQLite struct {
|
|
db *sql.DB
|
|
writer sqlutil.Writer
|
|
}
|
|
|
|
func NewSQLiteDatabase(dbOpts *config.DatabaseOptions) (Database, error) {
|
|
var s SQLite
|
|
var err error
|
|
if s.db, err = sqlutil.Open(dbOpts); err != nil {
|
|
return nil, err
|
|
}
|
|
s.writer = sqlutil.NewExclusiveWriter()
|
|
return &s, nil
|
|
}
|
|
|
|
func (db *SQLite) StoreRelation(ctx context.Context, ev *gomatrixserverlib.HeaderedEvent) error {
|
|
return nil
|
|
}
|
|
|
|
// NewDatabase loads the database for msc2836
|
|
func NewDatabase(dbOpts *config.DatabaseOptions) (Database, error) {
|
|
if dbOpts.ConnectionString.IsPostgres() {
|
|
return NewPostgresDatabase(dbOpts)
|
|
}
|
|
return NewSQLiteDatabase(dbOpts)
|
|
}
|