fix(sqlserver): align insert hints with generated columns
This commit is contained in:
14 files changed
+341
-81
No files matched your search
@@ -151,6 +151,7 @@ export const listCompletionObjects = forward("listCompletionObjects");
|
||||
export const completionAssistantSearch = forward("completionAssistantSearch");
|
||||
export const getObjectSource = forward("getObjectSource");
|
||||
export const getColumns = forward("getColumns");
|
||||
export const getSqlServerColumnMetadata = forward("getSqlServerColumnMetadata");
|
||||
export const listDataTypes = forward("listDataTypes");
|
||||
export const listIndexes = forward("listIndexes");
|
||||
export const listForeignKeys = forward("listForeignKeys");
|
||||
|
||||
@@ -14,6 +14,7 @@ import type {
|
||||
ObjectSource,
|
||||
ObjectSourceKind,
|
||||
ColumnInfo,
|
||||
SqlServerColumnMetadata,
|
||||
IndexInfo,
|
||||
ForeignKeyInfo,
|
||||
TriggerInfo,
|
||||
@@ -640,6 +641,10 @@ export async function getColumns(connectionId: string, database: string, schema:
|
||||
return get(`/api/schema/columns?${qs({ connection_id: connectionId, database, schema, table, catalog })}`);
|
||||
}
|
||||
|
||||
export async function getSqlServerColumnMetadata(connectionId: string, database: string, schema: string, table: string): Promise<SqlServerColumnMetadata[]> {
|
||||
return get(`/api/schema/sqlserver/column-metadata?${qs({ connection_id: connectionId, database, schema, table })}`);
|
||||
}
|
||||
|
||||
export async function listDataTypes(connectionId: string, database: string): Promise<string[]> {
|
||||
return get(`/api/schema/data-types?${qs({ connection_id: connectionId, database })}`);
|
||||
}
|
||||
|
||||
@@ -17,6 +17,7 @@ import type {
|
||||
ObjectSource,
|
||||
ObjectSourceKind,
|
||||
ColumnInfo,
|
||||
SqlServerColumnMetadata,
|
||||
IndexInfo,
|
||||
ForeignKeyInfo,
|
||||
TriggerInfo,
|
||||
@@ -789,6 +790,10 @@ export async function getColumns(connectionId: string, database: string, schema:
|
||||
return invoke("get_columns", { connectionId, database, schema, table, catalog });
|
||||
}
|
||||
|
||||
export async function getSqlServerColumnMetadata(connectionId: string, database: string, schema: string, table: string): Promise<SqlServerColumnMetadata[]> {
|
||||
return invoke("get_sqlserver_column_metadata", { connectionId, database, schema, table });
|
||||
}
|
||||
|
||||
export async function listDataTypes(connectionId: string, database: string): Promise<string[]> {
|
||||
return invoke("list_data_types", { connectionId, database });
|
||||
}
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
import type { DatabaseType, SqlServerColumnMetadata } from "@/types/database";
|
||||
|
||||
type InsertValueHintColumn = Pick<SqlServerColumnMetadata, "name"> & Partial<Pick<SqlServerColumnMetadata, "is_identity" | "is_computed" | "is_hidden" | "generated_always_type">>;
|
||||
|
||||
export function insertValueHintColumnNames(databaseType: DatabaseType | undefined, columns: readonly InsertValueHintColumn[]): string[] {
|
||||
return columns
|
||||
.filter((column) => {
|
||||
if (databaseType !== "sqlserver") return true;
|
||||
// SQL Server reports computed and temporal period columns independently;
|
||||
// check every structured flag so positional VALUES only maps writable columns.
|
||||
return !column.is_identity && !column.is_computed && !column.is_hidden && (column.generated_always_type ?? 0) === 0;
|
||||
})
|
||||
.map((column) => column.name);
|
||||
}
|
||||
Reference in new issue
Block a user