mirror of
https://github.com/mautrix/whatsapp.git
synced 2026-05-15 10:16:52 -04:00
51 lines
1.4 KiB
Go
51 lines
1.4 KiB
Go
package wadb
|
|
|
|
import (
|
|
"context"
|
|
|
|
"go.mau.fi/util/dbutil"
|
|
"go.mau.fi/util/jsontime"
|
|
"go.mau.fi/whatsmeow/types"
|
|
)
|
|
|
|
type AvatarCacheQuery struct {
|
|
*dbutil.QueryHelper[*AvatarCacheEntry]
|
|
}
|
|
|
|
const (
|
|
getAvatarCacheEntry = `
|
|
SELECT entity_jid, avatar_id, direct_path, expiry, gone
|
|
FROM whatsapp_avatar_cache
|
|
WHERE entity_jid = $1 AND avatar_id = $2
|
|
`
|
|
putAvatarCacheEntry = `
|
|
INSERT INTO whatsapp_avatar_cache (entity_jid, avatar_id, direct_path, expiry, gone)
|
|
VALUES ($1, $2, $3, $4, $5)
|
|
ON CONFLICT (entity_jid, avatar_id) DO UPDATE
|
|
SET direct_path = EXCLUDED.direct_path, expiry = EXCLUDED.expiry, gone = EXCLUDED.gone
|
|
`
|
|
)
|
|
|
|
func (acq *AvatarCacheQuery) Get(ctx context.Context, entityJID types.JID, avatarID string) (*AvatarCacheEntry, error) {
|
|
return acq.QueryOne(ctx, getAvatarCacheEntry, entityJID, avatarID)
|
|
}
|
|
|
|
func (acq *AvatarCacheQuery) Put(ctx context.Context, entry *AvatarCacheEntry) error {
|
|
return acq.Exec(ctx, putAvatarCacheEntry, entry.sqlVariables()...)
|
|
}
|
|
|
|
type AvatarCacheEntry struct {
|
|
EntityJID types.JID
|
|
AvatarID string
|
|
DirectPath string
|
|
Expiry jsontime.Unix
|
|
Gone bool
|
|
}
|
|
|
|
func (ace *AvatarCacheEntry) Scan(row dbutil.Scannable) (*AvatarCacheEntry, error) {
|
|
return dbutil.ValueOrErr(ace, row.Scan(&ace.EntityJID, &ace.AvatarID, &ace.DirectPath, &ace.Expiry, &ace.Gone))
|
|
}
|
|
|
|
func (ace *AvatarCacheEntry) sqlVariables() []any {
|
|
return []any{ace.EntityJID, ace.AvatarID, ace.DirectPath, ace.Expiry, ace.Gone}
|
|
}
|