4
0
mirror of https://github.com/cwinfo/matterbridge.git synced 2025-07-03 21:17:46 +00:00

Update dependencies (#1951)

This commit is contained in:
Wim
2023-01-28 22:57:53 +01:00
committed by GitHub
parent eac2a8c8dc
commit 880586bac4
325 changed files with 151452 additions and 141118 deletions

View File

@ -126,6 +126,7 @@ func (c *Container) scanDevice(row scannable) (*store.Device, error) {
device.Contacts = innerStore
device.ChatSettings = innerStore
device.MsgSecrets = innerStore
device.PrivacyTokens = innerStore
device.Container = c
device.Initialized = true
@ -240,6 +241,7 @@ func (c *Container) PutDevice(device *store.Device) error {
device.Contacts = innerStore
device.ChatSettings = innerStore
device.MsgSecrets = innerStore
device.PrivacyTokens = innerStore
device.Initialized = true
}
return err

View File

@ -706,7 +706,7 @@ func (s *SQLStore) PutMessageSecrets(inserts []store.MessageSecretInsert) (err e
return fmt.Errorf("failed to begin transaction: %w", err)
}
for _, insert := range inserts {
_, err = s.db.Exec(putMsgSecret, s.JID, insert.Chat.ToNonAD(), insert.Sender.ToNonAD(), insert.ID, insert.Secret)
_, err = tx.Exec(putMsgSecret, s.JID, insert.Chat.ToNonAD(), insert.Sender.ToNonAD(), insert.ID, insert.Secret)
}
err = tx.Commit()
if err != nil {
@ -727,3 +727,42 @@ func (s *SQLStore) GetMessageSecret(chat, sender types.JID, id types.MessageID)
}
return
}
const (
putPrivacyTokens = `
INSERT INTO whatsmeow_privacy_tokens (our_jid, their_jid, token, timestamp)
VALUES ($1, $2, $3, $4)
ON CONFLICT (our_jid, their_jid) DO UPDATE SET token=EXCLUDED.token, timestamp=EXCLUDED.timestamp
`
getPrivacyToken = `SELECT token, timestamp FROM whatsmeow_privacy_tokens WHERE our_jid=$1 AND their_jid=$2`
)
func (s *SQLStore) PutPrivacyTokens(tokens ...store.PrivacyToken) error {
args := make([]any, 1+len(tokens)*3)
placeholders := make([]string, len(tokens))
args[0] = s.JID
for i, token := range tokens {
args[i*3+1] = token.User.ToNonAD().String()
args[i*3+2] = token.Token
args[i*3+3] = token.Timestamp.Unix()
placeholders[i] = fmt.Sprintf("($1, $%d, $%d, $%d)", i*3+2, i*3+3, i*3+4)
}
query := strings.ReplaceAll(putPrivacyTokens, "($1, $2, $3, $4)", strings.Join(placeholders, ","))
_, err := s.db.Exec(query, args...)
return err
}
func (s *SQLStore) GetPrivacyToken(user types.JID) (*store.PrivacyToken, error) {
var token store.PrivacyToken
token.User = user.ToNonAD()
var ts int64
err := s.db.QueryRow(getPrivacyToken, s.JID, token.User).Scan(&token.Token, &ts)
if errors.Is(err, sql.ErrNoRows) {
return nil, nil
} else if err != nil {
return nil, err
} else {
token.Timestamp = time.Unix(ts, 0)
return &token, nil
}
}

View File

@ -16,7 +16,7 @@ type upgradeFunc func(*sql.Tx, *Container) error
//
// This may be of use if you want to manage the database fully manually, but in most cases you
// should just call Container.Upgrade to let the library handle everything.
var Upgrades = [...]upgradeFunc{upgradeV1, upgradeV2, upgradeV3}
var Upgrades = [...]upgradeFunc{upgradeV1, upgradeV2, upgradeV3, upgradeV4}
func (c *Container) getVersion() (int, error) {
_, err := c.db.Exec("CREATE TABLE IF NOT EXISTS whatsmeow_version (version INTEGER)")
@ -260,3 +260,14 @@ func upgradeV3(tx *sql.Tx, container *Container) error {
)`)
return err
}
func upgradeV4(tx *sql.Tx, container *Container) error {
_, err := tx.Exec(`CREATE TABLE whatsmeow_privacy_tokens (
our_jid TEXT,
their_jid TEXT,
token bytea NOT NULL,
timestamp BIGINT NOT NULL,
PRIMARY KEY (our_jid, their_jid)
)`)
return err
}