Skip to content

Commit ff986b2

Browse files
author
Sprite
committed
fix: pass project migration SQL to raw executor
1 parent 2829a50 commit ff986b2

1 file changed

Lines changed: 22 additions & 30 deletions

File tree

packages/models/src/project.ts

Lines changed: 22 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
* nothing migrates into one.
1111
*/
1212

13-
import { and, desc, eq, isNull, sql } from "drizzle-orm";
13+
import { and, desc, eq, isNull } from "drizzle-orm";
1414
import {
1515
DBModel,
1616
ModelChangeEvent,
@@ -128,28 +128,24 @@ export class Project extends DBModel {
128128
// Restore the legacy project.thread_id association before claiming
129129
// remaining threads for Personal.
130130
await executeRaw(
131-
sql.raw(
132-
`UPDATE nodetool_threads SET project_id = (` +
133-
`SELECT p.id FROM projects p WHERE p.thread_id = nodetool_threads.id ` +
134-
`AND p.user_id = nodetool_threads.user_id) ` +
135-
`WHERE user_id = '${owner}' AND EXISTS (` +
136-
`SELECT 1 FROM projects p WHERE p.thread_id = nodetool_threads.id ` +
137-
`AND p.user_id = nodetool_threads.user_id) RETURNING id`
138-
)
131+
`UPDATE nodetool_threads SET project_id = (` +
132+
`SELECT p.id FROM projects p WHERE p.thread_id = nodetool_threads.id ` +
133+
`AND p.user_id = nodetool_threads.user_id) ` +
134+
`WHERE user_id = '${owner}' AND EXISTS (` +
135+
`SELECT 1 FROM projects p WHERE p.thread_id = nodetool_threads.id ` +
136+
`AND p.user_id = nodetool_threads.user_id) RETURNING id`
139137
);
140138
// Runs created from an already-assigned workflow inherit that ownership.
141139
// Jobs without a project column were otherwise indistinguishable from
142140
// genuinely unassigned runs.
143141
await executeRaw(
144-
sql.raw(
145-
`UPDATE nodetool_jobs SET project_id = (` +
146-
`SELECT w.project_id FROM nodetool_workflows w ` +
147-
`WHERE w.id = nodetool_jobs.workflow_id AND w.user_id = nodetool_jobs.user_id) ` +
148-
`WHERE user_id = '${owner}' AND (project_id IS NULL OR project_id = '' ` +
149-
`OR project_id = 'default') AND EXISTS (` +
150-
`SELECT 1 FROM nodetool_workflows w WHERE w.id = nodetool_jobs.workflow_id ` +
151-
`AND w.user_id = nodetool_jobs.user_id AND w.project_id <> 'default') RETURNING id`
152-
)
142+
`UPDATE nodetool_jobs SET project_id = (` +
143+
`SELECT w.project_id FROM nodetool_workflows w ` +
144+
`WHERE w.id = nodetool_jobs.workflow_id AND w.user_id = nodetool_jobs.user_id) ` +
145+
`WHERE user_id = '${owner}' AND (project_id IS NULL OR project_id = '' ` +
146+
`OR project_id = 'default') AND EXISTS (` +
147+
`SELECT 1 FROM nodetool_workflows w WHERE w.id = nodetool_jobs.workflow_id ` +
148+
`AND w.user_id = nodetool_jobs.user_id AND w.project_id <> 'default') RETURNING id`
153149
);
154150
const tables = [
155151
"storyboards", "scripts", "timeline_sequences", "image_documents",
@@ -159,11 +155,9 @@ export class Project extends DBModel {
159155
];
160156
for (const table of tables) {
161157
const result = await executeRaw(
162-
sql.raw(
163-
`UPDATE ${table} SET project_id = '${target}' ` +
164-
`WHERE user_id = '${owner}' AND ` +
165-
`(project_id IS NULL OR project_id = '' OR project_id = 'default') RETURNING id`
166-
)
158+
`UPDATE ${table} SET project_id = '${target}' ` +
159+
`WHERE user_id = '${owner}' AND ` +
160+
`(project_id IS NULL OR project_id = '' OR project_id = 'default') RETURNING id`
167161
);
168162
migrated += result.rows.length;
169163
}
@@ -172,13 +166,11 @@ export class Project extends DBModel {
172166
let dangling = 0;
173167
for (const table of tables) {
174168
const result = await executeRaw(
175-
sql.raw(
176-
`SELECT COUNT(*) AS count FROM ${table} r ` +
177-
`WHERE r.user_id = '${owner}' AND r.project_id IS NOT NULL ` +
178-
`AND r.project_id <> 'default' AND r.project_id <> '${target}' ` +
179-
`AND NOT EXISTS (SELECT 1 FROM projects p ` +
180-
`WHERE p.id = r.project_id AND p.user_id = r.user_id)`
181-
)
169+
`SELECT COUNT(*) AS count FROM ${table} r ` +
170+
`WHERE r.user_id = '${owner}' AND r.project_id IS NOT NULL ` +
171+
`AND r.project_id <> 'default' AND r.project_id <> '${target}' ` +
172+
`AND NOT EXISTS (SELECT 1 FROM projects p ` +
173+
`WHERE p.id = r.project_id AND p.user_id = r.user_id)`
182174
);
183175
const rows = result.rows;
184176
const count = (rows[0] as { count?: unknown } | undefined)?.count;

0 commit comments

Comments
 (0)