0.2.1 onlyoffice修复
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
import { mutation, query } from "./_generated/server";
|
||||
import { v } from "convex/values";
|
||||
|
||||
export const listByWorkspace = query({
|
||||
args: { userId: v.string(), workspaceId: v.string(), limit: v.optional(v.number()) },
|
||||
handler: async (ctx, args) => {
|
||||
const rows = await ctx.db
|
||||
.query("user_recent_pages")
|
||||
.withIndex("by_user_workspace", (q) => q.eq("user_id", args.userId).eq("workspace_id", args.workspaceId))
|
||||
.collect();
|
||||
|
||||
const sorted = rows.sort((a, b) => (b.last_accessed_at ?? "").localeCompare(a.last_accessed_at ?? ""));
|
||||
const limit = Math.max(0, Math.min(args.limit ?? 10, 50));
|
||||
return sorted.slice(0, limit).map((r) => ({
|
||||
user_id: r.user_id,
|
||||
workspace_id: r.workspace_id,
|
||||
document_id: r.document_id,
|
||||
last_accessed_at: r.last_accessed_at,
|
||||
}));
|
||||
},
|
||||
});
|
||||
|
||||
export const upsert = mutation({
|
||||
args: { userId: v.string(), workspaceId: v.string(), documentId: v.string(), lastAccessedAt: v.string() },
|
||||
handler: async (ctx, args) => {
|
||||
const existing = await ctx.db
|
||||
.query("user_recent_pages")
|
||||
.withIndex("by_user_document", (q) => q.eq("user_id", args.userId).eq("document_id", args.documentId))
|
||||
.first();
|
||||
|
||||
if (existing) {
|
||||
await ctx.db.patch(existing._id, {
|
||||
workspace_id: args.workspaceId,
|
||||
last_accessed_at: args.lastAccessedAt,
|
||||
});
|
||||
return { ok: true, updated: true };
|
||||
}
|
||||
|
||||
await ctx.db.insert("user_recent_pages", {
|
||||
user_id: args.userId,
|
||||
workspace_id: args.workspaceId,
|
||||
document_id: args.documentId,
|
||||
last_accessed_at: args.lastAccessedAt,
|
||||
});
|
||||
|
||||
return { ok: true, updated: false };
|
||||
},
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user