Надёжная real-time доставка сообщений в чатах: SSE buffer, Last-Event-ID, polling fallback
This commit is contained in:
@@ -2,7 +2,7 @@ import { users, forms, tasks, taskMessages, messageReads, bots, roles, type User
|
||||
import { taskRelations } from "@shared/schema";
|
||||
import { taskAssignees, type TaskAssignee } from "@shared/schema";
|
||||
import { db } from "../db";
|
||||
import { eq, and, desc, exists, sql } from "drizzle-orm";
|
||||
import { eq, and, desc, exists, sql, gt } from "drizzle-orm";
|
||||
import { formatUserName } from "../utils/formatUserName";
|
||||
import { TasksCoreStorage } from "./tasks-core.storage";
|
||||
import { fieldConditionsMatch, resolveFieldDisplayText } from "../utils/field-conditions";
|
||||
@@ -239,7 +239,7 @@ export class TasksStorage extends TasksCoreStorage {
|
||||
}
|
||||
|
||||
// Task Messages (Chat)
|
||||
async getTaskMessages(taskId: number, organizationId: number): Promise<TaskMessageWithAuthor[]> {
|
||||
async getTaskMessages(taskId: number, organizationId: number, afterId?: number): Promise<TaskMessageWithAuthor[]> {
|
||||
const replyToMsg = db.select({
|
||||
id: taskMessages.id,
|
||||
message: taskMessages.message,
|
||||
@@ -289,7 +289,8 @@ export class TasksStorage extends TasksCoreStorage {
|
||||
.leftJoin(replyToAuthor, eq(replyToMsg.authorId, replyToAuthor.id))
|
||||
.where(and(
|
||||
eq(taskMessages.taskId, taskId),
|
||||
eq(forms.organizationId, organizationId)
|
||||
eq(forms.organizationId, organizationId),
|
||||
...(afterId ? [gt(taskMessages.id, afterId)] : [])
|
||||
))
|
||||
.orderBy(taskMessages.createdAt);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user