Split into three async queries
parent
5465c1d16a
commit
f63fd6c155
|
@ -108,43 +108,59 @@ export default class Database {
|
||||||
INSERT INTO member (user, group_)
|
INSERT INTO member (user, group_)
|
||||||
VALUES (?, ?)
|
VALUES (?, ?)
|
||||||
`, [u, group.insertId]);
|
`, [u, group.insertId]);
|
||||||
await Promise.all(data.members.map(insertMember));
|
return Promise.all(data.members.map(insertMember));
|
||||||
}
|
}
|
||||||
async getGroup(school, id) {
|
async getGroup(school, id) {
|
||||||
return this.query(`
|
const getGroup = this.query(`
|
||||||
SELECT
|
SELECT *
|
||||||
group_.id as group_id,
|
FROM group_
|
||||||
group_.name as group_name,
|
|
||||||
group_mentor.year as group_mentor_year,
|
|
||||||
group_mentor.level as group_mentor_level,
|
|
||||||
user.id,
|
|
||||||
user.name
|
|
||||||
user.email
|
|
||||||
FROM
|
|
||||||
(
|
|
||||||
group_mentor RIGHT JOIN group_
|
|
||||||
ON group_mentor.id = group_.id
|
|
||||||
)
|
|
||||||
RIGHT JOIN (member, user)
|
|
||||||
ON member.group_ = group_.id
|
|
||||||
AND member.user = user.id
|
|
||||||
WHERE group_.id = ?
|
WHERE group_.id = ?
|
||||||
`, [id], {
|
`, [id], {
|
||||||
required: true,
|
required: true,
|
||||||
})
|
single: true,
|
||||||
.then(results => ({
|
}).catch(attachNoun('Group'));
|
||||||
id: results[0].group_id,
|
const getMembers = this.query(`
|
||||||
name: results[0].group_name,
|
SELECT user.*
|
||||||
level: results[0].group_mentor_level,
|
FROM member, user
|
||||||
year: results[0].group_mentor_year,
|
WHERE member.user = user.id
|
||||||
members: results[0].id ? results.map(r => Object.assign(r, {
|
AND member.group_ = ?
|
||||||
group_id: undefined,
|
`, [id]);
|
||||||
group_name: undefined,
|
const getEventsOnce = this.query(`
|
||||||
group_mentor_level: undefined,
|
SELECT *
|
||||||
group_mentor_year: undefined,
|
FROM event_once
|
||||||
})) : [],
|
WHERE event_once.group_ = ?
|
||||||
}))
|
`, [id]);
|
||||||
.catch(attachNoun('Group'));
|
return Promise.all([getGroup, getMembers, getEventsOnce])
|
||||||
|
.then(results => Object.assign({}, results[0], {
|
||||||
|
members: results[1].map(m => Object.assign(m, {
|
||||||
|
pwd_hash: undefined,
|
||||||
|
oid_id: undefined,
|
||||||
|
})),
|
||||||
|
eventsOnce: results[2],
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
|
async createEventOnce(school, group, data) {
|
||||||
|
return this.query(`
|
||||||
|
INSERT INTO event_once (group_, name, start, end)
|
||||||
|
VALUES (?, ?, ?, ?)
|
||||||
|
`, [group, data.name, data.start, data.end]);
|
||||||
|
}
|
||||||
|
async getEventOnce(school, group, id) {
|
||||||
|
return this.query(`
|
||||||
|
SELECT *
|
||||||
|
FROM event_once
|
||||||
|
WHERE event_once.group_ = ?
|
||||||
|
AND event_once.id = ?
|
||||||
|
`, [group, id]);
|
||||||
|
}
|
||||||
|
// eslint-disable-next-line
|
||||||
|
async getEventClashesWith(school, group, id) {
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
async getUserEventsBetween(school, user, start, end) {
|
||||||
|
// oh shit
|
||||||
}
|
}
|
||||||
|
|
||||||
query(query, values, options = {}) {
|
query(query, values, options = {}) {
|
||||||
|
|
Loading…
Reference in New Issue