Implemented Create Pusher

This commit is contained in:
Dan Peleg 2021-05-02 17:11:53 +03:00
parent 024afaba7c
commit 4c4cf8020a
10 changed files with 110 additions and 2 deletions

View file

@ -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) {

View file

@ -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,