(newProjectID: string, worktree: string)
| 157 | } |
| 158 | |
| 159 | async function migrateFromGlobal(newProjectID: string, worktree: string) { |
| 160 | const globalProject = await Storage.read<Info>(["project", "global"]).catch(() => undefined) |
| 161 | if (!globalProject) return |
| 162 | |
| 163 | const globalSessions = await Storage.list(["session", "global"]).catch(() => []) |
| 164 | if (globalSessions.length === 0) return |
| 165 | |
| 166 | log.info("migrating sessions from global", { newProjectID, worktree, count: globalSessions.length }) |
| 167 | |
| 168 | await work(10, globalSessions, async (key) => { |
| 169 | const sessionID = key[key.length - 1] |
| 170 | const session = await Storage.read<Session.Info>(key).catch(() => undefined) |
| 171 | if (!session) return |
| 172 | if (session.directory && session.directory !== worktree) return |
| 173 | |
| 174 | session.projectID = newProjectID |
| 175 | log.info("migrating session", { sessionID, from: "global", to: newProjectID }) |
| 176 | await Storage.write(["session", newProjectID, sessionID], session) |
| 177 | await Storage.remove(key) |
| 178 | }).catch((error) => { |
| 179 | log.error("failed to migrate sessions from global to project", { error, projectId: newProjectID }) |
| 180 | }) |
| 181 | } |
| 182 | |
| 183 | export async function setInitialized(projectID: string) { |
| 184 | await Storage.update<Info>(["project", projectID], (draft) => { |
no test coverage detected