ManimCat / src /studio-agent /render /memory-render-store.ts
Bin29's picture
Sync from main: 3c05ecf test(studio): cover legacy session insert columns
b435029
Raw
History Blame Contribute Delete
1.19 kB
import type { StudioRender, StudioRenderStore } from '../domain/types'
export class InMemoryStudioRenderStore implements StudioRenderStore {
private readonly renders = new Map<string, StudioRender>()
async create(render: StudioRender): Promise<StudioRender> {
this.renders.set(render.id, render)
return render
}
async getById(ownerId: string, renderId: string): Promise<StudioRender | null> {
const render = this.renders.get(renderId)
return render?.ownerId === ownerId ? render : null
}
async update(ownerId: string, renderId: string, patch: Partial<StudioRender>): Promise<StudioRender | null> {
const current = await this.getById(ownerId, renderId)
if (!current) {
return null
}
const next = {
...current,
...patch,
updatedAt: new Date().toISOString(),
}
this.renders.set(renderId, next)
return next
}
async listBySessionId(ownerId: string, sessionId: string): Promise<StudioRender[]> {
return [...this.renders.values()]
.filter((render) => render.ownerId === ownerId && render.sessionId === sessionId)
.sort((left, right) => left.createdAt.localeCompare(right.createdAt))
}
}