diff options
Diffstat (limited to 'mediaapi/storage/postgres/media_repository_table.go')
-rw-r--r-- | mediaapi/storage/postgres/media_repository_table.go | 30 |
1 files changed, 28 insertions, 2 deletions
diff --git a/mediaapi/storage/postgres/media_repository_table.go b/mediaapi/storage/postgres/media_repository_table.go index e975530a..1d3264ca 100644 --- a/mediaapi/storage/postgres/media_repository_table.go +++ b/mediaapi/storage/postgres/media_repository_table.go @@ -59,9 +59,14 @@ const selectMediaSQL = ` SELECT content_type, file_size_bytes, creation_ts, upload_name, base64hash, user_id FROM mediaapi_media_repository WHERE media_id = $1 AND media_origin = $2 ` +const selectMediaByHashSQL = ` +SELECT content_type, file_size_bytes, creation_ts, upload_name, media_id, user_id FROM mediaapi_media_repository WHERE base64hash = $1 AND media_origin = $2 +` + type mediaStatements struct { - insertMediaStmt *sql.Stmt - selectMediaStmt *sql.Stmt + insertMediaStmt *sql.Stmt + selectMediaStmt *sql.Stmt + selectMediaByHashStmt *sql.Stmt } func (s *mediaStatements) prepare(db *sql.DB) (err error) { @@ -73,6 +78,7 @@ func (s *mediaStatements) prepare(db *sql.DB) (err error) { return statementList{ {&s.insertMediaStmt, insertMediaSQL}, {&s.selectMediaStmt, selectMediaSQL}, + {&s.selectMediaByHashStmt, selectMediaByHashSQL}, }.prepare(db) } @@ -113,3 +119,23 @@ func (s *mediaStatements) selectMedia( ) return &mediaMetadata, err } + +func (s *mediaStatements) selectMediaByHash( + ctx context.Context, mediaHash types.Base64Hash, mediaOrigin gomatrixserverlib.ServerName, +) (*types.MediaMetadata, error) { + mediaMetadata := types.MediaMetadata{ + Base64Hash: mediaHash, + Origin: mediaOrigin, + } + err := s.selectMediaStmt.QueryRowContext( + ctx, mediaMetadata.Base64Hash, mediaMetadata.Origin, + ).Scan( + &mediaMetadata.ContentType, + &mediaMetadata.FileSizeBytes, + &mediaMetadata.CreationTimestamp, + &mediaMetadata.UploadName, + &mediaMetadata.MediaID, + &mediaMetadata.UserID, + ) + return &mediaMetadata, err +} |