generated from lucien/api-template
add: improved sql requests
This commit is contained in:
parent
bd3cbc528c
commit
1317d431d0
3 changed files with 95 additions and 35 deletions
|
@ -338,11 +338,15 @@ function deleteChannelMessages(connection, channel_id) {
|
|||
function getMessages(connection, channel_id, limit) {
|
||||
return new Promise((resolve, reject) => {
|
||||
connection.query(
|
||||
`SELECT messages.id, user_id, username, content, date, channels.name AS channel_name, has_replies
|
||||
FROM messages
|
||||
`SELECT messages.id, messages.user_id, username, messages.content, messages.date, channels.name AS channel_name, (mentions.id IS NOT NULL) as has_mentions, (reply.id IS NOT NULL) as has_replies, (attachments.id IS NOT NULL) as has_attachments
|
||||
FROM messages
|
||||
JOIN users ON messages.user_id = users.id
|
||||
JOIN channels ON messages.channel_id = channels.id
|
||||
WHERE channel_id = ? AND reply_to_id IS NULL
|
||||
LEFT JOIN mentions ON messages.id = mentions.message_id
|
||||
LEFT JOIN messages as reply ON messages.id = reply.reply_to_id
|
||||
LEFT JOIN attachments ON messages.id = attachments.message_id
|
||||
WHERE messages.channel_id = ? AND messages.reply_to_id IS NULL
|
||||
GROUP BY messages.id
|
||||
ORDER BY date DESC
|
||||
LIMIT ?`,
|
||||
[channel_id, limit],
|
||||
|
@ -359,11 +363,15 @@ function getMessages(connection, channel_id, limit) {
|
|||
function getMessage(connection, message_id) {
|
||||
return new Promise((resolve, reject) => {
|
||||
connection.query(
|
||||
`SELECT messages.id, user_id, username, content, date, channels.name AS channel_name, has_replies
|
||||
FROM messages
|
||||
`SELECT messages.id, messages.user_id, username, messages.content, messages.date, channels.name AS channel_name, (mentions.id IS NOT NULL) as has_mentions, (reply.id IS NOT NULL) as has_replies, (attachments.id IS NOT NULL) as has_attachments
|
||||
FROM messages
|
||||
JOIN users ON messages.user_id = users.id
|
||||
JOIN channels ON messages.channel_id = channels.id
|
||||
WHERE messages.id = ?`,
|
||||
LEFT JOIN mentions ON messages.id = mentions.message_id
|
||||
LEFT JOIN messages as reply ON messages.id = reply.reply_to_id
|
||||
LEFT JOIN attachments ON messages.id = attachments.message_id
|
||||
WHERE messages.id = ?
|
||||
GROUP BY messages.id`,
|
||||
[message_id],
|
||||
(error, result) => {
|
||||
if (error) {
|
||||
|
@ -378,11 +386,16 @@ function getMessage(connection, message_id) {
|
|||
function getLastMessages(connection) {
|
||||
return new Promise((resolve, reject) => {
|
||||
connection.query(
|
||||
`SELECT messages.id, user_id, username, content, date, channels.name AS channel_name, has_replies
|
||||
FROM messages
|
||||
`SELECT messages.id, messages.user_id, username, messages.content, messages.date, channels.name AS channel_name, (mentions.id IS NOT NULL) as has_mentions, (reply.id IS NOT NULL) as has_replies, (attachments.id IS NOT NULL) as has_attachments
|
||||
FROM messages
|
||||
JOIN users ON messages.user_id = users.id
|
||||
JOIN channels ON messages.channel_id = channels.id
|
||||
ORDER BY date DESC LIMIT 5`,
|
||||
JOIN channels ON messages.channel_id = channels.id
|
||||
LEFT JOIN mentions ON messages.id = mentions.message_id
|
||||
LEFT JOIN messages as reply ON messages.id = reply.reply_to_id
|
||||
LEFT JOIN attachments ON messages.id = attachments.message_id
|
||||
GROUP BY messages.id
|
||||
ORDER BY date DESC
|
||||
LIMIT 5`,
|
||||
(error, result) => {
|
||||
if (error) {
|
||||
reject(new Error(error));
|
||||
|
@ -396,12 +409,17 @@ function getLastMessages(connection) {
|
|||
function getUserLastMessages(connection, username) {
|
||||
return new Promise((resolve, reject) => {
|
||||
connection.query(
|
||||
`SELECT messages.id, user_id, username, content, date, channels.name AS channel_name, has_replies
|
||||
FROM messages
|
||||
`SELECT messages.id, messages.user_id, username, messages.content, messages.date, channels.name AS channel_name, (mentions.id IS NOT NULL) as has_mentions, (reply.id IS NOT NULL) as has_replies, (attachments.id IS NOT NULL) as has_attachments
|
||||
FROM messages
|
||||
JOIN users ON messages.user_id = users.id
|
||||
JOIN channels ON messages.channel_id = channels.id
|
||||
LEFT JOIN mentions ON messages.id = mentions.message_id
|
||||
LEFT JOIN messages as reply ON messages.id = reply.reply_to_id
|
||||
LEFT JOIN attachments ON messages.id = attachments.message_id
|
||||
WHERE username = ?
|
||||
ORDER BY date DESC LIMIT 5`,
|
||||
GROUP BY messages.id
|
||||
ORDER BY date DESC
|
||||
LIMIT 5`,
|
||||
[username],
|
||||
(error, result) => {
|
||||
if (error) {
|
||||
|
@ -416,11 +434,16 @@ function getUserLastMessages(connection, username) {
|
|||
function getMessageReplies(connection, message_id) {
|
||||
return new Promise((resolve, reject) => {
|
||||
connection.query(
|
||||
`SELECT messages.id, user_id, username, content, date, channels.name AS channel_name, has_replies
|
||||
FROM messages
|
||||
`SELECT messages.id, messages.user_id, username, messages.content, messages.date, channels.name AS channel_name, (mentions.id IS NOT NULL) as has_mentions, (reply.id IS NOT NULL) as has_replies, (attachments.id IS NOT NULL) as has_attachments
|
||||
FROM messages
|
||||
JOIN users ON messages.user_id = users.id
|
||||
JOIN channels ON messages.channel_id = channels.id
|
||||
WHERE reply_to_id = ?`,
|
||||
LEFT JOIN mentions ON messages.id = mentions.message_id
|
||||
LEFT JOIN messages as reply ON messages.id = reply.reply_to_id
|
||||
LEFT JOIN attachments ON messages.id = attachments.message_id
|
||||
WHERE messages.reply_to_id = ?
|
||||
GROUP BY messages.id
|
||||
ORDER BY date DESC`,
|
||||
[message_id],
|
||||
(error, result) => {
|
||||
if (error) {
|
||||
|
@ -432,21 +455,6 @@ function getMessageReplies(connection, message_id) {
|
|||
});
|
||||
}
|
||||
|
||||
function setHasReplies(connection, message_id, has_replies) {
|
||||
return new Promise((resolve, reject) => {
|
||||
connection.query(
|
||||
`UPDATE messages SET has_replies = ? WHERE id = ?`,
|
||||
[has_replies, message_id],
|
||||
(error, result) => {
|
||||
if (error) {
|
||||
reject(new Error(error));
|
||||
}
|
||||
resolve(result);
|
||||
}
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
// +---------------------------+
|
||||
// | Mentions |
|
||||
// +---------------------------+
|
||||
|
@ -576,6 +584,54 @@ function searchEmojis(connection, search) {
|
|||
});
|
||||
}
|
||||
|
||||
// +---------------------------+
|
||||
// | Attachemnts |
|
||||
// +---------------------------+
|
||||
|
||||
function addAttachment(connection, message_id, file_name) {
|
||||
return new Promise((resolve, reject) => {
|
||||
connection.query(
|
||||
`INSERT INTO attachments (message_id, file_name) VALUES (?, ?)`,
|
||||
[message_id, file_name],
|
||||
(error, result) => {
|
||||
if (error) {
|
||||
reject(new Error(error));
|
||||
}
|
||||
resolve(result);
|
||||
}
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
function deleteUnusedAttachments(connection) {
|
||||
return new Promise((resolve, reject) => {
|
||||
connection.query(
|
||||
`DELETE FROM attachments WHERE message_id IS NULL`,
|
||||
(error, result) => {
|
||||
if (error) {
|
||||
reject(new Error(error));
|
||||
}
|
||||
resolve(result);
|
||||
}
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
function getMessageAttachments(connection, message_id) {
|
||||
return new Promise((resolve, reject) => {
|
||||
connection.query(
|
||||
`SELECT * FROM attachments WHERE message_id = ?`,
|
||||
[message_id],
|
||||
(error, result) => {
|
||||
if (error) {
|
||||
reject(new Error(error));
|
||||
}
|
||||
resolve(result);
|
||||
}
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
getConnection,
|
||||
|
||||
|
@ -606,7 +662,6 @@ module.exports = {
|
|||
getUserLastMessages,
|
||||
getLastMessages,
|
||||
getMessageReplies,
|
||||
setHasReplies,
|
||||
|
||||
addMention,
|
||||
getMentions,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue