fix(server): wrong table used for userspace data (#7969)

This commit is contained in:
forehalo
2024-08-26 06:11:22 +00:00
parent 01c9d1758e
commit 14066965fa
2 changed files with 10 additions and 11 deletions

View File

@@ -37,6 +37,10 @@ export class PgUserspaceDocStorageAdapter extends DocStorageAdapter {
return false;
}
override async rollbackDoc() {
return;
}
override async getDoc(spaceId: string, docId: string) {
return this.getDocSnapshot(spaceId, docId);
}
@@ -137,10 +141,10 @@ export class PgUserspaceDocStorageAdapter extends DocStorageAdapter {
protected async setDocSnapshot(snapshot: DocRecord) {
// we always get lock before writing to user snapshot table,
// so a simple upsert without testing on updatedAt is safe
await this.db.snapshot.upsert({
await this.db.userSnapshot.upsert({
where: {
id_workspaceId: {
workspaceId: snapshot.spaceId,
userId_id: {
userId: snapshot.spaceId,
id: snapshot.docId,
},
},
@@ -149,7 +153,7 @@ export class PgUserspaceDocStorageAdapter extends DocStorageAdapter {
updatedAt: new Date(snapshot.timestamp),
},
create: {
workspaceId: snapshot.spaceId,
userId: snapshot.spaceId,
id: snapshot.docId,
blob: Buffer.from(snapshot.bin),
createdAt: new Date(snapshot.timestamp),

View File

@@ -11,6 +11,7 @@ import { Socket } from 'socket.io';
import { diffUpdate, encodeStateVectorFromUpdate } from 'yjs';
import {
AlreadyInSpace,
CallTimer,
Config,
DocNotFound,
@@ -579,8 +580,7 @@ abstract class SyncSocketAdapter {
assertNotIn(spaceId: string, roomType: RoomType = 'sync') {
if (this.client.rooms.has(this.room(spaceId, roomType))) {
// TODO(@forehalo): use new AlreadyInSpace({ spaceId }) instead
throw new NotInSpace({ spaceId });
throw new AlreadyInSpace({ spaceId });
}
}
@@ -621,11 +621,6 @@ class WorkspaceSyncAdapter extends SyncSocketAdapter {
super(SpaceType.Workspace, client, storage);
}
// backward compatibility
override room(spaceId: string, roomType: RoomType = 'sync') {
return Room(spaceId, roomType);
}
override push(spaceId: string, docId: string, updates: Buffer[]) {
const id = new DocID(docId, spaceId);
return super.push(spaceId, id.guid, updates);