mirror of
https://github.com/hoernschen/dendrite.git
synced 2025-08-03 06:32:47 +00:00
➕ Implemented Create Pusher
This commit is contained in:
parent
024afaba7c
commit
4c4cf8020a
10 changed files with 110 additions and 2 deletions
|
@ -21,6 +21,7 @@ import (
|
|||
)
|
||||
|
||||
type Database interface {
|
||||
CreatePusher(ctd context.Context, pushkey, kind, appid, appdisplayname, devicedisplayname, profiletag, lang, url, format, localpart string) error
|
||||
GetPushersByLocalpart(ctx context.Context, localpart string) ([]api.Pusher, error)
|
||||
GetPusherByPushkey(ctx context.Context, pushkey, localpart string) (*api.Pusher, error)
|
||||
RemovePusher(ctx context.Context, pushkey, localpart string) error
|
||||
|
|
|
@ -58,15 +58,21 @@ CREATE TABLE IF NOT EXISTS pusher_pushers (
|
|||
CREATE UNIQUE INDEX IF NOT EXISTS pusher_localpart_pushkey_idx ON pusher_pushers(localpart, pushkey);
|
||||
`
|
||||
|
||||
const insertPusherSQL = "" +
|
||||
"INSERT INTO pusher_pushers(localpart, pushkey, kind, app_id, app_display_name, device_display_name, profile_tag, lang, url, format) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10)"
|
||||
|
||||
const selectPushersByLocalpartSQL = "" +
|
||||
"SELECT pushkey, kind, app_id, app_display_name, device_display_name, profile_tag, lang, url, format FROM pusher_pushers WHERE localpart = $1"
|
||||
|
||||
const selectPusherByPushkeySQL = "" +
|
||||
"SELECT pushkey, kind, app_id, app_display_name, device_display_name, profile_tag, lang, url, format FROM pusher_pushers WHERE localpart = $1 AND pushkey = $2"
|
||||
|
||||
|
||||
const deletePusherSQL = "" +
|
||||
"DELETE FROM pusher_pushers WHERE pushkey = $1 AND localpart = $2"
|
||||
|
||||
type pushersStatements struct {
|
||||
insertPusherStmt *sql.Stmt
|
||||
selectPushersByLocalpartStmt *sql.Stmt
|
||||
selectPusherByPushkeyStmt *sql.Stmt
|
||||
deletePusherStmt *sql.Stmt
|
||||
|
@ -79,6 +85,9 @@ func (s *pushersStatements) execSchema(db *sql.DB) error {
|
|||
}
|
||||
|
||||
func (s *pushersStatements) prepare(db *sql.DB, server gomatrixserverlib.ServerName) (err error) {
|
||||
if s.insertPusherStmt, err = db.Prepare(insertPusherSQL); err != nil {
|
||||
return
|
||||
}
|
||||
if s.selectPushersByLocalpartStmt, err = db.Prepare(selectPushersByLocalpartSQL); err != nil {
|
||||
return
|
||||
}
|
||||
|
@ -92,6 +101,17 @@ func (s *pushersStatements) prepare(db *sql.DB, server gomatrixserverlib.ServerN
|
|||
return
|
||||
}
|
||||
|
||||
// insertPusher creates a new pusher.
|
||||
// Returns an error if the user already has a pusher with the given pusher pushkey.
|
||||
// Returns nil error success.
|
||||
func (s *pushersStatements) insertPusher(
|
||||
ctx context.Context, txn *sql.Tx, pushkey, kind, appid, appdisplayname, devicedisplayname, profiletag, lang, url, format, localpart string,
|
||||
) error {
|
||||
stmt := sqlutil.TxStmt(txn, s.insertPusherStmt)
|
||||
_, err := stmt.ExecContext(ctx, localpart, pushkey, kind, appid, appdisplayname, devicedisplayname, profiletag, lang, url, format)
|
||||
return err
|
||||
}
|
||||
|
||||
// deletePusher removes a single pusher by pushkey and user localpart.
|
||||
func (s *pushersStatements) deletePusher(
|
||||
ctx context.Context, txn *sql.Tx, pushkey, localpart string,
|
||||
|
|
|
@ -55,6 +55,13 @@ func NewDatabase(dbProperties *config.DatabaseOptions, serverName gomatrixserver
|
|||
return &Database{db, d}, nil
|
||||
}
|
||||
|
||||
func (d *Database) CreatePusher(
|
||||
ctx context.Context, pushkey, kind, appid, appdisplayname, devicedisplayname, profiletag, lang, url, format, localpart string,
|
||||
) error {
|
||||
return d.pushers.insertPusher(ctx, nil, pushkey, kind, appid, appdisplayname, devicedisplayname, profiletag, lang, url, format, localpart)
|
||||
}
|
||||
|
||||
// GetPushersByLocalpart returns the pushers matching the given localpart.
|
||||
func (d *Database) GetPushersByLocalpart(
|
||||
ctx context.Context, localpart string,
|
||||
) ([]api.Pusher, error) {
|
||||
|
|
|
@ -42,6 +42,10 @@ CREATE TABLE IF NOT EXISTS pusher_pushers (
|
|||
UNIQUE (localpart, pushkey)
|
||||
);
|
||||
`
|
||||
const insertPusherSQL = "" +
|
||||
"INSERT INTO pusher_pushers (localpart, pushkey, kind, app_id, app_display_name, device_display_name, profile_tag, lang, url, format)" +
|
||||
" VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9. $10)"
|
||||
|
||||
const selectPushersByLocalpartSQL = "" +
|
||||
"SELECT pushkey, kind, app_id, app_display_name, device_display_name, profile_tag, lang, url, format FROM pusher_pushers WHERE localpart = $1"
|
||||
|
||||
|
@ -54,6 +58,7 @@ const deletePusherSQL = "" +
|
|||
type pushersStatements struct {
|
||||
db *sql.DB
|
||||
writer sqlutil.Writer
|
||||
insertPusherStmt *sql.Stmt
|
||||
selectPushersByLocalpartStmt *sql.Stmt
|
||||
selectPusherByPushkeyStmt *sql.Stmt
|
||||
deletePusherStmt *sql.Stmt
|
||||
|
@ -68,6 +73,9 @@ func (s *pushersStatements) execSchema(db *sql.DB) error {
|
|||
func (s *pushersStatements) prepare(db *sql.DB, writer sqlutil.Writer, server gomatrixserverlib.ServerName) (err error) {
|
||||
s.db = db
|
||||
s.writer = writer
|
||||
if s.insertPusherStmt, err = db.Prepare(insertPusherSQL); err != nil {
|
||||
return
|
||||
}
|
||||
if s.selectPushersByLocalpartStmt, err = db.Prepare(selectPushersByLocalpartSQL); err != nil {
|
||||
return
|
||||
}
|
||||
|
@ -81,6 +89,17 @@ func (s *pushersStatements) prepare(db *sql.DB, writer sqlutil.Writer, server go
|
|||
return
|
||||
}
|
||||
|
||||
// insertPusher creates a new pusher.
|
||||
// Returns an error if the user already has a pusher with the given pusher pushkey.
|
||||
// Returns nil error success.
|
||||
func (s *pushersStatements) insertPusher(
|
||||
ctx context.Context, txn *sql.Tx, pushkey, kind, appid, appdisplayname, devicedisplayname, profiletag, lang, url, format, localpart string,
|
||||
) error {
|
||||
stmt := sqlutil.TxStmt(txn, s.insertPusherStmt)
|
||||
_, err := stmt.ExecContext(ctx, localpart, pushkey, kind, appid, appdisplayname, devicedisplayname, profiletag, lang, url, format)
|
||||
return err
|
||||
}
|
||||
|
||||
func (s *pushersStatements) selectPushersByLocalpart(
|
||||
ctx context.Context, txn *sql.Tx, localpart string,
|
||||
) ([]api.Pusher, error) {
|
||||
|
|
|
@ -57,6 +57,12 @@ func NewDatabase(dbProperties *config.DatabaseOptions, serverName gomatrixserver
|
|||
return &Database{db, writer, d}, nil
|
||||
}
|
||||
|
||||
func (d *Database) CreatePusher(
|
||||
ctx context.Context, pushkey, kind, appid, appdisplayname, devicedisplayname, profiletag, lang, url, format, localpart string,
|
||||
) error {
|
||||
return d.pushers.insertPusher(ctx, nil, pushkey, kind, appid, appdisplayname, devicedisplayname, profiletag, lang, url, format, localpart)
|
||||
}
|
||||
|
||||
// GetPushersByLocalpart returns the pushers matching the given localpart.
|
||||
func (d *Database) GetPushersByLocalpart(
|
||||
ctx context.Context, localpart string,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue