SpaceNinjaServer/src/services/inboxService.ts
Sainan a8e41c95e7 chore: move createNewEventMessages from inboxService to inboxController (#2828)
This function wasn't used anywhere else and caused a recursive include in inboxService.

Reviewed-on: OpenWF/SpaceNinjaServer#2828
Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com>
Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com>
2025-09-29 23:59:26 -07:00

46 lines
1.5 KiB
TypeScript

import type { IMessageDatabase } from "../models/inboxModel.ts";
import { Inbox } from "../models/inboxModel.ts";
import type { HydratedDocument, Types } from "mongoose";
export const getAllMessagesSorted = async (accountId: string): Promise<HydratedDocument<IMessageDatabase>[]> => {
const inbox = await Inbox.find({ ownerId: accountId }).sort({ date: -1 });
return inbox;
};
export const getMessage = async (messageId: string): Promise<HydratedDocument<IMessageDatabase>> => {
const message = await Inbox.findById(messageId);
if (!message) {
throw new Error(`Message not found ${messageId}`);
}
return message;
};
export const deleteMessageRead = async (messageId: string): Promise<void> => {
await Inbox.findOneAndDelete({ _id: messageId, r: true });
};
export const deleteAllMessagesRead = async (accountId: string): Promise<void> => {
await Inbox.deleteMany({ ownerId: accountId, r: true });
};
export const deleteAllMessagesReadNonCin = async (accountId: string): Promise<void> => {
await Inbox.deleteMany({ ownerId: accountId, r: true, cinematic: null });
};
export const createMessage = async (
accountId: string | Types.ObjectId,
messages: IMessageCreationTemplate[]
): Promise<void> => {
const ownerIdMessages = messages.map(m => ({
...m,
date: m.date ?? new Date(),
ownerId: accountId
}));
await Inbox.insertMany(ownerIdMessages);
};
export interface IMessageCreationTemplate extends Omit<IMessageDatabase, "_id" | "date" | "ownerId"> {
date?: Date;
}