diff --git a/frontend/src/app/components/edit-database-schema/edit-database-schema.component.ts b/frontend/src/app/components/edit-database-schema/edit-database-schema.component.ts index a106ce363..e81c684c4 100644 --- a/frontend/src/app/components/edit-database-schema/edit-database-schema.component.ts +++ b/frontend/src/app/components/edit-database-schema/edit-database-schema.component.ts @@ -50,6 +50,7 @@ export class EditDatabaseSchemaComponent implements OnInit, AfterViewInit { protected applied = signal(false); protected diagramZoom = signal(1); protected initialDiagramLoading = signal(false); + private _threadId: string | undefined; protected pendingBatch = computed(() => { const msgs = this.messages(); @@ -98,7 +99,10 @@ export class EditDatabaseSchemaComponent implements OnInit, AfterViewInit { this.submitting.set(true); try { - const result = await this._tableSchema.generateSchemaChange(this.connectionID, prompt); + const result = await this._tableSchema.generateSchemaChange(this.connectionID, prompt, this._threadId); + if (result.threadId) { + this._threadId = result.threadId; + } if (result && result.changes.length > 0) { const summary = result.changes.map(c => `**${c.changeType}** \`${c.targetTableName}\`${c.aiSummary ? ' — ' + c.aiSummary : ''}`).join('\n'); this.messages.update(msgs => [...msgs, { diff --git a/frontend/src/app/services/table-schema.service.ts b/frontend/src/app/services/table-schema.service.ts index 9529fe1f1..9ca9e9634 100644 --- a/frontend/src/app/services/table-schema.service.ts +++ b/frontend/src/app/services/table-schema.service.ts @@ -35,6 +35,7 @@ export interface SchemaChangeResponse { export interface SchemaChangeBatchResponse { batchId: string; changes: SchemaChangeResponse[]; + threadId?: string | null; } @Injectable({ @@ -43,8 +44,8 @@ export interface SchemaChangeBatchResponse { export class TableSchemaService { private _api = inject(ApiService); - async generateSchemaChange(connectionId: string, userPrompt: string): Promise { - return this._fetchOrThrow(`/table-schema/${connectionId}/generate`, { userPrompt }); + async generateSchemaChange(connectionId: string, userPrompt: string, threadId?: string): Promise { + return this._fetchOrThrow(`/table-schema/${connectionId}/generate`, { userPrompt, threadId }); } async approveBatch(batchId: string, confirmedDestructive?: boolean): Promise {