dispatch a gateway event when a channel is created, updated or removed
This commit is contained in:
parent
701f6ae1ac
commit
ce9d331bc6
3 changed files with 35 additions and 7 deletions
|
@ -2,5 +2,9 @@ export enum GatewayPayloadType {
|
|||
Hello = 0,
|
||||
Authenticate,
|
||||
Ready,
|
||||
Ping
|
||||
Ping,
|
||||
|
||||
ChannelCreate = 1000,
|
||||
ChannelUpdate,
|
||||
ChannelDelete
|
||||
}
|
||||
|
|
|
@ -4,6 +4,7 @@ import { authenticateRoute } from "../../../auth";
|
|||
import { query } from "../../../database";
|
||||
import { errors } from "../../../errors";
|
||||
import { dispatch } from "../../../gateway";
|
||||
import { GatewayPayloadType } from "../../../gateway/gatewaypayloadtype";
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
|
@ -25,6 +26,11 @@ router.post(
|
|||
});
|
||||
}
|
||||
|
||||
dispatch("*", {
|
||||
t: GatewayPayloadType.ChannelCreate,
|
||||
d: result.rows[0]
|
||||
});
|
||||
|
||||
res.status(201).send(result.rows[0]);
|
||||
}
|
||||
);
|
||||
|
@ -41,7 +47,7 @@ router.put(
|
|||
}
|
||||
|
||||
const { name } = req.body;
|
||||
const { id } = req.params;
|
||||
const id = parseInt(req.params.id); // TODO: ??
|
||||
|
||||
const permissionCheckResult = await query("SELECT owner_id FROM channels WHERE id = $1", [id]);
|
||||
if (permissionCheckResult.rowCount < 1) {
|
||||
|
@ -62,11 +68,20 @@ router.put(
|
|||
});
|
||||
}
|
||||
|
||||
return res.status(200).send({
|
||||
id: parseInt(id), // TODO: ??
|
||||
const updatePayload = {
|
||||
id,
|
||||
name,
|
||||
owner_id: permissionCheckResult.rows[0].owner_id
|
||||
};
|
||||
|
||||
// TODO: implement per-user channel joining and communities
|
||||
//dispatch(`channel:${id}`, {
|
||||
dispatch("*", {
|
||||
t: GatewayPayloadType.ChannelUpdate,
|
||||
d: updatePayload
|
||||
});
|
||||
|
||||
return res.status(200).send(updatePayload);
|
||||
}
|
||||
);
|
||||
|
||||
|
@ -80,7 +95,7 @@ router.delete(
|
|||
return res.status(400).json({ ...errors.INVALID_DATA, errors: validationErrors.array() });
|
||||
}
|
||||
|
||||
const { id } = req.params;
|
||||
const id = parseInt(req.params.id); // TODO: ??
|
||||
|
||||
const permissionCheckResult = await query("SELECT owner_id FROM channels WHERE id = $1", [id]);
|
||||
if (permissionCheckResult.rowCount < 1) {
|
||||
|
@ -101,6 +116,15 @@ router.delete(
|
|||
});
|
||||
}
|
||||
|
||||
// TODO: implement per-user channel joining and communities
|
||||
//dispatch(`channel:${id}`, {
|
||||
dispatch("*", {
|
||||
t: GatewayPayloadType.ChannelDelete,
|
||||
d: {
|
||||
id
|
||||
}
|
||||
});
|
||||
|
||||
return res.status(204).send("");
|
||||
}
|
||||
);
|
||||
|
|
|
@ -28,12 +28,12 @@ content-type: application/json
|
|||
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MiwidHlwZSI6MSwiaWF0IjoxNjQ5NTI0NDA1LCJleHAiOjE2NDk2OTcyMDV9.4nIDs0K8MCT18GsdlKdicT_GK2KbEqi_P7cND3_aZvE
|
||||
|
||||
{
|
||||
"name": "another channel"
|
||||
"name": "yet another channel"
|
||||
}
|
||||
|
||||
###
|
||||
|
||||
PUT http://localhost:3000/api/v1/channels/2 HTTP/1.1
|
||||
PUT http://localhost:3000/api/v1/channels/5 HTTP/1.1
|
||||
content-type: application/json
|
||||
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MiwidHlwZSI6MSwiaWF0IjoxNjQ5NTI0NDA1LCJleHAiOjE2NDk2OTcyMDV9.4nIDs0K8MCT18GsdlKdicT_GK2KbEqi_P7cND3_aZvE
|
||||
#Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MiwidHlwZSI6MSwiaWF0IjoxNjQ5MjU5NDUwLCJleHAiOjE2NDk0MzIyNTB9.JmF9NujFZnln7A-ynNpeyayGBqmR5poAyACYV6RnSQY
|
||||
|
|
Loading…
Reference in a new issue