88 lines
1.4 KiB
TypeScript
88 lines
1.4 KiB
TypeScript
import { PipelineStage, Types } from "mongoose"
|
|
|
|
function userNotif(uname: string) {
|
|
var pipeline: PipelineStage[] = [
|
|
{
|
|
"$match": {
|
|
uname: uname
|
|
}
|
|
}
|
|
]
|
|
return pipeline
|
|
}
|
|
|
|
function roomNotif(room: string) {
|
|
var pipeline: PipelineStage[] = [
|
|
{
|
|
$lookup: {
|
|
from: "logins",
|
|
localField: "uname",
|
|
foreignField: "uname",
|
|
as: "user",
|
|
},
|
|
},
|
|
{
|
|
$unwind: {
|
|
path: "$user",
|
|
preserveNullAndEmptyArrays: false,
|
|
},
|
|
},
|
|
{
|
|
$addFields: {
|
|
rooms: "$user.room",
|
|
},
|
|
},
|
|
{
|
|
$match:
|
|
{
|
|
rooms: room,
|
|
},
|
|
},
|
|
{
|
|
$unset:
|
|
["user", "uname", "rooms"],
|
|
},
|
|
]
|
|
return pipeline
|
|
}
|
|
|
|
function allNotif() {
|
|
var pipeline: PipelineStage[] = [
|
|
{
|
|
$lookup: {
|
|
from: "logins",
|
|
localField: "uname",
|
|
foreignField: "uname",
|
|
as: "user",
|
|
},
|
|
},
|
|
{
|
|
$unwind: {
|
|
path: "$user",
|
|
preserveNullAndEmptyArrays: false,
|
|
},
|
|
},
|
|
{
|
|
$addFields: {
|
|
rooms: "$user.room",
|
|
},
|
|
},
|
|
{
|
|
$match:
|
|
{
|
|
rooms: {$exists: true},
|
|
},
|
|
},
|
|
{
|
|
$unset:
|
|
["user", "uname", "rooms"],
|
|
},
|
|
]
|
|
return pipeline
|
|
}
|
|
|
|
function groupNotif(group: string) {
|
|
return
|
|
}
|
|
|
|
export { userNotif, roomNotif, allNotif, groupNotif } |