mirror of https://gitlab.com/litecord/litecord.git
blueprints: add dummy attachment blueprint
- storage: add message attachment fetching (not working)
This commit is contained in:
parent
ec062f75a8
commit
9ec8577b7f
|
|
@ -0,0 +1,29 @@
|
|||
"""
|
||||
|
||||
Litecord
|
||||
Copyright (C) 2018 Luna Mendes
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, version 3 of the License.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
"""
|
||||
|
||||
from quart import Blueprint
|
||||
|
||||
bp = Blueprint(__name__)
|
||||
|
||||
@bp.route('/<channel_id:int>/<message_id:int>/<filename:int>.<ext>',
|
||||
methods=['GET'])
|
||||
async def _get_attachment(channel_id: int, message_id: int,
|
||||
filename: str, ext: str):
|
||||
# TODO: get the attachment id with given metadata
|
||||
return
|
||||
|
|
@ -388,6 +388,8 @@ async def _add_attachment(message_id: int, attachment_file) -> int:
|
|||
attachment_id, attachment_file.filename, file_size,
|
||||
is_image, img_width, img_height)
|
||||
|
||||
# TODO: save a file
|
||||
|
||||
# add the newly created attachment to the message
|
||||
await app.db.execute("""
|
||||
INSERT INTO message_attachments (message_id, attachment_id)
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@ from litecord.blueprints.user.billing import PLAN_ID_TO_TYPE
|
|||
|
||||
from litecord.types import timestamp_
|
||||
from litecord.utils import pg_set_json
|
||||
from litecord.embed.sanitizer import proxify
|
||||
|
||||
|
||||
log = Logger(__name__)
|
||||
|
|
@ -636,6 +637,34 @@ class Storage:
|
|||
# they were defined in the first loop.
|
||||
return list(map(react_stats.get, emoji))
|
||||
|
||||
async def get_attachments(self, message_id: int) -> List[Dict[str, Any]]:
|
||||
"""Get a list of attachment objects tied to the message."""
|
||||
attachment_ids = await self.db.fetch("""
|
||||
SELECT attachment_id
|
||||
FROM message_attachments
|
||||
WHERE message_id = $1
|
||||
""", message_id)
|
||||
|
||||
res = []
|
||||
|
||||
for attachment_id in attachment_ids:
|
||||
row = await self.db.fetchrow("""
|
||||
SELECT id::text, filename, filesize, image, height, width
|
||||
FROM attachments
|
||||
WHERE id = $1
|
||||
""", attachment_id)
|
||||
|
||||
drow = dict(row)
|
||||
|
||||
drow['size'] = drow['filesize']
|
||||
drow.pop('size')
|
||||
|
||||
# TODO: url, proxy_url
|
||||
|
||||
res.append(drow)
|
||||
|
||||
return res
|
||||
|
||||
async def get_message(self, message_id: int, user_id=None) -> Dict:
|
||||
"""Get a single message's payload."""
|
||||
row = await self.fetchrow_with_json("""
|
||||
|
|
@ -703,7 +732,7 @@ class Storage:
|
|||
res.pop('author_id')
|
||||
|
||||
# TODO: res['attachments']
|
||||
res['attachments'] = []
|
||||
res['attachments'] = await self.get_attachments(message_id)
|
||||
|
||||
# TODO: res['member'] for partial member data
|
||||
# of the author
|
||||
|
|
|
|||
Loading…
Reference in New Issue