Grok 5 updates
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
import type {
|
||||
BUN_MARIADB_TableSchemaType,
|
||||
BunMariaDBConfig,
|
||||
} from "../../types";
|
||||
import buildColumnDefinition from "./build-column-definition";
|
||||
import buildForeignKeyConstraint from "./build-foreign-key-constraint";
|
||||
import buildTableOptions from "./build-table-options";
|
||||
import MariaDBQuoteGen from "./mariadb-quote-gen";
|
||||
import runSchemaQuery from "./run-schema-query";
|
||||
|
||||
export default async function createTable({
|
||||
table,
|
||||
config,
|
||||
}: {
|
||||
table: BUN_MARIADB_TableSchemaType;
|
||||
config?: BunMariaDBConfig;
|
||||
}): Promise<void> {
|
||||
if (!table.tableName.match(/_temp_\d+$/)) {
|
||||
console.log(`Creating table: ${table.tableName}`);
|
||||
}
|
||||
|
||||
const columnDefinitions: string[] = [];
|
||||
const foreignKeys: string[] = [];
|
||||
const primaryKeys: string[] = [];
|
||||
|
||||
for (const field of table.fields || []) {
|
||||
columnDefinitions.push(buildColumnDefinition(field));
|
||||
|
||||
if (field.primaryKey && field.fieldName) {
|
||||
primaryKeys.push(field.fieldName);
|
||||
}
|
||||
|
||||
if (field.foreignKey && !table.isVector) {
|
||||
foreignKeys.push(buildForeignKeyConstraint(field));
|
||||
}
|
||||
}
|
||||
|
||||
if (primaryKeys.length > 0) {
|
||||
const pkCols = primaryKeys.map((k) => MariaDBQuoteGen(k)).join(", ");
|
||||
columnDefinitions.push(`PRIMARY KEY (${pkCols})`);
|
||||
}
|
||||
|
||||
if (table.uniqueConstraints) {
|
||||
for (const constraint of table.uniqueConstraints) {
|
||||
if (
|
||||
constraint.constraintTableFields &&
|
||||
constraint.constraintTableFields.length > 0
|
||||
) {
|
||||
const fields = constraint.constraintTableFields
|
||||
.map((field) => MariaDBQuoteGen(field.value))
|
||||
.join(", ");
|
||||
const constraintName =
|
||||
constraint.constraintName ||
|
||||
`unique_${fields.replace(/`/g, "")}`;
|
||||
|
||||
columnDefinitions.push(
|
||||
`CONSTRAINT ${MariaDBQuoteGen(constraintName)} UNIQUE (${fields})`,
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const sql = `CREATE TABLE IF NOT EXISTS ${MariaDBQuoteGen(table.tableName)} (${[...columnDefinitions, ...foreignKeys].join(", ")})${buildTableOptions(table)}`;
|
||||
|
||||
await runSchemaQuery({ query: sql, config });
|
||||
}
|
||||
Reference in New Issue
Block a user