@jawkx1999/opencr 0.1.0-alpha.3 → 0.1.0-alpha.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/assets/index-C9jeaZcr.css +1 -0
- package/dist/client/assets/index-DF6LDO7P.js +1978 -0
- package/dist/client/index.html +3 -3
- package/dist/server/cli/index.js +13 -19
- package/dist/server/cli/index.js.map +1 -1
- package/dist/server/core/agents/opencode.js +685 -0
- package/dist/server/core/agents/opencode.js.map +1 -0
- package/dist/server/core/reviewDiagnostics.js +116 -0
- package/dist/server/core/reviewDiagnostics.js.map +1 -0
- package/dist/server/core/reviewPayload.js +3 -0
- package/dist/server/core/reviewPayload.js.map +1 -1
- package/dist/server/core/reviewRequest.js +4 -1
- package/dist/server/core/reviewRequest.js.map +1 -1
- package/dist/server/core/reviewSource/commitish.js +1 -1
- package/dist/server/core/reviewSource/commitish.js.map +1 -1
- package/dist/server/core/reviewSource/githubPr.js +31 -0
- package/dist/server/core/reviewSource/githubPr.js.map +1 -1
- package/dist/server/core/reviewSource/index.js +2 -2
- package/dist/server/core/reviewSource/index.js.map +1 -1
- package/dist/server/core/server.js +2 -0
- package/dist/server/core/server.js.map +1 -1
- package/dist/server/core/workspace/repository.js +234 -144
- package/dist/server/core/workspace/repository.js.map +1 -1
- package/dist/server/server/app.js +158 -1
- package/dist/server/server/app.js.map +1 -1
- package/dist/server/shared/types.js +1 -1
- package/dist/server/shared/types.js.map +1 -1
- package/package.json +5 -4
- package/dist/client/assets/index-BnzvJWAx.js +0 -1974
- package/dist/client/assets/index-FRegO2ve.css +0 -1
- package/dist/server/cli/utils.js +0 -2
- package/dist/server/cli/utils.js.map +0 -1
|
@@ -2,6 +2,7 @@ import { mkdirSync } from 'node:fs';
|
|
|
2
2
|
import { homedir } from 'node:os';
|
|
3
3
|
import { dirname, resolve } from 'node:path';
|
|
4
4
|
import { DatabaseSync } from 'node:sqlite';
|
|
5
|
+
import { DEFAULT_REVIEW_PANEL_WIDTH_PX } from '../../shared/types.js';
|
|
5
6
|
const DEFAULT_DB_PATH = resolve(homedir(), '.opencr', 'state.db');
|
|
6
7
|
const isObject = (value) => {
|
|
7
8
|
return typeof value === 'object' && value !== null;
|
|
@@ -9,6 +10,9 @@ const isObject = (value) => {
|
|
|
9
10
|
const isSelectionSide = (value) => {
|
|
10
11
|
return value === 'additions' || value === 'deletions';
|
|
11
12
|
};
|
|
13
|
+
const isAgentBackendId = (value) => {
|
|
14
|
+
return value === 'opencode' || value === 'codex';
|
|
15
|
+
};
|
|
12
16
|
const isPersistedRange = (value) => {
|
|
13
17
|
if (!isObject(value)) {
|
|
14
18
|
return false;
|
|
@@ -42,6 +46,74 @@ const isPersistedNote = (value) => {
|
|
|
42
46
|
typeof value.fileLabel === 'string' &&
|
|
43
47
|
isPersistedRange(value.range));
|
|
44
48
|
};
|
|
49
|
+
const parseAgentSessionTarget = (value) => {
|
|
50
|
+
if (!isObject(value)) {
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
if (!isAgentBackendId(value.backendId)) {
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
if (value.modelId !== undefined && value.modelId !== null && typeof value.modelId !== 'string') {
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
if (value.variant !== undefined && value.variant !== null && typeof value.variant !== 'string') {
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
const modelId = value.modelId === null || typeof value.modelId === 'string' ? (value.modelId ?? null) : null;
|
|
63
|
+
const variant = value.variant === null || typeof value.variant === 'string' ? (value.variant ?? null) : null;
|
|
64
|
+
return {
|
|
65
|
+
backendId: value.backendId,
|
|
66
|
+
modelId,
|
|
67
|
+
variant,
|
|
68
|
+
};
|
|
69
|
+
};
|
|
70
|
+
const parsePersistedAgentSession = (value) => {
|
|
71
|
+
if (!isObject(value)) {
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
if (typeof value.id !== 'string' ||
|
|
75
|
+
typeof value.title !== 'string' ||
|
|
76
|
+
typeof value.prompt !== 'string' ||
|
|
77
|
+
typeof value.createdAt !== 'string' ||
|
|
78
|
+
typeof value.updatedAt !== 'string' ||
|
|
79
|
+
typeof value.fileId !== 'string' ||
|
|
80
|
+
typeof value.fileLabel !== 'string' ||
|
|
81
|
+
!isPersistedRange(value.range)) {
|
|
82
|
+
return null;
|
|
83
|
+
}
|
|
84
|
+
const legacyOpencodeSessionId = typeof value.opencodeSessionId === 'string' ? value.opencodeSessionId : null;
|
|
85
|
+
const backendId = isAgentBackendId(value.backendId)
|
|
86
|
+
? value.backendId
|
|
87
|
+
: legacyOpencodeSessionId != null
|
|
88
|
+
? 'opencode'
|
|
89
|
+
: null;
|
|
90
|
+
const backendSessionId = typeof value.backendSessionId === 'string' ? value.backendSessionId : legacyOpencodeSessionId;
|
|
91
|
+
if (backendId == null || backendSessionId == null) {
|
|
92
|
+
return null;
|
|
93
|
+
}
|
|
94
|
+
if (value.modelId !== undefined && value.modelId !== null && typeof value.modelId !== 'string') {
|
|
95
|
+
return null;
|
|
96
|
+
}
|
|
97
|
+
if (value.variant !== undefined && value.variant !== null && typeof value.variant !== 'string') {
|
|
98
|
+
return null;
|
|
99
|
+
}
|
|
100
|
+
const modelId = value.modelId === null || typeof value.modelId === 'string' ? (value.modelId ?? null) : null;
|
|
101
|
+
const variant = value.variant === null || typeof value.variant === 'string' ? (value.variant ?? null) : null;
|
|
102
|
+
return {
|
|
103
|
+
id: value.id,
|
|
104
|
+
backendId,
|
|
105
|
+
backendSessionId,
|
|
106
|
+
modelId,
|
|
107
|
+
variant,
|
|
108
|
+
title: value.title,
|
|
109
|
+
prompt: value.prompt,
|
|
110
|
+
createdAt: value.createdAt,
|
|
111
|
+
updatedAt: value.updatedAt,
|
|
112
|
+
fileId: value.fileId,
|
|
113
|
+
fileLabel: value.fileLabel,
|
|
114
|
+
range: value.range,
|
|
115
|
+
};
|
|
116
|
+
};
|
|
45
117
|
const parseWorkspace = (json) => {
|
|
46
118
|
try {
|
|
47
119
|
const parsed = JSON.parse(json);
|
|
@@ -51,6 +123,24 @@ const parseWorkspace = (json) => {
|
|
|
51
123
|
if (!Array.isArray(parsed.notes) || !parsed.notes.every(isPersistedNote)) {
|
|
52
124
|
return null;
|
|
53
125
|
}
|
|
126
|
+
if (parsed.agentSessions !== undefined && !Array.isArray(parsed.agentSessions)) {
|
|
127
|
+
return null;
|
|
128
|
+
}
|
|
129
|
+
const agentSessions = [];
|
|
130
|
+
for (const agentSession of parsed.agentSessions ?? []) {
|
|
131
|
+
const parsedSession = parsePersistedAgentSession(agentSession);
|
|
132
|
+
if (parsedSession == null) {
|
|
133
|
+
return null;
|
|
134
|
+
}
|
|
135
|
+
agentSessions.push(parsedSession);
|
|
136
|
+
}
|
|
137
|
+
let agentDraftTarget = null;
|
|
138
|
+
if (parsed.agentDraftTarget !== undefined && parsed.agentDraftTarget !== null) {
|
|
139
|
+
agentDraftTarget = parseAgentSessionTarget(parsed.agentDraftTarget);
|
|
140
|
+
if (agentDraftTarget == null) {
|
|
141
|
+
return null;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
54
144
|
if (parsed.draftSelection !== null && !isPersistedSelection(parsed.draftSelection)) {
|
|
55
145
|
return null;
|
|
56
146
|
}
|
|
@@ -60,18 +150,39 @@ const parseWorkspace = (json) => {
|
|
|
60
150
|
if (parsed.activeNoteId !== null && typeof parsed.activeNoteId !== 'string') {
|
|
61
151
|
return null;
|
|
62
152
|
}
|
|
153
|
+
if (parsed.activeAgentSessionId !== undefined &&
|
|
154
|
+
parsed.activeAgentSessionId !== null &&
|
|
155
|
+
typeof parsed.activeAgentSessionId !== 'string') {
|
|
156
|
+
return null;
|
|
157
|
+
}
|
|
158
|
+
if (parsed.activeSidebarPanel !== undefined &&
|
|
159
|
+
parsed.activeSidebarPanel !== 'notes' &&
|
|
160
|
+
parsed.activeSidebarPanel !== 'agents') {
|
|
161
|
+
return null;
|
|
162
|
+
}
|
|
63
163
|
if (typeof parsed.isPanelOpen !== 'boolean') {
|
|
64
164
|
return null;
|
|
65
165
|
}
|
|
166
|
+
if (parsed.panelWidthPx !== undefined &&
|
|
167
|
+
(typeof parsed.panelWidthPx !== 'number' ||
|
|
168
|
+
!Number.isFinite(parsed.panelWidthPx) ||
|
|
169
|
+
parsed.panelWidthPx <= 0)) {
|
|
170
|
+
return null;
|
|
171
|
+
}
|
|
66
172
|
if (parsed.diffViewMode !== 'split' && parsed.diffViewMode !== 'unified') {
|
|
67
173
|
return null;
|
|
68
174
|
}
|
|
69
175
|
return {
|
|
70
176
|
notes: parsed.notes,
|
|
177
|
+
agentSessions,
|
|
178
|
+
agentDraftTarget,
|
|
71
179
|
draftSelection: parsed.draftSelection,
|
|
72
180
|
draftNoteBody: parsed.draftNoteBody,
|
|
73
181
|
activeNoteId: parsed.activeNoteId,
|
|
182
|
+
activeAgentSessionId: parsed.activeAgentSessionId ?? null,
|
|
183
|
+
activeSidebarPanel: parsed.activeSidebarPanel ?? 'notes',
|
|
74
184
|
isPanelOpen: parsed.isPanelOpen,
|
|
185
|
+
panelWidthPx: parsed.panelWidthPx ?? DEFAULT_REVIEW_PANEL_WIDTH_PX,
|
|
75
186
|
diffViewMode: parsed.diffViewMode,
|
|
76
187
|
};
|
|
77
188
|
}
|
|
@@ -79,6 +190,16 @@ const parseWorkspace = (json) => {
|
|
|
79
190
|
return null;
|
|
80
191
|
}
|
|
81
192
|
};
|
|
193
|
+
const WORKSPACES_TABLE_SQL = `
|
|
194
|
+
CREATE TABLE IF NOT EXISTS workspaces (
|
|
195
|
+
target_id TEXT PRIMARY KEY,
|
|
196
|
+
last_saved_snapshot_id TEXT NOT NULL,
|
|
197
|
+
revision INTEGER NOT NULL,
|
|
198
|
+
state_json TEXT NOT NULL,
|
|
199
|
+
created_at TEXT NOT NULL,
|
|
200
|
+
updated_at TEXT NOT NULL
|
|
201
|
+
) STRICT;
|
|
202
|
+
`;
|
|
82
203
|
export class ReviewWorkspaceRepository {
|
|
83
204
|
db;
|
|
84
205
|
constructor(databasePath = DEFAULT_DB_PATH) {
|
|
@@ -89,141 +210,40 @@ export class ReviewWorkspaceRepository {
|
|
|
89
210
|
});
|
|
90
211
|
this.db.exec('PRAGMA journal_mode = WAL;');
|
|
91
212
|
this.db.exec('PRAGMA foreign_keys = ON;');
|
|
92
|
-
this.
|
|
93
|
-
|
|
94
|
-
target_id TEXT PRIMARY KEY,
|
|
95
|
-
source_kind TEXT NOT NULL,
|
|
96
|
-
source_label TEXT NOT NULL,
|
|
97
|
-
source_json TEXT NOT NULL,
|
|
98
|
-
created_at TEXT NOT NULL,
|
|
99
|
-
updated_at TEXT NOT NULL,
|
|
100
|
-
last_snapshot_id TEXT
|
|
101
|
-
) STRICT;
|
|
102
|
-
|
|
103
|
-
CREATE TABLE IF NOT EXISTS review_snapshots (
|
|
104
|
-
snapshot_id TEXT PRIMARY KEY,
|
|
105
|
-
target_id TEXT NOT NULL,
|
|
106
|
-
patch_bytes INTEGER NOT NULL,
|
|
107
|
-
patch_lines INTEGER NOT NULL,
|
|
108
|
-
created_at TEXT NOT NULL,
|
|
109
|
-
last_opened_at TEXT NOT NULL,
|
|
110
|
-
FOREIGN KEY(target_id) REFERENCES review_targets(target_id) ON DELETE CASCADE
|
|
111
|
-
) STRICT;
|
|
112
|
-
|
|
113
|
-
CREATE TABLE IF NOT EXISTS workspaces (
|
|
114
|
-
snapshot_id TEXT PRIMARY KEY,
|
|
115
|
-
target_id TEXT NOT NULL,
|
|
116
|
-
revision INTEGER NOT NULL,
|
|
117
|
-
note_count INTEGER NOT NULL,
|
|
118
|
-
state_json TEXT NOT NULL,
|
|
119
|
-
created_at TEXT NOT NULL,
|
|
120
|
-
updated_at TEXT NOT NULL,
|
|
121
|
-
FOREIGN KEY(snapshot_id) REFERENCES review_snapshots(snapshot_id) ON DELETE CASCADE,
|
|
122
|
-
FOREIGN KEY(target_id) REFERENCES review_targets(target_id) ON DELETE CASCADE
|
|
123
|
-
) STRICT;
|
|
124
|
-
|
|
125
|
-
CREATE INDEX IF NOT EXISTS workspaces_target_updated_idx
|
|
126
|
-
ON workspaces(target_id, updated_at DESC);
|
|
127
|
-
`);
|
|
213
|
+
this.migrateSchema();
|
|
214
|
+
this.db.exec(WORKSPACES_TABLE_SQL);
|
|
128
215
|
}
|
|
129
216
|
close() {
|
|
130
217
|
this.db.close();
|
|
131
218
|
}
|
|
132
|
-
|
|
133
|
-
const
|
|
134
|
-
|
|
135
|
-
try {
|
|
136
|
-
this.db
|
|
137
|
-
.prepare(`
|
|
138
|
-
INSERT INTO review_targets (
|
|
139
|
-
target_id,
|
|
140
|
-
source_kind,
|
|
141
|
-
source_label,
|
|
142
|
-
source_json,
|
|
143
|
-
created_at,
|
|
144
|
-
updated_at,
|
|
145
|
-
last_snapshot_id
|
|
146
|
-
) VALUES (?, ?, ?, ?, ?, ?, ?)
|
|
147
|
-
ON CONFLICT(target_id) DO UPDATE SET
|
|
148
|
-
source_kind = excluded.source_kind,
|
|
149
|
-
source_label = excluded.source_label,
|
|
150
|
-
source_json = excluded.source_json,
|
|
151
|
-
updated_at = excluded.updated_at,
|
|
152
|
-
last_snapshot_id = excluded.last_snapshot_id
|
|
153
|
-
`)
|
|
154
|
-
.run(input.identity.targetId, input.identity.sourceKind, input.identity.sourceLabel, input.identity.sourceJson, now, now, input.identity.snapshotId);
|
|
155
|
-
this.db
|
|
156
|
-
.prepare(`
|
|
157
|
-
INSERT INTO review_snapshots (
|
|
158
|
-
snapshot_id,
|
|
159
|
-
target_id,
|
|
160
|
-
patch_bytes,
|
|
161
|
-
patch_lines,
|
|
162
|
-
created_at,
|
|
163
|
-
last_opened_at
|
|
164
|
-
) VALUES (?, ?, ?, ?, ?, ?)
|
|
165
|
-
ON CONFLICT(snapshot_id) DO UPDATE SET
|
|
166
|
-
target_id = excluded.target_id,
|
|
167
|
-
patch_bytes = excluded.patch_bytes,
|
|
168
|
-
patch_lines = excluded.patch_lines,
|
|
169
|
-
last_opened_at = excluded.last_opened_at
|
|
170
|
-
`)
|
|
171
|
-
.run(input.identity.snapshotId, input.identity.targetId, input.identity.patchBytes, input.identity.patchLineCount, now, now);
|
|
172
|
-
if (input.clearSnapshotWorkspace) {
|
|
173
|
-
this.db
|
|
174
|
-
.prepare('DELETE FROM workspaces WHERE snapshot_id = ?')
|
|
175
|
-
.run(input.identity.snapshotId);
|
|
176
|
-
}
|
|
177
|
-
this.db.exec('COMMIT');
|
|
178
|
-
}
|
|
179
|
-
catch (error) {
|
|
180
|
-
this.db.exec('ROLLBACK');
|
|
181
|
-
throw error;
|
|
182
|
-
}
|
|
183
|
-
if (input.clearSnapshotWorkspace) {
|
|
219
|
+
loadWorkspace(targetId) {
|
|
220
|
+
const row = this.getWorkspaceRow(targetId);
|
|
221
|
+
if (row == null) {
|
|
184
222
|
return {
|
|
185
|
-
restoreKind: 'clean',
|
|
186
223
|
revision: null,
|
|
224
|
+
savedSnapshotId: null,
|
|
187
225
|
workspace: null,
|
|
188
|
-
previousWorkspace: null,
|
|
189
226
|
};
|
|
190
227
|
}
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
snapshotId: input.identity.snapshotId,
|
|
194
|
-
});
|
|
195
|
-
}
|
|
196
|
-
getHydration(input) {
|
|
197
|
-
const currentWorkspace = this.getWorkspaceRow(input.snapshotId);
|
|
198
|
-
if (currentWorkspace != null) {
|
|
199
|
-
const parsedWorkspace = parseWorkspace(currentWorkspace.state_json);
|
|
200
|
-
if (parsedWorkspace != null) {
|
|
201
|
-
return {
|
|
202
|
-
restoreKind: 'exact',
|
|
203
|
-
revision: currentWorkspace.revision,
|
|
204
|
-
workspace: parsedWorkspace,
|
|
205
|
-
previousWorkspace: null,
|
|
206
|
-
};
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
const previousWorkspace = this.getLatestWorkspaceSummary(input.targetId, input.snapshotId);
|
|
210
|
-
if (previousWorkspace != null) {
|
|
228
|
+
const workspace = parseWorkspace(row.state_json);
|
|
229
|
+
if (workspace == null) {
|
|
211
230
|
return {
|
|
212
|
-
restoreKind: 'target-changed',
|
|
213
231
|
revision: null,
|
|
232
|
+
savedSnapshotId: null,
|
|
214
233
|
workspace: null,
|
|
215
|
-
previousWorkspace,
|
|
216
234
|
};
|
|
217
235
|
}
|
|
218
236
|
return {
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
workspace
|
|
222
|
-
previousWorkspace: null,
|
|
237
|
+
revision: row.revision,
|
|
238
|
+
savedSnapshotId: row.last_saved_snapshot_id,
|
|
239
|
+
workspace,
|
|
223
240
|
};
|
|
224
241
|
}
|
|
242
|
+
clearWorkspace(targetId) {
|
|
243
|
+
this.db.prepare('DELETE FROM workspaces WHERE target_id = ?').run(targetId);
|
|
244
|
+
}
|
|
225
245
|
saveWorkspace(input) {
|
|
226
|
-
const existingWorkspace = this.getWorkspaceRow(input.
|
|
246
|
+
const existingWorkspace = this.getWorkspaceRow(input.targetId);
|
|
227
247
|
if (existingWorkspace == null) {
|
|
228
248
|
if (input.baseRevision !== 0) {
|
|
229
249
|
return {
|
|
@@ -236,16 +256,15 @@ export class ReviewWorkspaceRepository {
|
|
|
236
256
|
this.db
|
|
237
257
|
.prepare(`
|
|
238
258
|
INSERT INTO workspaces (
|
|
239
|
-
snapshot_id,
|
|
240
259
|
target_id,
|
|
260
|
+
last_saved_snapshot_id,
|
|
241
261
|
revision,
|
|
242
|
-
note_count,
|
|
243
262
|
state_json,
|
|
244
263
|
created_at,
|
|
245
264
|
updated_at
|
|
246
|
-
) VALUES (?, ?, ?, ?, ?,
|
|
265
|
+
) VALUES (?, ?, ?, ?, ?, ?)
|
|
247
266
|
`)
|
|
248
|
-
.run(input.
|
|
267
|
+
.run(input.targetId, input.snapshotId, 1, JSON.stringify(input.workspace), now, now);
|
|
249
268
|
return {
|
|
250
269
|
status: 'saved',
|
|
251
270
|
revision: 1,
|
|
@@ -264,46 +283,117 @@ export class ReviewWorkspaceRepository {
|
|
|
264
283
|
this.db
|
|
265
284
|
.prepare(`
|
|
266
285
|
UPDATE workspaces
|
|
267
|
-
SET
|
|
268
|
-
|
|
286
|
+
SET last_saved_snapshot_id = ?,
|
|
287
|
+
revision = ?,
|
|
269
288
|
state_json = ?,
|
|
270
289
|
updated_at = ?
|
|
271
|
-
WHERE
|
|
290
|
+
WHERE target_id = ?
|
|
272
291
|
`)
|
|
273
|
-
.run(
|
|
292
|
+
.run(input.snapshotId, nextRevision, JSON.stringify(input.workspace), now, input.targetId);
|
|
274
293
|
return {
|
|
275
294
|
status: 'saved',
|
|
276
295
|
revision: nextRevision,
|
|
277
296
|
};
|
|
278
297
|
}
|
|
279
|
-
|
|
280
|
-
|
|
298
|
+
migrateSchema() {
|
|
299
|
+
const workspaceColumns = this.getTableColumns('workspaces');
|
|
300
|
+
if (workspaceColumns.length === 0) {
|
|
301
|
+
this.dropLegacyTables();
|
|
302
|
+
return;
|
|
303
|
+
}
|
|
304
|
+
const isLegacySchema = workspaceColumns.includes('snapshot_id') || !workspaceColumns.includes('last_saved_snapshot_id');
|
|
305
|
+
if (isLegacySchema) {
|
|
306
|
+
this.migrateLegacyWorkspaceTable();
|
|
307
|
+
return;
|
|
308
|
+
}
|
|
309
|
+
this.dropLegacyTables();
|
|
310
|
+
}
|
|
311
|
+
migrateLegacyWorkspaceTable() {
|
|
312
|
+
const legacyRows = this.db
|
|
281
313
|
.prepare(`
|
|
282
|
-
SELECT revision, state_json
|
|
314
|
+
SELECT target_id, snapshot_id, revision, state_json, created_at, updated_at
|
|
283
315
|
FROM workspaces
|
|
284
|
-
|
|
316
|
+
ORDER BY updated_at DESC
|
|
285
317
|
`)
|
|
286
|
-
.
|
|
318
|
+
.all() ?? [];
|
|
319
|
+
this.db.exec('BEGIN TRANSACTION');
|
|
320
|
+
try {
|
|
321
|
+
this.db.exec('DROP TABLE IF EXISTS workspaces_v2');
|
|
322
|
+
this.db.exec(`
|
|
323
|
+
CREATE TABLE workspaces_v2 (
|
|
324
|
+
target_id TEXT PRIMARY KEY,
|
|
325
|
+
last_saved_snapshot_id TEXT NOT NULL,
|
|
326
|
+
revision INTEGER NOT NULL,
|
|
327
|
+
state_json TEXT NOT NULL,
|
|
328
|
+
created_at TEXT NOT NULL,
|
|
329
|
+
updated_at TEXT NOT NULL
|
|
330
|
+
) STRICT;
|
|
331
|
+
`);
|
|
332
|
+
const insertWorkspace = this.db.prepare(`
|
|
333
|
+
INSERT INTO workspaces_v2 (
|
|
334
|
+
target_id,
|
|
335
|
+
last_saved_snapshot_id,
|
|
336
|
+
revision,
|
|
337
|
+
state_json,
|
|
338
|
+
created_at,
|
|
339
|
+
updated_at
|
|
340
|
+
) VALUES (?, ?, ?, ?, ?, ?)
|
|
341
|
+
`);
|
|
342
|
+
const migratedTargetIds = new Set();
|
|
343
|
+
for (const row of legacyRows) {
|
|
344
|
+
if (migratedTargetIds.has(row.target_id)) {
|
|
345
|
+
continue;
|
|
346
|
+
}
|
|
347
|
+
if (parseWorkspace(row.state_json) == null) {
|
|
348
|
+
continue;
|
|
349
|
+
}
|
|
350
|
+
insertWorkspace.run(row.target_id, row.snapshot_id, row.revision, row.state_json, row.created_at, row.updated_at);
|
|
351
|
+
migratedTargetIds.add(row.target_id);
|
|
352
|
+
}
|
|
353
|
+
this.db.exec('DROP TABLE workspaces');
|
|
354
|
+
this.dropLegacyTables();
|
|
355
|
+
this.db.exec('ALTER TABLE workspaces_v2 RENAME TO workspaces');
|
|
356
|
+
this.db.exec('COMMIT');
|
|
357
|
+
}
|
|
358
|
+
catch (error) {
|
|
359
|
+
this.db.exec('ROLLBACK');
|
|
360
|
+
throw error;
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
dropLegacyTables() {
|
|
364
|
+
if (this.tableExists('review_snapshots')) {
|
|
365
|
+
this.db.exec('DROP TABLE review_snapshots');
|
|
366
|
+
}
|
|
367
|
+
if (this.tableExists('review_targets')) {
|
|
368
|
+
this.db.exec('DROP TABLE review_targets');
|
|
369
|
+
}
|
|
287
370
|
}
|
|
288
|
-
|
|
371
|
+
tableExists(tableName) {
|
|
289
372
|
const row = this.db
|
|
290
373
|
.prepare(`
|
|
291
|
-
|
|
374
|
+
SELECT name
|
|
375
|
+
FROM sqlite_master
|
|
376
|
+
WHERE type = 'table'
|
|
377
|
+
AND name = ?
|
|
378
|
+
`)
|
|
379
|
+
.get(tableName);
|
|
380
|
+
return row != null;
|
|
381
|
+
}
|
|
382
|
+
getTableColumns(tableName) {
|
|
383
|
+
if (!this.tableExists(tableName)) {
|
|
384
|
+
return [];
|
|
385
|
+
}
|
|
386
|
+
const rows = this.db.prepare(`PRAGMA table_info(${tableName})`).all();
|
|
387
|
+
return rows.map((row) => row.name);
|
|
388
|
+
}
|
|
389
|
+
getWorkspaceRow(targetId) {
|
|
390
|
+
return this.db
|
|
391
|
+
.prepare(`
|
|
392
|
+
SELECT revision, last_saved_snapshot_id, state_json
|
|
292
393
|
FROM workspaces
|
|
293
394
|
WHERE target_id = ?
|
|
294
|
-
AND snapshot_id <> ?
|
|
295
|
-
ORDER BY updated_at DESC
|
|
296
|
-
LIMIT 1
|
|
297
395
|
`)
|
|
298
|
-
.get(targetId
|
|
299
|
-
if (row == null) {
|
|
300
|
-
return null;
|
|
301
|
-
}
|
|
302
|
-
return {
|
|
303
|
-
snapshotId: row.snapshot_id,
|
|
304
|
-
noteCount: row.note_count,
|
|
305
|
-
updatedAt: row.updated_at,
|
|
306
|
-
};
|
|
396
|
+
.get(targetId) ?? null;
|
|
307
397
|
}
|
|
308
398
|
}
|
|
309
399
|
//# sourceMappingURL=repository.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository.js","sourceRoot":"","sources":["../../../../src/core/workspace/repository.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"repository.js","sourceRoot":"","sources":["../../../../src/core/workspace/repository.ts"],"names":[],"mappings":"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"}
|