Files
klz-cables.com/.pnpm-store/v10/files/ae/f5bcd6b0da250f4153c261d10e22f9843220ec84142888e4bfffa9fe4234b512832826d1e6b4f9b39cb0f7fa51593d4d1627b9ec55593d3af7bde4e30c1a69
Marc Mintel 5397309103
Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 20s
Build & Deploy / 🧪 QA (push) Failing after 34s
Build & Deploy / 🏗️ Build (push) Has started running
Build & Deploy / 🚀 Deploy (push) Has been cancelled
Build & Deploy / 🧪 Smoke Test (push) Has been cancelled
Build & Deploy / ⚡ Lighthouse (push) Has been cancelled
Build & Deploy / 🔔 Notify (push) Has been cancelled
fix(products): fix breadcrumbs and product filtering (backport from main)
2026-02-24 16:04:21 +01:00

112 lines
3.9 KiB
Plaintext

export const columnToCodeConverter = ({ adapter, addImport, column, locales, tableKey })=>{
let columnBuilderFn = column.type;
const columnBuilderArgsArray = [];
let defaultStatement = null;
switch(column.type){
case 'boolean':
{
columnBuilderFn = 'integer';
columnBuilderArgsArray.push("mode: 'boolean'");
break;
}
case 'enum':
{
let options;
if ('locale' in column) {
if (!locales?.length) {
throw new Error('Locales must be defined for locale columns');
}
options = locales;
} else {
options = column.options;
}
columnBuilderFn = 'text';
columnBuilderArgsArray.push(`enum: [${options.map((locale)=>`'${locale}'`).join(', ')}]`);
break;
}
case 'geometry':
case 'jsonb':
{
columnBuilderFn = 'text';
columnBuilderArgsArray.push("mode: 'json'");
break;
}
case 'numeric':
{
columnBuilderArgsArray.push("mode: 'number'");
break;
}
case 'serial':
{
columnBuilderFn = 'integer';
break;
}
case 'timestamp':
{
columnBuilderFn = 'text';
defaultStatement = `default(sql\`(strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))\`)`;
break;
}
case 'uuid':
{
columnBuilderFn = 'text';
if (column.defaultRandom) {
addImport('crypto', 'randomUUID');
defaultStatement = `$defaultFn(() => randomUUID())`;
}
break;
}
case 'varchar':
{
columnBuilderFn = 'text';
break;
}
default:
{
columnBuilderFn = column.type;
}
}
addImport(`${adapter.packageName}/drizzle/sqlite-core`, columnBuilderFn);
let columnBuilderArgs = '';
if (columnBuilderArgsArray.length) {
columnBuilderArgs = `, {${columnBuilderArgsArray.join(',')}}`;
}
let code = `${columnBuilderFn}('${column.name}'${columnBuilderArgs})`;
if (column.notNull) {
code = `${code}.notNull()`;
}
if (column.primaryKey) {
let arg = '';
if (column.type === 'integer' && column.autoIncrement) {
arg = `{ autoIncrement: true }`;
}
code = `${code}.primaryKey(${arg})`;
}
if (defaultStatement) {
code = `${code}.${defaultStatement}`;
} else if (typeof column.default !== 'undefined') {
let sanitizedDefault = column.default;
if (column.type === 'jsonb' || column.type === 'geometry') {
sanitizedDefault = `'${JSON.stringify(column.default)}'`;
} else if (typeof column.default === 'string') {
sanitizedDefault = JSON.stringify(column.default);
} else if (column.type === 'numeric') {
sanitizedDefault = `${column.default}`;
}
code = `${code}.default(${sanitizedDefault})`;
}
if (column.reference) {
let callback = `()`;
if (column.reference.table === tableKey) {
addImport(`${adapter.packageName}/drizzle/sqlite-core`, 'type AnySQLiteColumn');
callback = `${callback}: AnySQLiteColumn`;
}
callback = `${callback} => ${column.reference.table}.${column.reference.name}`;
code = `${code}.references(${callback}, {
${column.reference.onDelete ? `onDelete: '${column.reference.onDelete}'` : ''}
})`;
}
return code;
};
//# sourceMappingURL=columnToCodeConverter.js.map