aboutsummaryrefslogtreecommitdiff
path: root/userapi/storage
diff options
context:
space:
mode:
authorNeil Alexander <neilalexander@users.noreply.github.com>2022-03-28 16:25:26 +0100
committerGitHub <noreply@github.com>2022-03-28 16:25:26 +0100
commit7972915806348847ecd9a9b8a1b1ff0609cb883c (patch)
treedfbf719e8229dc4faeef133b150b2d7a6dc7eac8 /userapi/storage
parent0692be44d91a42945dde0eab3e2f7481cc2e0896 (diff)
User directory for nearby Pinecone peers (P2P demo) (#2311)
* User directory for nearby Pinecone peers * Fix mux routing * Use config to determine which server notices user to exclude
Diffstat (limited to 'userapi/storage')
-rw-r--r--userapi/storage/postgres/profile_table.go11
-rw-r--r--userapi/storage/postgres/storage.go4
-rw-r--r--userapi/storage/sqlite3/profile_table.go10
-rw-r--r--userapi/storage/sqlite3/storage.go4
-rw-r--r--userapi/storage/storage.go6
-rw-r--r--userapi/storage/storage_wasm.go3
6 files changed, 24 insertions, 14 deletions
diff --git a/userapi/storage/postgres/profile_table.go b/userapi/storage/postgres/profile_table.go
index 32a4b550..6d336eb8 100644
--- a/userapi/storage/postgres/profile_table.go
+++ b/userapi/storage/postgres/profile_table.go
@@ -53,6 +53,7 @@ const selectProfilesBySearchSQL = "" +
"SELECT localpart, display_name, avatar_url FROM account_profiles WHERE localpart LIKE $1 OR display_name LIKE $1 LIMIT $2"
type profilesStatements struct {
+ serverNoticesLocalpart string
insertProfileStmt *sql.Stmt
selectProfileByLocalpartStmt *sql.Stmt
setAvatarURLStmt *sql.Stmt
@@ -60,8 +61,10 @@ type profilesStatements struct {
selectProfilesBySearchStmt *sql.Stmt
}
-func NewPostgresProfilesTable(db *sql.DB) (tables.ProfileTable, error) {
- s := &profilesStatements{}
+func NewPostgresProfilesTable(db *sql.DB, serverNoticesLocalpart string) (tables.ProfileTable, error) {
+ s := &profilesStatements{
+ serverNoticesLocalpart: serverNoticesLocalpart,
+ }
_, err := db.Exec(profilesSchema)
if err != nil {
return nil, err
@@ -126,7 +129,9 @@ func (s *profilesStatements) SelectProfilesBySearch(
if err := rows.Scan(&profile.Localpart, &profile.DisplayName, &profile.AvatarURL); err != nil {
return nil, err
}
- profiles = append(profiles, profile)
+ if profile.Localpart != s.serverNoticesLocalpart {
+ profiles = append(profiles, profile)
+ }
}
return profiles, nil
}
diff --git a/userapi/storage/postgres/storage.go b/userapi/storage/postgres/storage.go
index c74a999f..b2a51760 100644
--- a/userapi/storage/postgres/storage.go
+++ b/userapi/storage/postgres/storage.go
@@ -30,7 +30,7 @@ import (
)
// NewDatabase creates a new accounts and profiles database
-func NewDatabase(dbProperties *config.DatabaseOptions, serverName gomatrixserverlib.ServerName, bcryptCost int, openIDTokenLifetimeMS int64, loginTokenLifetime time.Duration) (*shared.Database, error) {
+func NewDatabase(dbProperties *config.DatabaseOptions, serverName gomatrixserverlib.ServerName, bcryptCost int, openIDTokenLifetimeMS int64, loginTokenLifetime time.Duration, serverNoticesLocalpart string) (*shared.Database, error) {
db, err := sqlutil.Open(dbProperties)
if err != nil {
return nil, err
@@ -77,7 +77,7 @@ func NewDatabase(dbProperties *config.DatabaseOptions, serverName gomatrixserver
if err != nil {
return nil, fmt.Errorf("NewPostgresOpenIDTable: %w", err)
}
- profilesTable, err := NewPostgresProfilesTable(db)
+ profilesTable, err := NewPostgresProfilesTable(db, serverNoticesLocalpart)
if err != nil {
return nil, fmt.Errorf("NewPostgresProfilesTable: %w", err)
}
diff --git a/userapi/storage/sqlite3/profile_table.go b/userapi/storage/sqlite3/profile_table.go
index d85b19c7..3050ff4b 100644
--- a/userapi/storage/sqlite3/profile_table.go
+++ b/userapi/storage/sqlite3/profile_table.go
@@ -54,6 +54,7 @@ const selectProfilesBySearchSQL = "" +
type profilesStatements struct {
db *sql.DB
+ serverNoticesLocalpart string
insertProfileStmt *sql.Stmt
selectProfileByLocalpartStmt *sql.Stmt
setAvatarURLStmt *sql.Stmt
@@ -61,9 +62,10 @@ type profilesStatements struct {
selectProfilesBySearchStmt *sql.Stmt
}
-func NewSQLiteProfilesTable(db *sql.DB) (tables.ProfileTable, error) {
+func NewSQLiteProfilesTable(db *sql.DB, serverNoticesLocalpart string) (tables.ProfileTable, error) {
s := &profilesStatements{
- db: db,
+ db: db,
+ serverNoticesLocalpart: serverNoticesLocalpart,
}
_, err := db.Exec(profilesSchema)
if err != nil {
@@ -131,7 +133,9 @@ func (s *profilesStatements) SelectProfilesBySearch(
if err := rows.Scan(&profile.Localpart, &profile.DisplayName, &profile.AvatarURL); err != nil {
return nil, err
}
- profiles = append(profiles, profile)
+ if profile.Localpart != s.serverNoticesLocalpart {
+ profiles = append(profiles, profile)
+ }
}
return profiles, nil
}
diff --git a/userapi/storage/sqlite3/storage.go b/userapi/storage/sqlite3/storage.go
index b5bb96c4..03c013f0 100644
--- a/userapi/storage/sqlite3/storage.go
+++ b/userapi/storage/sqlite3/storage.go
@@ -31,7 +31,7 @@ import (
)
// NewDatabase creates a new accounts and profiles database
-func NewDatabase(dbProperties *config.DatabaseOptions, serverName gomatrixserverlib.ServerName, bcryptCost int, openIDTokenLifetimeMS int64, loginTokenLifetime time.Duration) (*shared.Database, error) {
+func NewDatabase(dbProperties *config.DatabaseOptions, serverName gomatrixserverlib.ServerName, bcryptCost int, openIDTokenLifetimeMS int64, loginTokenLifetime time.Duration, serverNoticesLocalpart string) (*shared.Database, error) {
db, err := sqlutil.Open(dbProperties)
if err != nil {
return nil, err
@@ -78,7 +78,7 @@ func NewDatabase(dbProperties *config.DatabaseOptions, serverName gomatrixserver
if err != nil {
return nil, fmt.Errorf("NewSQLiteOpenIDTable: %w", err)
}
- profilesTable, err := NewSQLiteProfilesTable(db)
+ profilesTable, err := NewSQLiteProfilesTable(db, serverNoticesLocalpart)
if err != nil {
return nil, fmt.Errorf("NewSQLiteProfilesTable: %w", err)
}
diff --git a/userapi/storage/storage.go b/userapi/storage/storage.go
index 4711439a..f372fe7d 100644
--- a/userapi/storage/storage.go
+++ b/userapi/storage/storage.go
@@ -30,12 +30,12 @@ import (
// NewDatabase opens a new Postgres or Sqlite database (based on dataSourceName scheme)
// and sets postgres connection parameters
-func NewDatabase(dbProperties *config.DatabaseOptions, serverName gomatrixserverlib.ServerName, bcryptCost int, openIDTokenLifetimeMS int64, loginTokenLifetime time.Duration) (Database, error) {
+func NewDatabase(dbProperties *config.DatabaseOptions, serverName gomatrixserverlib.ServerName, bcryptCost int, openIDTokenLifetimeMS int64, loginTokenLifetime time.Duration, serverNoticesLocalpart string) (Database, error) {
switch {
case dbProperties.ConnectionString.IsSQLite():
- return sqlite3.NewDatabase(dbProperties, serverName, bcryptCost, openIDTokenLifetimeMS, loginTokenLifetime)
+ return sqlite3.NewDatabase(dbProperties, serverName, bcryptCost, openIDTokenLifetimeMS, loginTokenLifetime, serverNoticesLocalpart)
case dbProperties.ConnectionString.IsPostgres():
- return postgres.NewDatabase(dbProperties, serverName, bcryptCost, openIDTokenLifetimeMS, loginTokenLifetime)
+ return postgres.NewDatabase(dbProperties, serverName, bcryptCost, openIDTokenLifetimeMS, loginTokenLifetime, serverNoticesLocalpart)
default:
return nil, fmt.Errorf("unexpected database type")
}
diff --git a/userapi/storage/storage_wasm.go b/userapi/storage/storage_wasm.go
index 701dcd83..779f7756 100644
--- a/userapi/storage/storage_wasm.go
+++ b/userapi/storage/storage_wasm.go
@@ -29,10 +29,11 @@ func NewDatabase(
bcryptCost int,
openIDTokenLifetimeMS int64,
loginTokenLifetime time.Duration,
+ serverNoticesLocalpart string,
) (Database, error) {
switch {
case dbProperties.ConnectionString.IsSQLite():
- return sqlite3.NewDatabase(dbProperties, serverName, bcryptCost, openIDTokenLifetimeMS, loginTokenLifetime)
+ return sqlite3.NewDatabase(dbProperties, serverName, bcryptCost, openIDTokenLifetimeMS, loginTokenLifetime, serverNoticesLocalpart)
case dbProperties.ConnectionString.IsPostgres():
return nil, fmt.Errorf("can't use Postgres implementation")
default: