mirror of
https://github.com/toeverything/AFFiNE.git
synced 2024-12-23 17:54:03 +03:00
perf(server): opmitize updates table
This commit is contained in:
parent
fd6536ea90
commit
ef1228dcb4
@ -0,0 +1,14 @@
|
|||||||
|
/*
|
||||||
|
Warnings:
|
||||||
|
|
||||||
|
- The primary key for the `updates` table will be changed. If it partially fails, the table could be left without primary key constraint.
|
||||||
|
- You are about to drop the column `object_id` on the `updates` table. All the data in the column will be lost.
|
||||||
|
|
||||||
|
*/
|
||||||
|
-- DropIndex
|
||||||
|
DROP INDEX "updates_workspace_id_guid_seq_key";
|
||||||
|
|
||||||
|
-- AlterTable
|
||||||
|
ALTER TABLE "updates" DROP CONSTRAINT "updates_pkey",
|
||||||
|
DROP COLUMN "object_id",
|
||||||
|
ADD CONSTRAINT "updates_pkey" PRIMARY KEY ("workspace_id", "guid", "seq");
|
@ -143,16 +143,14 @@ model Snapshot {
|
|||||||
@@map("snapshots")
|
@@map("snapshots")
|
||||||
}
|
}
|
||||||
|
|
||||||
// backup during other update operation queue downtime
|
|
||||||
model Update {
|
model Update {
|
||||||
objectId String @id @default(uuid()) @map("object_id") @db.VarChar
|
|
||||||
workspaceId String @map("workspace_id") @db.VarChar
|
workspaceId String @map("workspace_id") @db.VarChar
|
||||||
id String @map("guid") @db.VarChar
|
id String @map("guid") @db.VarChar
|
||||||
seq Int @db.Integer
|
seq Int @db.Integer
|
||||||
blob Bytes @db.ByteA
|
blob Bytes @db.ByteA
|
||||||
createdAt DateTime @default(now()) @map("created_at") @db.Timestamptz(6)
|
createdAt DateTime @default(now()) @map("created_at") @db.Timestamptz(6)
|
||||||
|
|
||||||
@@unique([workspaceId, id, seq])
|
@@id([workspaceId, id, seq])
|
||||||
@@map("updates")
|
@@map("updates")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -264,15 +264,15 @@ export class DocManager
|
|||||||
* get pending updates
|
* get pending updates
|
||||||
*/
|
*/
|
||||||
async getUpdates(workspaceId: string, guid: string) {
|
async getUpdates(workspaceId: string, guid: string) {
|
||||||
return this.db.update.findMany({
|
const updates = await this.db.update.findMany({
|
||||||
where: {
|
where: {
|
||||||
workspaceId,
|
workspaceId,
|
||||||
id: guid,
|
id: guid,
|
||||||
},
|
},
|
||||||
orderBy: {
|
|
||||||
seq: 'asc',
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// perf(memory): avoid sorting in db
|
||||||
|
return updates.sort((a, b) => (a.createdAt < b.createdAt ? -1 : 1));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user