mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-07-17 18:16:15 +08:00
feat(server): skip cleanup for stale workspace (#13418)
fix AI-408 <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Added a new field to workspaces to track the last time embeddings were checked. * Cleanup jobs for workspace embeddings now skip workspaces that haven't changed in over 30 days or have no embeddings, improving efficiency. * Cleanup jobs are now automatically triggered when a workspace is updated. * **Improvements** * Enhanced workspace selection for cleanup and indexing tasks to use more precise filters and batching. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
This commit is contained in:
@@ -24,6 +24,7 @@ export type UpdateWorkspaceInput = Pick<
|
||||
| 'name'
|
||||
| 'avatarKey'
|
||||
| 'indexed'
|
||||
| 'lastCheckEmbeddings'
|
||||
>;
|
||||
|
||||
@Injectable()
|
||||
@@ -49,7 +50,11 @@ export class WorkspaceModel extends BaseModel {
|
||||
/**
|
||||
* Update the workspace with the given data.
|
||||
*/
|
||||
async update(workspaceId: string, data: UpdateWorkspaceInput) {
|
||||
async update(
|
||||
workspaceId: string,
|
||||
data: UpdateWorkspaceInput,
|
||||
notifyUpdate = true
|
||||
) {
|
||||
const workspace = await this.db.workspace.update({
|
||||
where: {
|
||||
id: workspaceId,
|
||||
@@ -60,7 +65,9 @@ export class WorkspaceModel extends BaseModel {
|
||||
`Updated workspace ${workspaceId} with data ${JSON.stringify(data)}`
|
||||
);
|
||||
|
||||
this.event.emit('workspace.updated', workspace);
|
||||
if (notifyUpdate) {
|
||||
this.event.emit('workspace.updated', workspace);
|
||||
}
|
||||
|
||||
return workspace;
|
||||
}
|
||||
@@ -81,25 +88,15 @@ export class WorkspaceModel extends BaseModel {
|
||||
});
|
||||
}
|
||||
|
||||
async listAfterSid(sid: number, limit: number) {
|
||||
return await this.db.workspace.findMany({
|
||||
where: {
|
||||
sid: { gt: sid },
|
||||
},
|
||||
take: limit,
|
||||
orderBy: {
|
||||
sid: 'asc',
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
async list<S extends Prisma.WorkspaceSelect>(
|
||||
where: Prisma.WorkspaceWhereInput = {},
|
||||
select?: S
|
||||
select?: S,
|
||||
limit?: number
|
||||
) {
|
||||
return (await this.db.workspace.findMany({
|
||||
where,
|
||||
select,
|
||||
take: limit,
|
||||
orderBy: {
|
||||
sid: 'asc',
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user