reactions: support custom emojis

Signed-off-by: Sumner Evans <sumner.evans@automattic.com>
This commit is contained in:
Sumner Evans
2024-06-28 10:41:28 -06:00
parent 33dc5bad03
commit a63f264804
16 changed files with 244 additions and 228 deletions
+10 -52
View File
@@ -2,23 +2,14 @@ package store
import (
"context"
"database/sql"
"encoding/json"
"time"
"go.mau.fi/util/dbutil"
"maunium.net/go/mautrix/id"
)
const (
insertTelegramFileQuery = `
INSERT INTO telegram_file (
id, mxc, mime_type, was_converted, timestamp, size, width, height, thumbnail, decryption_info)
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10)
`
getTelegramFileSelect = `
SELECT id, mxc, mime_type, was_converted, timestamp, size, width, height, thumbnail, decryption_info
FROM telegram_file
`
insertTelegramFileQuery = "INSERT INTO telegram_file (id, mxc, mime_type, size) VALUES ($1, $2, $3, $4)"
getTelegramFileSelect = "SELECT id, mxc, mime_type, size FROM telegram_file "
getTelegramFileByLocationIDQuery = getTelegramFileSelect + "WHERE id=$1"
getTelegramFileByMXCQuery = getTelegramFileSelect + "WHERE mxc=$1"
)
@@ -32,16 +23,10 @@ type TelegramFileLocationID string
type TelegramFile struct {
qh *dbutil.QueryHelper[*TelegramFile]
LocationID TelegramFileLocationID
MXC string
MimeType string
WasConverted bool
Timestamp time.Time
Size int64
Width int
Height int
ThumbnailID string
DecryptionInfo json.RawMessage
LocationID TelegramFileLocationID
MXC id.ContentURIString
MIMEType string
Size int
}
var _ dbutil.DataStruct[*TelegramFile] = (*TelegramFile)(nil)
@@ -50,7 +35,7 @@ func newTelegramFile(qh *dbutil.QueryHelper[*TelegramFile]) *TelegramFile {
return &TelegramFile{qh: qh}
}
func (fq *TelegramFileQuery) GetByLocationID(ctx context.Context, locationID string) (*TelegramFile, error) {
func (fq *TelegramFileQuery) GetByLocationID(ctx context.Context, locationID TelegramFileLocationID) (*TelegramFile, error) {
return fq.QueryOne(ctx, getTelegramFileByLocationIDQuery, locationID)
}
@@ -59,18 +44,7 @@ func (fq *TelegramFileQuery) GetByMXC(ctx context.Context, mxc string) (*Telegra
}
func (f *TelegramFile) sqlVariables() []any {
return []any{
f.LocationID,
f.MXC,
f.MimeType,
f.WasConverted,
f.Timestamp.UnixMilli(),
f.Size,
f.Width,
f.Height,
f.ThumbnailID,
f.DecryptionInfo,
}
return []any{f.LocationID, f.MXC, f.MIMEType, f.Size}
}
func (f *TelegramFile) Insert(ctx context.Context) error {
@@ -78,21 +52,5 @@ func (f *TelegramFile) Insert(ctx context.Context) error {
}
func (f *TelegramFile) Scan(row dbutil.Scannable) (*TelegramFile, error) {
var thumbnailID sql.NullString
var timestamp int64
err := row.Scan(
&f.LocationID,
&f.MXC,
&f.MimeType,
&f.WasConverted,
&timestamp,
&f.Size,
&f.Width,
&f.Height,
&thumbnailID,
&f.DecryptionInfo,
)
f.Timestamp = time.UnixMilli(timestamp)
f.ThumbnailID = thumbnailID.String
return f, err
return f, row.Scan(&f.LocationID, &f.MXC, &f.MIMEType, &f.Size)
}
+4 -12
View File
@@ -32,16 +32,8 @@ CREATE TABLE telegram_channel_access_hashes (
);
CREATE TABLE telegram_file (
id TEXT PRIMARY KEY,
mxc TEXT NOT NULL,
mime_type TEXT,
was_converted BOOLEAN NOT NULL DEFAULT false,
timestamp BIGINT NOT NULL DEFAULT 0,
size BIGINT,
width INTEGER,
height INTEGER,
thumbnail TEXT,
decryption_info jsonb,
FOREIGN KEY (thumbnail) REFERENCES telegram_file(id)
ON UPDATE CASCADE ON DELETE SET NULL
id TEXT PRIMARY KEY,
mxc TEXT NOT NULL,
mime_type TEXT,
size BIGINT
);