@mlagie/sql-connector 1.0.5-beta → 1.0.7-beta

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/index.js +14 -3
  2. package/package.json +1 -1
package/index.js CHANGED
@@ -337,19 +337,25 @@ class Model {
337
337
  const fieldType = getFieldType(field);
338
338
 
339
339
  if (field.type && typeof field == "object") {
340
- if (!sqlTypeMap[fieldType]) throw new Error(`Field ${fieldName} has unsupported type ${fieldType}.`);
341
-
340
+ // Si c'est un enum, ne pas vérifier sqlTypeMap
342
341
  let columnDefinition = "";
343
342
  if (Array.isArray(field.enum) && field.enum.length > 0) {
344
343
  const enumValues = field.enum.map(v => `'${v.replace(/'/g, "''")}'`).join(", ");
345
344
  columnDefinition = `${fieldName} ENUM(${enumValues})`;
346
345
  } else {
346
+ if (!sqlTypeMap[fieldType]) throw new Error(`Field ${fieldName} has unsupported type ${fieldType}.`);
347
347
  columnDefinition = `${fieldName} ${sqlTypeMap[fieldType]}${sqlTypeMap[fieldType] == "VARCHAR" || sqlTypeMap[fieldType] == "INT" ? `(${field.length > 0 ? field.length : lengthDefault})` : ""}`;
348
348
  }
349
349
 
350
350
  if (field.required) columnDefinition += ' NOT NULL';
351
351
  if (field.default !== undefined && field.default != null) columnDefinition += ` DEFAULT "${field.default}"`;
352
- if (field.default === null) columnDefinition += ` DEFAULT NULL`;
352
+ if (field.default === null) {
353
+ if (field.unique) {
354
+ columnDefinition += ` DEFAULT ${null}`;
355
+ } else {
356
+ columnDefinition += ` DEFAULT 'NULL'`;
357
+ }
358
+ }
353
359
  if (field.unique) columnDefinition += ' UNIQUE';
354
360
  if (field.auto_increment) columnDefinition += ' AUTO_INCREMENT';
355
361
  if (field.foreignKey) foreignKey.push(`FOREIGN KEY (${fieldName}) REFERENCES ${field.foreignKey}`);
@@ -358,6 +364,11 @@ class Model {
358
364
  return columnDefinition;
359
365
  }
360
366
 
367
+ if (Array.isArray(field.enum) && field.enum.length > 0) {
368
+ const enumValues = field.enum.map(v => `'${v.replace(/'/g, "''")}'`).join(", ");
369
+ return `${fieldName} ENUM(${enumValues})`;
370
+ }
371
+
361
372
  if (!sqlTypeMap[fieldType]) throw new Error(`Field ${fieldName} has unsupported type ${field}`);
362
373
 
363
374
  return `${fieldName} ${sqlTypeMap[fieldType] == "VARCHAR" ? `${sqlTypeMap[fieldType]}(${lengthDefault})` : sqlTypeMap[fieldType]}`;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mlagie/sql-connector",
3
- "version": "1.0.5-beta",
3
+ "version": "1.0.7-beta",
4
4
  "description": "Le module sql-connector permet de gérer les connexions à une base de données MySQL, de définir des schémas de tables, et d'interagir avec les données de manière simple et efficace.",
5
5
  "main": "index.js",
6
6
  "scripts": {