This commit is contained in:
2026-07-30 07:19:07 +01:00
parent 246c42a214
commit 0420d50f15
43 changed files with 1942 additions and 219 deletions
+21 -1
View File
@@ -3,8 +3,14 @@ import isVectorField from "./is-vector-field";
import mapDataType from "./map-data-types";
import MariaDBQuoteGen from "./mariadb-quote-gen";
export type BuildColumnDefinitionOptions = {
/** UNIQUE is managed by syncUniqueConstraints on existing tables */
omitUnique?: boolean;
};
export default function buildColumnDefinition(
field: BUN_MARIADB_FieldSchemaType,
options: BuildColumnDefinitionOptions = {},
): string {
if (!field.fieldName) {
throw new Error("Field name is required");
@@ -29,7 +35,12 @@ export default function buildColumnDefinition(
}
// VECTOR columns cannot be UNIQUE in the usual sense
if (field.unique && !field.primaryKey && !isVectorField(field)) {
if (
!options.omitUnique &&
field.unique &&
!field.primaryKey &&
!isVectorField(field)
) {
parts.push("UNIQUE");
}
@@ -51,3 +62,12 @@ export default function buildColumnDefinition(
return parts.join(" ");
}
/** Whether schema field requires NOT NULL */
export function fieldRequiresNotNull(
field: BUN_MARIADB_FieldSchemaType,
): boolean {
return Boolean(
field.notNullValue || field.primaryKey || isVectorField(field),
);
}